Java tutorial
/* * SpawnChecker. * * (c) 2014 alalwww * https://github.com/alalwww * * This mod is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. * Please check the contents of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt * * ?? MOD ??Minecraft Mod Public License (MMPL) 1.0 ??????????? * ??????????? http://www.mod-buildcraft.com/MMPL-1.0.txt */ package net.awairo.mcmod.spawnchecker.presetmode.spawncheck; import java.util.ArrayList; import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.world.World; import net.awairo.mcmod.spawnchecker.client.common.ConstantsConfig; import net.awairo.mcmod.spawnchecker.client.common.OptionSet; import net.awairo.mcmod.spawnchecker.client.marker.CachedSupplier; import net.awairo.mcmod.spawnchecker.client.mode.Mode; import net.awairo.mcmod.spawnchecker.client.mode.core.ModeBase; import net.awairo.mcmod.spawnchecker.presetmode.Options; import net.awairo.mcmod.spawnchecker.presetmode.spawncheck.measuremententity.MeasurementEntities; import net.awairo.mcmod.spawnchecker.presetmode.spawnchecker.SpawnPointMarker; /** * ???. * * @author alalwww */ public abstract class SkeletalWorldSpawnCheck implements WorldSpawnCheck { protected final Minecraft game = Minecraft.getMinecraft(); protected final ConstantsConfig consts = ConstantsConfig.instance(); /** ???????. */ protected final ModeBase<?> mode; /** ???????. */ protected final CopiedLogics copiedLogics = CopiedLogics.INSTANCE; /** ??. */ protected final MeasurementEntities measureEntities = MeasurementEntities.INSTANCE; /** . */ public Mode.CommonColor color; /** :. */ public boolean disabled; /** ????. */ protected int computedBrightness; /** ?. */ public final CachedSupplier<SpawnPointMarker> cache; /** ??????. */ public final ArrayList<SpawnPointMarker> markers; /** ???. */ private World currentWorld; /** * Constructor. */ protected SkeletalWorldSpawnCheck(ModeBase<?> mode) { this.mode = mode; color = mode.commonColor(); cache = CachedSupplier.of(SpawnPointMarker.supplier()); markers = Lists.newArrayListWithExpectedSize(consts.defaultSpawnCheckerMarkerListSize); currentWorld = game.theWorld; } /** * ?????. */ protected void setOptionSet(OptionSet options) { disabled = options.contains(Options.DISABLED); } @Override public boolean enable() { // ????????? return !disabled; } @Override public Iterable<SpawnPointMarker> markers() { return markers; } @Override public void setBrightness(int brightness) { computedBrightness = brightness; } @Override public void reset(OptionSet options) { cache.recycle(); markers.clear(); // TODO: ?? ??stop/start??? if (currentWorld != game.theWorld) { currentWorld = game.theWorld; cache.clearAll(); markers.ensureCapacity(consts.defaultSpawnCheckerMarkerListSize); } setOptionSet(options); } }