net.awairo.mcmod.spawnchecker.presetmode.spawncheck.SkeletalWorldSpawnCheck.java Source code

Java tutorial

Introduction

Here is the source code for net.awairo.mcmod.spawnchecker.presetmode.spawncheck.SkeletalWorldSpawnCheck.java

Source

/*
 * 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);
    }
}