Backport disk drive fix

This commit is contained in:
Raoul Van den Berge
2016-10-09 16:03:00 +02:00
parent 853116c1d8
commit fab1b00dea
8 changed files with 6 additions and 217 deletions

View File

@@ -3,6 +3,9 @@
### 1.2
- Fixed resetting a stack of patterns yields 1 blank pattern (raoulvdberge)
### 1.1.3
- Fixed some clients not starting up due to too many Disk Drive model permutations (raoulvdberge)
### 1.1.2
- Added recipe transfer handler for Solderer (way2muchnoise)
- It is now possible to start a crafting task even if the crafting preview says you can't (raoulvdberge)

View File

@@ -1,8 +1,5 @@
package refinedstorage.block;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -10,24 +7,12 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import refinedstorage.RS;
import refinedstorage.RSGui;
import refinedstorage.tile.TileDiskDrive;
public class BlockDiskDrive extends BlockNode {
private static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7);
private static final PropertyBool FILLED_0 = PropertyBool.create("filled_0");
private static final PropertyBool FILLED_1 = PropertyBool.create("filled_1");
private static final PropertyBool FILLED_2 = PropertyBool.create("filled_2");
private static final PropertyBool FILLED_3 = PropertyBool.create("filled_3");
private static final PropertyBool FILLED_4 = PropertyBool.create("filled_4");
private static final PropertyBool FILLED_5 = PropertyBool.create("filled_5");
private static final PropertyBool FILLED_6 = PropertyBool.create("filled_6");
private static final PropertyBool FILLED_7 = PropertyBool.create("filled_7");
public BlockDiskDrive() {
super("disk_drive");
}
@@ -37,39 +22,6 @@ public class BlockDiskDrive extends BlockNode {
return new TileDiskDrive();
}
@Override
public BlockStateContainer createBlockState() {
return createBlockStateBuilder()
.add(STORED)
.add(FILLED_0)
.add(FILLED_1)
.add(FILLED_2)
.add(FILLED_3)
.add(FILLED_4)
.add(FILLED_5)
.add(FILLED_6)
.add(FILLED_7)
.build();
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
TileDiskDrive diskDrive = (TileDiskDrive) world.getTileEntity(pos);
state = super.getActualState(state, world, pos);
state = state.withProperty(STORED, Math.max(0, diskDrive.getStoredForDisplay()));
state = state.withProperty(FILLED_0, diskDrive.getFilled()[0]);
state = state.withProperty(FILLED_1, diskDrive.getFilled()[1]);
state = state.withProperty(FILLED_2, diskDrive.getFilled()[2]);
state = state.withProperty(FILLED_3, diskDrive.getFilled()[3]);
state = state.withProperty(FILLED_4, diskDrive.getFilled()[4]);
state = state.withProperty(FILLED_5, diskDrive.getFilled()[5]);
state = state.withProperty(FILLED_6, diskDrive.getFilled()[6]);
state = state.withProperty(FILLED_7, diskDrive.getFilled()[7]);
return state;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {

View File

@@ -84,9 +84,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_STORED = "Stored";
private static final String NBT_TYPE = "Type";
private static final String NBT_FILLED = "Filled_%d";
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.STORAGE_DISK) {
@Override
@@ -94,7 +92,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
super.onContentsChanged(slot);
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
RSUtils.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages, s -> new ItemStorage(s), s -> new FluidStorage(s));
RSUtils.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages, ItemStorage::new, FluidStorage::new);
if (network != null) {
network.getItemStorage().rebuild();
@@ -132,9 +130,6 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
private int mode = IFilterable.WHITELIST;
private int type = IType.ITEMS;
private int stored = 0;
private boolean[] filled = new boolean[8];
public TileDiskDrive() {
dataManager.addWatchedParameter(PRIORITY);
dataManager.addWatchedParameter(COMPARE);
@@ -142,19 +137,6 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
dataManager.addWatchedParameter(TYPE);
}
@Override
public void update() {
if (!worldObj.isRemote) {
if (stored != getStoredForDisplay()) {
stored = getStoredForDisplay();
updateBlock();
}
}
super.update();
}
@Override
public int getEnergyUsage() {
int usage = RS.INSTANCE.config.diskDriveUsage;
@@ -263,34 +245,6 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
return tag;
}
@Override
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
tag.setInteger(NBT_STORED, stored);
for (int i = 0; i < 8; ++i) {
tag.setBoolean(String.format(NBT_FILLED, i), disks.getStackInSlot(i) != null);
}
return tag;
}
@Override
public void readUpdate(NBTTagCompound tag) {
stored = tag.getInteger(NBT_STORED);
for (int i = 0; i < 8; ++i) {
filled[i] = tag.getBoolean(String.format(NBT_FILLED, i));
}
super.readUpdate(tag);
}
public boolean[] getFilled() {
return filled;
}
@Override
public int getCompare() {
return compare;
@@ -315,36 +269,6 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
markDirty();
}
public int getStoredForDisplay() {
if (!worldObj.isRemote) {
float stored = 0;
float capacity = 0;
for (int i = 0; i < disks.getSlots(); ++i) {
ItemStack disk = disks.getStackInSlot(i);
if (disk != null) {
int diskCapacity = disk.getItem() == RSItems.STORAGE_DISK ? EnumItemStorageType.getById(disk.getItemDamage()).getCapacity() : EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity();
if (diskCapacity == -1) {
return 0;
}
stored += disk.getItem() == RSItems.STORAGE_DISK ? ItemStorageNBT.getStoredFromNBT(disk.getTagCompound()) : FluidStorageNBT.getStoredFromNBT(disk.getTagCompound());
capacity += diskCapacity;
}
}
if (capacity == 0) {
return 0;
}
return (int) Math.floor((stored / capacity) * 7F);
}
return stored;
}
@Override
public String getGuiTitle() {
return "block.refinedstorage:disk_drive.name";

View File

@@ -3,10 +3,10 @@
"defaults": {
"model": "cube",
"textures": {
"particle": "refinedstorage:blocks/disk_drive_0",
"particle": "refinedstorage:blocks/disk_drive",
"down": "refinedstorage:blocks/disk_drive_bottom",
"up": "refinedstorage:blocks/disk_drive_top",
"north": "refinedstorage:blocks/disk_drive_0",
"north": "refinedstorage:blocks/disk_drive",
"east": "refinedstorage:blocks/disk_drive_side",
"south": "refinedstorage:blocks/disk_drive_side",
"west": "refinedstorage:blocks/disk_drive_side"
@@ -18,96 +18,6 @@
"y": 0
}
],
"filled_0": {
"true": {
},
"false": {
}
},
"filled_1": {
"true": {
},
"false": {
}
},
"filled_2": {
"true": {
},
"false": {
}
},
"filled_3": {
"true": {
},
"false": {
}
},
"filled_4": {
"true": {
},
"false": {
}
},
"filled_5": {
"true": {
},
"false": {
}
},
"filled_6": {
"true": {
},
"false": {
}
},
"filled_7": {
"true": {
},
"false": {
}
},
"stored": {
"0": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"1": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"2": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"3": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"4": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"5": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"6": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
},
"7": {
"textures": {
"north": "refinedstorage:blocks/disk_drive_0"
}
}
},
"direction": {
"north": {
"y": 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB