More fixes.

This commit is contained in:
Raoul Van den Berge
2016-10-11 00:11:09 +02:00
parent 2aab253a68
commit 4e209b04eb
9 changed files with 65 additions and 47 deletions

View File

@@ -1,36 +1,32 @@
package refinedstorage.gui.sidebutton; package refinedstorage.gui.sidebutton;
import refinedstorage.RSUtils;
import refinedstorage.api.storage.AccessType;
import refinedstorage.gui.GuiBase; import refinedstorage.gui.GuiBase;
import refinedstorage.tile.config.IAccessType;
import refinedstorage.tile.data.TileDataManager; import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.data.TileDataParameter; import refinedstorage.tile.data.TileDataParameter;
public class SideButtonAccessType extends SideButton { public class SideButtonAccessType extends SideButton {
private TileDataParameter<Integer> parameter; private TileDataParameter<AccessType> parameter;
public SideButtonAccessType(GuiBase gui, TileDataParameter<Integer> parameter) { public SideButtonAccessType(GuiBase gui, TileDataParameter<AccessType> parameter) {
super(gui); super(gui);
this.parameter = parameter; this.parameter = parameter;
} }
@Override
protected void drawButtonIcon(int x, int y) { protected void drawButtonIcon(int x, int y) {
//TODO // @TODO
} }
@Override
public String getTooltip() { public String getTooltip() {
switch (parameter.getValue()) { return gui.t("sidebutton.refinedstorage:access_type." + parameter.getValue().getId());
case IAccessType.READ:
return gui.t("sidebutton.refinedstorage:access_type.read");
case IAccessType.WRITE:
return gui.t("sidebutton.refinedstorage:access_type.write");
default:
case IAccessType.READ_WRITE:
return gui.t("sidebutton.refinedstorage:access_type.read_write");
}
} }
@Override
public void actionPerformed() { public void actionPerformed() {
TileDataManager.setParameter(parameter, ((parameter.getValue() + 1 > IAccessType.READ_WRITE) ? IAccessType.READ : parameter.getValue() + 1)); TileDataManager.setParameter(parameter, RSUtils.getAccessType(parameter.getValue().getId() + 1));
} }
} }

View File

@@ -1,5 +1,6 @@
package refinedstorage.tile; package refinedstorage.tile;
import refinedstorage.api.storage.AccessType;
import refinedstorage.tile.data.TileDataParameter; import refinedstorage.tile.data.TileDataParameter;
public interface IStorageGui { public interface IStorageGui {
@@ -15,9 +16,9 @@ public interface IStorageGui {
TileDataParameter<Integer> getPriorityParameter(); TileDataParameter<Integer> getPriorityParameter();
TileDataParameter<Boolean> getVoidExcessParameter(); TileDataParameter<AccessType> getAccessTypeParameter();
TileDataParameter<Integer> getAccessTypeParameter(); TileDataParameter<Boolean> getVoidExcessParameter();
String getVoidExcessType(); String getVoidExcessType();

View File

@@ -38,7 +38,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter(); public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> TYPE = IType.createParameter(); public static final TileDataParameter<Integer> TYPE = IType.createParameter();
public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter(); public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter();
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public class ItemStorage extends ItemStorageNBT { public class ItemStorage extends ItemStorageNBT {
public ItemStorage(ItemStack disk) { public ItemStorage(ItemStack disk) {
@@ -342,7 +342,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
} }
@Override @Override
public TileDataParameter<Integer> getAccessTypeParameter() { public TileDataParameter<AccessType> getAccessTypeParameter() {
return ACCESS_TYPE; return ACCESS_TYPE;
} }
@@ -360,8 +360,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
public void setAccessType(AccessType value) { public void setAccessType(AccessType value) {
this.accessType = value; this.accessType = value;
network.getFluidStorageCache().invalidate(); if (network != null) {
network.getItemStorageCache().invalidate(); network.getFluidStorageCache().invalidate();
network.getItemStorageCache().invalidate();
}
markDirty(); markDirty();
} }

View File

@@ -26,7 +26,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter(); public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter(); public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter(); public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileFluidStorage>() { public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileFluidStorage>() {
@Override @Override
public Integer getValue(TileFluidStorage tile) { public Integer getValue(TileFluidStorage tile) {
@@ -257,7 +257,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
} }
@Override @Override
public TileDataParameter<Integer> getAccessTypeParameter() { public TileDataParameter<AccessType> getAccessTypeParameter() {
return ACCESS_TYPE; return ACCESS_TYPE;
} }
@@ -291,7 +291,9 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
public void setAccessType(AccessType value) { public void setAccessType(AccessType value) {
this.accessType = value; this.accessType = value;
network.getFluidStorageCache().invalidate(); if (network != null) {
network.getFluidStorageCache().invalidate();
}
markDirty(); markDirty();
} }

View File

@@ -26,7 +26,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter(); public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter(); public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileStorage>() { public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileStorage>() {
@Override @Override
public Integer getValue(TileStorage tile) { public Integer getValue(TileStorage tile) {
@@ -270,7 +270,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
} }
@Override @Override
public TileDataParameter<Integer> getAccessTypeParameter() { public TileDataParameter<AccessType> getAccessTypeParameter() {
return ACCESS_TYPE; return ACCESS_TYPE;
} }
@@ -304,7 +304,9 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
public void setAccessType(AccessType value) { public void setAccessType(AccessType value) {
this.accessType = value; this.accessType = value;
network.getItemStorageCache().invalidate(); if (network != null) {
network.getItemStorageCache().invalidate();
}
markDirty(); markDirty();
} }

View File

@@ -1,29 +1,23 @@
package refinedstorage.tile.config; package refinedstorage.tile.config;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import refinedstorage.RSUtils;
import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.AccessType;
import refinedstorage.tile.data.ITileDataConsumer; import refinedstorage.tile.data.ITileDataConsumer;
import refinedstorage.tile.data.ITileDataProducer; import refinedstorage.tile.data.ITileDataProducer;
import refinedstorage.tile.data.RSSerializers;
import refinedstorage.tile.data.TileDataParameter; import refinedstorage.tile.data.TileDataParameter;
public interface IAccessType { public interface IAccessType {
int READ = 0; static <T extends TileEntity> TileDataParameter<AccessType> createParameter() {
int WRITE = 1; return new TileDataParameter<>(RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.READ_WRITE, new ITileDataProducer<AccessType, T>() {
int READ_WRITE = 2;
static <T extends TileEntity> TileDataParameter<Integer> createParameter() {
return new TileDataParameter<>(DataSerializers.VARINT, READ_WRITE, new ITileDataProducer<Integer, T>() {
@Override @Override
public Integer getValue(T tile) { public AccessType getValue(T tile) {
return ((IAccessType) tile).getAccessType().getId(); return ((IAccessType) tile).getAccessType();
} }
}, new ITileDataConsumer<Integer, T>() { }, new ITileDataConsumer<AccessType, T>() {
@Override @Override
public void setValue(T tile, Integer value) { public void setValue(T tile, AccessType value) {
((IAccessType) tile).setAccessType(RSUtils.getAccessType(value)); ((IAccessType) tile).setAccessType(value);
} }
}); });
} }

View File

@@ -7,7 +7,9 @@ import net.minecraft.network.datasync.DataSerializer;
import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.ByteBufUtils;
import refinedstorage.RSUtils;
import refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement; import refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
import refinedstorage.api.storage.AccessType;
import refinedstorage.apiimpl.API; import refinedstorage.apiimpl.API;
import refinedstorage.tile.ClientNode; import refinedstorage.tile.ClientNode;
@@ -114,4 +116,21 @@ public final class RSSerializers {
return null; return null;
} }
}; };
public static final DataSerializer<AccessType> ACCESS_TYPE_SERIALIZER = new DataSerializer<AccessType>() {
@Override
public void write(PacketBuffer buf, AccessType value) {
buf.writeInt(value.getId());
}
@Override
public AccessType read(PacketBuffer buf) throws IOException {
return RSUtils.getAccessType(buf.readInt());
}
@Override
public DataParameter<AccessType> createKey(int id) {
return null;
}
};
} }

View File

@@ -35,7 +35,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter(); public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter(); public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer> TYPE = IType.createParameter(); public static final TileDataParameter<Integer> TYPE = IType.createParameter();
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileExternalStorage>() { public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileExternalStorage>() {
@Override @Override
@@ -317,7 +317,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
} }
@Override @Override
public TileDataParameter<Integer> getAccessTypeParameter() { public TileDataParameter<AccessType> getAccessTypeParameter() {
return ACCESS_TYPE; return ACCESS_TYPE;
} }
@@ -345,8 +345,10 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
public void setAccessType(AccessType type) { public void setAccessType(AccessType type) {
this.accessType = type; this.accessType = type;
network.getItemStorageCache().invalidate(); if (network != null) {
network.getFluidStorageCache().invalidate(); network.getItemStorageCache().invalidate();
network.getFluidStorageCache().invalidate();
}
markDirty(); markDirty();
} }

View File

@@ -123,9 +123,9 @@ sidebutton.refinedstorage:void_excess.items_fluids=Void excess items and fluids
sidebutton.refinedstorage:constructor.drop=Drop blocks instead of placing sidebutton.refinedstorage:constructor.drop=Drop blocks instead of placing
sidebutton.refinedstorage:access_type.read=Read sidebutton.refinedstorage:access_type.0=Read and write
sidebutton.refinedstorage:access_type.write=Write sidebutton.refinedstorage:access_type.1=Read
sidebutton.refinedstorage:access_type.read_write=Read and write sidebutton.refinedstorage:access_type.2=Write
block.refinedstorage:controller.0.name=Controller block.refinedstorage:controller.0.name=Controller
block.refinedstorage:controller.1.name=Creative Controller block.refinedstorage:controller.1.name=Creative Controller