Generic safety

This commit is contained in:
Raoul Van den Berge
2016-08-05 16:47:34 +02:00
parent 7334bd7c42
commit 37cbdffb09
15 changed files with 39 additions and 40 deletions

View File

@@ -20,7 +20,7 @@ import refinedstorage.tile.config.IComparable;
import refinedstorage.tile.data.TileDataParameter;
public class TileConstructor extends TileNode implements IComparable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
private static final String NBT_COMPARE = "Compare";

View File

@@ -52,7 +52,7 @@ import refinedstorage.tile.externalstorage.ExternalStorage;
import java.util.*;
public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, IRedstoneConfigurable {
public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter();
public static final TileDataParameter<Integer> REDSTONE_MODE = RedstoneMode.createParameter();
public static final TileDataParameter<Integer> ENERGY_USAGE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileController>() {
@Override

View File

@@ -21,8 +21,8 @@ import refinedstorage.tile.data.TileDataParameter;
import java.util.List;
public class TileDestructor extends TileNode implements IComparable, IFilterable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";

View File

@@ -15,10 +15,13 @@ import refinedstorage.gui.GuiDetector;
import refinedstorage.inventory.ItemHandlerBasic;
import refinedstorage.tile.config.IComparable;
import refinedstorage.tile.config.RedstoneMode;
import refinedstorage.tile.data.*;
import refinedstorage.tile.data.ITileDataConsumer;
import refinedstorage.tile.data.ITileDataProducer;
import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.data.TileDataParameter;
public class TileDetector extends TileNode implements IComparable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileDetector>() {
@Override
@@ -48,9 +51,7 @@ public class TileDetector extends TileNode implements IComparable {
tile.markDirty();
}
}, new ITileDataListener<Integer>() {
@Override
public void onChanged(TileDataParameter<Integer> parameter) {
}, parameter -> {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
GuiScreen gui = Minecraft.getMinecraft().currentScreen;
@@ -58,7 +59,6 @@ public class TileDetector extends TileNode implements IComparable {
((GuiDetector) gui).AMOUNT.setText(String.valueOf(parameter.getValue()));
}
}
}
});
private static final int SPEED = 5;

View File

@@ -26,9 +26,9 @@ import refinedstorage.tile.data.TileDataParameter;
import java.util.List;
public class TileDiskDrive extends TileNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
public static final TileDataParameter PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public class Storage extends NBTStorage {
public Storage(ItemStack disk) {

View File

@@ -16,7 +16,7 @@ import refinedstorage.tile.config.IComparable;
import refinedstorage.tile.data.TileDataParameter;
public class TileExporter extends TileNode implements IComparable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
private static final String NBT_COMPARE = "Compare";

View File

@@ -15,8 +15,8 @@ import refinedstorage.tile.config.IFilterable;
import refinedstorage.tile.data.TileDataParameter;
public class TileImporter extends TileNode implements IComparable, IFilterable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";

View File

@@ -15,7 +15,7 @@ import refinedstorage.tile.config.IComparable;
import refinedstorage.tile.data.TileDataParameter;
public class TileInterface extends TileNode implements IComparable {
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
private static final String NBT_COMPARE = "Compare";

View File

@@ -24,10 +24,10 @@ import refinedstorage.tile.data.TileDataParameter;
import java.util.List;
public class TileStorage extends TileNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
public static final TileDataParameter PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter COMPARE = IComparable.createParameter();
public static final TileDataParameter MODE = IFilterable.createParameter();
public static final TileDataParameter STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileStorage>() {
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileStorage>() {
@Override
public Integer getValue(TileStorage tile) {
return NBTStorage.getStoredFromNBT(tile.storageTag);

View File

@@ -8,7 +8,7 @@ import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.data.TileDataParameter;
public interface IComparable {
static <T extends TileEntity> TileDataParameter createParameter() {
static <T extends TileEntity> TileDataParameter<Integer> createParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {

View File

@@ -14,7 +14,7 @@ public interface IFilterable {
int WHITELIST = 0;
int BLACKLIST = 1;
static <T extends TileEntity> TileDataParameter createParameter() {
static <T extends TileEntity> TileDataParameter<Integer> createParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {

View File

@@ -31,7 +31,7 @@ public enum RedstoneMode {
return id < 0 || id >= values().length ? IGNORE : values()[id];
}
public static <T extends TileEntity> TileDataParameter createParameter() {
public static <T extends TileEntity> TileDataParameter<Integer> createParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {

View File

@@ -24,16 +24,16 @@ public class TileDataManager {
private List<TileDataParameter> watchedParameters = new ArrayList<TileDataParameter>();
private List<Object> watchedParametersCache = new ArrayList<Object>();
public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer) {
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer) {
return createParameter(serializer, producer, null);
}
public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer) {
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer) {
return createParameter(serializer, producer, consumer, null);
}
public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener listener) {
TileDataParameter parameter = new TileDataParameter(PARAMETER_ID++, serializer, producer, consumer, listener);
public static <T> TileDataParameter<T> createParameter(DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer, ITileDataListener<T> listener) {
TileDataParameter<T> parameter = new TileDataParameter<>(PARAMETER_ID++, serializer, producer, consumer, listener);
PARAMETER_MAP.put(parameter.getId(), parameter);

View File

@@ -2,7 +2,6 @@ package refinedstorage.tile.data;
import net.minecraft.network.datasync.DataSerializer;
// @TODO: Annotate me better!
public class TileDataParameter<T> {
private int id;
private DataSerializer<T> serializer;

View File

@@ -29,7 +29,10 @@ import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
import refinedstorage.inventory.ItemValidatorBasic;
import refinedstorage.item.ItemPattern;
import refinedstorage.tile.TileNode;
import refinedstorage.tile.data.*;
import refinedstorage.tile.data.ITileDataConsumer;
import refinedstorage.tile.data.ITileDataProducer;
import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.data.TileDataParameter;
import java.util.ArrayList;
import java.util.List;
@@ -97,13 +100,10 @@ public class TileGrid extends TileNode implements IGrid {
tile.markDirty();
}
}
}, new ITileDataListener<Integer>() {
@Override
public void onChanged(TileDataParameter<Integer> parameter) {
}, parameter -> {
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
GuiGrid.updateSearchFieldFocus(parameter.getValue());
}
}
});
public static final String NBT_VIEW_TYPE = "ViewType";