1
0
Fork 0

device fixes, prepare for pipes

This commit is contained in:
Sen 2025-08-12 00:45:13 +02:00
parent 08acee12b7
commit 43b097eac3
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
93 changed files with 716 additions and 2628 deletions

View file

@ -25,7 +25,7 @@ public class CommandItem extends Command {
}
});
this.setParamsOptional();
this.addInt("amount", 1, ItemStack.MAX_SIZE, 1);
this.addInt("amount", 1, 100000000, 1);
this.addTag("tag", 't');
this.setParamsRequired();
this.addPlayerEntityList("players", 'p', true, UserPolicy.NON_ADMINS_OR_SELF);

View file

@ -106,7 +106,6 @@ import common.packet.SPacketMessage.Type;
import common.tags.TagObject;
import common.tileentity.TileEntity;
import common.tileentity.TileEntityChest;
import common.tileentity.TileEntityInventory;
import common.tileentity.Device;
import common.tileentity.TileEntitySign;
import common.util.BlockPos;
@ -735,20 +734,9 @@ public class Player extends User implements Executor, IPlayer
}
else if (object instanceof TileEntityChest chest)
{
if (chest.getLockCode() != null && !this.entity.canOpen(chest.getLockCode()))
{
this.addHotbar(Color.RED + "%s ist verschlossen!", chest.getName());
this.sendPacket(new SPacketSoundEffect(SoundEvent.DOOR, this.entity.posX, this.entity.posY, this.entity.posZ, 1.0F));
return;
}
this.sendPacket(new SPacketOpenWindow(this.getNextWindowId(), chest.getBlockType(), chest.getSizeInventory()));
this.entity.openContainer = new ContainerChest(this.entity, chest);
}
else if (object instanceof TileEntityInventory tile)
{
this.sendPacket(new SPacketOpenWindow(this.getNextWindowId(), tile.getBlockType(), tile.getSizeInventory()));
this.entity.openContainer = tile.createContainer(this.entity);
}
else if (object instanceof InteractionObject obj)
{
this.sendPacket(new SPacketOpenWindow(this.getNextWindowId(), obj.getBlock(), 0));
@ -868,14 +856,6 @@ public class Player extends User implements Executor, IPlayer
{
this.sendPacket(new SPacketWindowProperty(container.windowId, variable, value));
}
public void sendProperties(Container container, IInventory inventory)
{
for (int z = 0; z < inventory.getFieldCount(); z++)
{
this.sendPacket(new SPacketWindowProperty(container.windowId, z, inventory.getField(z)));
}
}
@ -2959,14 +2939,14 @@ public class Player extends User implements Executor, IPlayer
Slot slot = packet.getSlot() < 0 ? this.entity.inventoryContainer.getSlot(5 + Equipment.ARMOR_SLOTS + 27 + -2 - packet.getSlot()) : this.entity.openContainer.getSlot(packet.getSlot());
if(slot == null || !slot.canCheatItem())
return;
stack.setSize(Math.min(slot.getSlotStackLimit(), stack.getSize()));
stack.setSize(Math.min(slot.getItemStackLimit(stack), stack.getSize()));
amount = stack.getSize();
if(amount <= 0)
return;
if(slot.getHasStack()) {
ItemStack old = slot.getStack();
if(ItemStack.itemEquals(stack, old) && ItemStack.dataEquals(stack, old)) {
stack.setSize(Math.min(slot.getSlotStackLimit(), Math.min(stack.getMaxStackSize(), old.getSize() + stack.getSize())));
stack.setSize(Math.min(slot.getItemStackLimit(stack), Math.min(stack.getMaxStackSize(), old.getSize() + stack.getSize())));
amount = stack.getSize() - old.getSize();
if(amount <= 0 || !slot.isItemValid(stack))
return;

View file

@ -57,11 +57,6 @@ import common.block.natural.BlockSnow;
import common.block.tech.BlockAnvil;
import common.block.tech.BlockButton;
import common.block.tech.BlockCauldron;
import common.block.tech.BlockChest;
import common.block.tech.BlockDispenser;
import common.block.tech.BlockDropper;
import common.block.tech.BlockFurnace;
import common.block.tech.BlockHopper;
import common.block.tech.BlockLever;
import common.block.tech.BlockLever.EnumOrientation;
import common.block.tech.BlockPistonBase;
@ -76,34 +71,13 @@ import common.block.tech.BlockTNT;
import common.block.tech.BlockString;
import common.block.tech.BlockHook;
import common.block.tech.BlockWallSign;
import common.block.tech.BlockWarpChest;
import common.collect.Lists;
import common.collect.Maps;
import common.entity.Entity;
import common.entity.animal.EntityBat;
import common.entity.animal.EntityChicken;
import common.entity.animal.EntityCow;
import common.entity.animal.EntityHorse;
import common.entity.animal.EntityCat;
import common.entity.animal.EntityPig;
import common.entity.animal.EntityRabbit;
import common.entity.animal.EntitySheep;
import common.entity.animal.EntityWolf;
import common.entity.item.EntityBoat;
import common.entity.item.EntityMinecart;
import common.init.BlockRegistry;
import common.init.Blocks;
import common.init.EntityRegistry;
import common.log.Log;
import common.rng.Random;
import common.tags.TagObject;
import common.tileentity.TileEntity;
import common.tileentity.TileEntityChest;
import common.tileentity.TileEntityDispenser;
import common.tileentity.TileEntityDropper;
import common.tileentity.DeviceFurnace;
import common.tileentity.TileEntityHopper;
import common.tileentity.TileEntitySign;
import common.util.BlockPos;
import common.util.Facing;
import common.util.Facing.Axis;
@ -120,14 +94,6 @@ public abstract class Converter {
return tag != null && tag.getClass() == type;
}
private List<?> getList(String key, Class<?> type) {
Object tag = this.map.get(key);
if(!(tag instanceof List))
return Lists.newArrayList();
List<?> list = (List<?>)tag;
return !list.isEmpty() && list.get(0).getClass() != type ? Lists.newArrayList() : list;
}
public byte getByte(String key) {
return !this.has(key, Byte.class) ? 0 : (Byte)this.map.get(key);
}
@ -152,26 +118,13 @@ public abstract class Converter {
return !this.has(key, NbtTag.class) ? new NbtTag() : (NbtTag)this.map.get(key);
}
public float[] getFloatList(String key) {
List<?> list = this.getList(key, Float.class);
float[] values = new float[list.size()];
for(int z = 0; z < values.length; z++) {
values[z] = (Float)list.get(z);
}
return values;
}
public double[] getDoubleList(String key) {
List<?> list = this.getList(key, Double.class);
double[] values = new double[list.size()];
for(int z = 0; z < values.length; z++) {
values[z] = (Double)list.get(z);
}
return values;
}
public NbtTag[] getTagList(String key) {
List<?> list = this.getList(key, NbtTag.class);
Object tag = this.map.get(key);
if(!(tag instanceof List))
return new NbtTag[0];
List<?> list = (List<?>)tag;
if(!list.isEmpty() && list.get(0).getClass() != NbtTag.class)
return new NbtTag[0];
NbtTag[] values = new NbtTag[list.size()];
for(int z = 0; z < values.length; z++) {
values[z] = (NbtTag)list.get(z);
@ -287,27 +240,12 @@ public abstract class Converter {
}
private static final Random RANDOM = new Random();
private static final Map<String, String> ENTITY_MAP = Maps.newHashMap();
private static final Map<String, Class<? extends TileEntity>> TILE_MAP = Maps.newHashMap();
private static final State[] BLOCK_MAP = new State[65536];
private static final Color[] COLOR_LOOKUP = new Color[] {
Color.WHITE, Color.ORANGE, Color.MAGENTA, Color.LIGHT_BLUE, Color.YELLOW, Color.GREEN, Color.MAGENTA, Color.GRAY,
Color.LIGHT_GRAY, Color.CYAN, Color.VIOLET, Color.BLUE, Color.BROWN, Color.DARK_GREEN, Color.RED, Color.BLACK
};
private static void mapEntity(Class<? extends Entity> clazz, String ... names) {
String name = EntityRegistry.getEntityString(clazz);
for(String oldname : names) {
ENTITY_MAP.put(oldname, name);
}
}
private static void mapTile(Class<? extends TileEntity> clazz, String ... names) {
for(String oldname : names) {
TILE_MAP.put(oldname, clazz);
}
}
private static void mapBlock(State state, int id, int data) {
BLOCK_MAP[(id << 4) | data] = state;
}
@ -339,25 +277,6 @@ public abstract class Converter {
}
static {
mapEntity(EntityBoat.class, "Boat", "boat");
mapEntity(EntityMinecart.class, "Minecart", "MinecartRideable", "minecart");
mapEntity(EntityBat.class, "Bat", "bat");
mapEntity(EntityPig.class, "Pig", "pig");
mapEntity(EntitySheep.class, "Sheep", "sheep");
mapEntity(EntityCow.class, "Cow", "cow", "MushroomCow", "mooshroom");
mapEntity(EntityChicken.class, "Chicken", "chicken");
mapEntity(EntityWolf.class, "Wolf", "wolf");
mapEntity(EntityCat.class, "Ozelot", "ocelot");
mapEntity(EntityHorse.class, "EntityHorse", "horse");
mapEntity(EntityRabbit.class, "Rabbit", "rabbit");
mapTile(DeviceFurnace.class, "Furnace", "furnace");
mapTile(TileEntityChest.class, "Chest", "chest");
mapTile(TileEntityDispenser.class, "Trap", "dispenser");
mapTile(TileEntityDropper.class, "Dropper", "dropper");
mapTile(TileEntitySign.class, "Sign", "sign");
mapTile(TileEntityHopper.class, "Hopper", "hopper");
Arrays.fill(BLOCK_MAP, Blocks.air.getState());
mapBlock(Blocks.stone, 1);
@ -459,18 +378,7 @@ public abstract class Converter {
mapBlock(Blocks.glass, 20);
mapBlock(Blocks.lapis_ore, 21);
mapBlock(Blocks.lapis_block, 22);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.DOWN), 23, 0, 6);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.UP), 23, 1, 7);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.NORTH), 23, 2);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.SOUTH), 23, 3);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.WEST), 23, 4);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.EAST), 23, 5);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.DOWN), 23, 8, 14);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.UP), 23, 9, 15);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.NORTH), 23, 10);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.SOUTH), 23, 11);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.WEST), 23, 12);
mapBlock(Blocks.dispenser.getState().withProperty(BlockDispenser.FACING, Facing.EAST), 23, 13);
mapBlock(Blocks.smooth_rock, 23);
mapBlock(Blocks.sandstone, 24);
mapBlock(Blocks.carved_sandstone, 24, 1);
mapBlock(Blocks.smooth_sandstone, 24, 2);
@ -654,10 +562,6 @@ public abstract class Converter {
mapBlock(Blocks.oak_stairs.getState().withProperty(BlockStairs.FACING, Facing.WEST).withProperty(BlockStairs.HALF, EnumHalf.TOP), 53, 5, 13);
mapBlock(Blocks.oak_stairs.getState().withProperty(BlockStairs.FACING, Facing.SOUTH).withProperty(BlockStairs.HALF, EnumHalf.TOP), 53, 6, 14);
mapBlock(Blocks.oak_stairs.getState().withProperty(BlockStairs.FACING, Facing.NORTH).withProperty(BlockStairs.HALF, EnumHalf.TOP), 53, 7, 15);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.NORTH), 54);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.SOUTH), 54, 3, 9, 15);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.WEST), 54, 4, 10);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.EAST), 54, 5, 11);
mapBlock(Blocks.diamond_ore, 56);
mapBlock(Blocks.diamond_block, 57);
mapBlock(Blocks.workbench, 58);
@ -677,14 +581,8 @@ public abstract class Converter {
mapBlock(Blocks.farmland.getState().withProperty(BlockFarmland.MOISTURE, 5), 60, 5, 13);
mapBlock(Blocks.farmland.getState().withProperty(BlockFarmland.MOISTURE, 6), 60, 6, 14);
mapBlock(Blocks.farmland.getState().withProperty(BlockFarmland.MOISTURE, 7), 60, 7, 15);
mapBlock(Blocks.stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.NORTH), 61);
mapBlock(Blocks.stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.SOUTH), 61, 3, 9, 15);
mapBlock(Blocks.stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.WEST), 61, 4, 10);
mapBlock(Blocks.stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.EAST), 61, 5, 11);
mapBlock(Blocks.lit_stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.NORTH), 62);
mapBlock(Blocks.lit_stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.SOUTH), 62, 3, 9, 15);
mapBlock(Blocks.lit_stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.WEST), 62, 4, 10);
mapBlock(Blocks.lit_stone_furnace.getState().withProperty(BlockFurnace.FACING, Facing.EAST), 62, 5, 11);
mapBlock(Blocks.smooth_rock, 61);
mapBlock(Blocks.smooth_rock, 62);
mapBlock(Blocks.sign.getState().withProperty(BlockStandingSign.FACING, Facing.SOUTH), 63, 0, 1, 14, 15);
mapBlock(Blocks.sign.getState().withProperty(BlockStandingSign.FACING, Facing.WEST), 63, 2, 3, 4, 5);
mapBlock(Blocks.sign.getState().withProperty(BlockStandingSign.FACING, Facing.NORTH), 63, 6, 7, 8, 9);
@ -942,8 +840,6 @@ public abstract class Converter {
mapBlock(Blocks.soul_grass.getState().withProperty(BlockSoulGrass.AGE, 1), 115, 1);
mapBlock(Blocks.soul_grass.getState().withProperty(BlockSoulGrass.AGE, 2), 115, 2);
mapBlock(Blocks.soul_grass.getState().withProperty(BlockSoulGrass.AGE, 3), 115, 3);
mapBlock(Blocks.enchanting_table, 116);
mapBlock(Blocks.brewing_stand, 117);
mapBlock(Blocks.cauldron.getState().withProperty(BlockCauldron.LEVEL, 0), 118);
mapBlock(Blocks.cauldron.getState().withProperty(BlockCauldron.LEVEL, 1), 118, 1);
mapBlock(Blocks.cauldron.getState().withProperty(BlockCauldron.LEVEL, 2), 118, 2);
@ -999,10 +895,6 @@ public abstract class Converter {
mapBlock(Blocks.sandstone_stairs.getState().withProperty(BlockStairs.FACING, Facing.SOUTH).withProperty(BlockStairs.HALF, EnumHalf.TOP), 128, 6, 14);
mapBlock(Blocks.sandstone_stairs.getState().withProperty(BlockStairs.FACING, Facing.NORTH).withProperty(BlockStairs.HALF, EnumHalf.TOP), 128, 7, 15);
mapBlock(Blocks.emerald_ore, 129);
mapBlock(Blocks.warp_chest.getState().withProperty(BlockWarpChest.FACING, Facing.NORTH), 130);
mapBlock(Blocks.warp_chest.getState().withProperty(BlockWarpChest.FACING, Facing.SOUTH), 130, 3, 9, 15);
mapBlock(Blocks.warp_chest.getState().withProperty(BlockWarpChest.FACING, Facing.WEST), 130, 4, 10);
mapBlock(Blocks.warp_chest.getState().withProperty(BlockWarpChest.FACING, Facing.EAST), 130, 5, 11);
mapBlock(Blocks.hook.getState().withProperty(BlockHook.ATTACHED, false).withProperty(BlockHook.FACING, Facing.SOUTH).withProperty(BlockHook.TRIGGERED, false), 131, 0);
mapBlock(Blocks.hook.getState().withProperty(BlockHook.ATTACHED, false).withProperty(BlockHook.FACING, Facing.WEST).withProperty(BlockHook.TRIGGERED, false), 131, 1);
mapBlock(Blocks.hook.getState().withProperty(BlockHook.ATTACHED, false).withProperty(BlockHook.FACING, Facing.NORTH).withProperty(BlockHook.TRIGGERED, false), 131, 2);
@ -1101,10 +993,6 @@ public abstract class Converter {
mapBlock(Blocks.anvil.getState().withProperty(BlockAnvil.FACING, Facing.WEST), 145, 1, 5, 9, 13);
mapBlock(Blocks.anvil.getState().withProperty(BlockAnvil.FACING, Facing.NORTH), 145, 2, 6, 10, 14);
mapBlock(Blocks.anvil.getState().withProperty(BlockAnvil.FACING, Facing.EAST), 145, 3, 7, 11, 15);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.NORTH), 146);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.SOUTH), 146, 3, 9, 15);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.WEST), 146, 4, 10);
mapBlock(Blocks.wood_chest.getState().withProperty(BlockChest.FACING, Facing.EAST), 146, 5, 11);
mapBlock(Blocks.light_weighted_pressure_plate.getState().withProperty(BlockPressurePlateWeighted.POWER, 0), 147, 0);
mapBlock(Blocks.light_weighted_pressure_plate.getState().withProperty(BlockPressurePlateWeighted.POWER, 1), 147, 1);
mapBlock(Blocks.light_weighted_pressure_plate.getState().withProperty(BlockPressurePlateWeighted.POWER, 2), 147, 2);
@ -1139,16 +1027,6 @@ public abstract class Converter {
mapBlock(Blocks.heavy_weighted_pressure_plate.getState().withProperty(BlockPressurePlateWeighted.POWER, 15), 148, 15);
mapBlock(Blocks.cobblestone, 152);
mapBlock(Blocks.quartz_ore, 153);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.DOWN), 154, 0, 1, 6, 7);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.NORTH), 154, 2);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.SOUTH), 154, 3);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.WEST), 154, 4);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.EAST), 154, 5);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.DOWN), 154, 8, 9, 14, 15);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.NORTH), 154, 10);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.SOUTH), 154, 11);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.WEST), 154, 12);
mapBlock(Blocks.hopper.getState().withProperty(BlockHopper.FACING, Facing.EAST), 154, 13);
mapBlock(Blocks.quartz_block, 155);
mapBlock(Blocks.quartz_ornaments, 155, 1);
mapBlock(Blocks.quartz_pillar.getState().withProperty(BlockQuartzPillar.AXIS, Facing.Axis.Y), 155, 2);
@ -1174,18 +1052,7 @@ public abstract class Converter {
mapBlock(Blocks.rail.getState().withProperty(BlockRail.SHAPE, EnumRailDirection.ASCENDING_WEST), 157, 11);
mapBlock(Blocks.rail.getState().withProperty(BlockRail.SHAPE, EnumRailDirection.ASCENDING_NORTH), 157, 12);
mapBlock(Blocks.rail.getState().withProperty(BlockRail.SHAPE, EnumRailDirection.ASCENDING_SOUTH), 157, 13);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.DOWN), 158, 0, 6);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.UP), 158, 1, 7);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.NORTH), 158, 2);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.SOUTH), 158, 3);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.WEST), 158, 4);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.EAST), 158, 5);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.DOWN), 158, 8, 14);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.UP), 158, 9, 15);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.NORTH), 158, 10);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.SOUTH), 158, 11);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.WEST), 158, 12);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.EAST), 158, 13);
mapBlock(Blocks.smooth_rock, 158);
mapBlock(new BlockFunction() {
public State getState(int id, int data) {
return BlockColoredClay.getByColor(COLOR_LOOKUP[data]).getState();
@ -1418,18 +1285,7 @@ public abstract class Converter {
mapBlock(Blocks.blood_brick, 215);
mapBlock(Blocks.quartz_block, 216);
mapBlock(Blocks.glass, 217);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.DOWN), 218, 0, 6);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.UP), 218, 1, 7);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.NORTH), 218, 2);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.SOUTH), 218, 3);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.WEST), 218, 4);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.EAST), 218, 5);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.DOWN), 218, 8, 14);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.UP), 218, 9, 15);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.NORTH), 218, 10);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.SOUTH), 218, 11);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.WEST), 218, 12);
mapBlock(Blocks.dropper.getState().withProperty(BlockDropper.FACING, Facing.EAST), 218, 13);
mapBlock(Blocks.smooth_rock, 218);
for(int id = 219; id <= 234; id++) {
mapBlock(BlockWool.getByColor(COLOR_LOOKUP[id - 219]).getState(), id);
}
@ -1513,43 +1369,41 @@ public abstract class Converter {
return (NbtTag)read(in, (byte)10);
}
private static TagObject convertTile(NbtTag ent, Class<? extends TileEntity> clazz) {
private static TagObject convertText(NbtTag ent) {
TagObject nent = new TagObject();
if(clazz == TileEntitySign.class) {
String[] signText = new String[4];
for(int i = 0; i < 4; ++i) {
signText[i] = ent.getString("Text" + (i + 1));
}
byte newComp = 0;
byte quotes = 0;
String[] old = new String[4];
for(int i = 0; i < 4; ++i) {
old[i] = signText[i];
signText[i] = signText[i].indexOf('\u00A7') != -1 ?
signText[i].replaceAll("\u00A7[0-9a-fA-Fk-oK-O]", "") :
signText[i];
if(signText[i].startsWith("{") && signText[i].endsWith("}")) {
try {
signText[i] = "<JSON>";
newComp++;
}
catch(Throwable e) {
}
}
else if(signText[i].startsWith("\"") && signText[i].endsWith("\"")) {
String[] signText = new String[4];
for(int i = 0; i < 4; ++i) {
signText[i] = ent.getString("Text" + (i + 1));
}
byte newComp = 0;
byte quotes = 0;
String[] old = new String[4];
for(int i = 0; i < 4; ++i) {
old[i] = signText[i];
signText[i] = signText[i].indexOf('\u00A7') != -1 ?
signText[i].replaceAll("\u00A7[0-9a-fA-Fk-oK-O]", "") :
signText[i];
if(signText[i].startsWith("{") && signText[i].endsWith("}")) {
try {
signText[i] = "<JSON>";
newComp++;
quotes |= 1 << i;
}
catch(Throwable e) {
}
}
for(int i = 0; i < 4; ++i) {
if(newComp == 4 && (quotes & (1 << i)) != 0) {
signText[i] = signText[i].substring(1, signText[i].length() - 1);
}
else if(signText[i].startsWith("\"") && signText[i].endsWith("\"")) {
newComp++;
quotes |= 1 << i;
}
for(int i = 0; i < 4; ++i) {
nent.setString("Text" + (i + 1), signText[i]);
}
for(int i = 0; i < 4; ++i) {
if(newComp == 4 && (quotes & (1 << i)) != 0) {
signText[i] = signText[i].substring(1, signText[i].length() - 1);
}
}
for(int i = 0; i < 4; ++i) {
nent.setString("Text" + (i + 1), signText[i]);
}
return nent;
}
@ -1644,50 +1498,23 @@ public abstract class Converter {
ntag.setBool("P", true);
ntag.setBool("L", tag.getByte("LightPopulated") != 0);
NbtTag[] ents = tag.getTagList("Entities");
List<TagObject> entities = Lists.newArrayList();
for(NbtTag ent : ents) {
TagObject nent = new TagObject();
String mapped = ENTITY_MAP.get(trimColon(ent.getString("id")));
if(mapped != null) {
double[] pos = ent.getDoubleList("Pos");
double[] motion = ent.getDoubleList("Motion");
float[] rotation = ent.getFloatList("Rotation");
if(pos.length != 3 || motion.length != 3 || rotation.length != 2)
continue;
boolean ground = ent.getByte("OnGround") != 0;
nent.setDouble("PosX", pos[0]);
nent.setDouble("PosY", pos[1]);
nent.setDouble("PosZ", pos[2]);
nent.setDouble("MotionX", motion[0]);
nent.setDouble("MotionY", motion[1]);
nent.setDouble("MotionZ", motion[2]);
nent.setFloat("Yaw", rotation[0]);
nent.setFloat("Pitch", rotation[1]);
nent.setBool("OnGround", ground);
nent.setString("id", mapped);
entities.add(nent);
}
}
ntag.setList("E", entities);
ntag.setList("E", Lists.newArrayList());
ents = tag.getTagList("TileEntities");
entities = Lists.newArrayList();
for(NbtTag ent : ents) {
TagObject nent = new TagObject();
Class<? extends TileEntity> mapped = TILE_MAP.get(trimColon(ent.getString("id")));
if(mapped != null) {
nent = convertTile(ent, mapped);
NbtTag[] tes = tag.getTagList("TileEntities");
List<TagObject> list = Lists.newArrayList();
for(NbtTag ent : tes) {
if(trimColon(ent.getString("id")).equalsIgnoreCase("sign")) {
TagObject nent = convertText(ent);
nent.setByte("X", (byte)(ent.getInt("x") & 15));
nent.setShort("Y", (short)ent.getInt("y"));
nent.setByte("Z", (byte)(ent.getInt("z") & 15));
entities.add(nent);
list.add(nent);
}
}
ntag.setList("B", entities);
ntag.setList("B", list);
NbtTag[] sects = tag.getTagList("Sections");
entities = Lists.newArrayList();
list = Lists.newArrayList();
char[] mapping = Region.getEncodeMap();
NbtTag[] sections = new NbtTag[16];
for(NbtTag sect : sects) {
@ -1742,14 +1569,14 @@ public abstract class Converter {
nsect.setByteArray("D", newblks);
nsect.setByteArray("B", sect.getByteArray("BlockLight"));
nsect.setByteArray("S", sect.getByteArray("SkyLight"));
entities.add(nsect);
list.add(nsect);
}
lastBlocks = blocks;
lastData = data;
lastAdd = adddata;
}
ntag.setList("S", entities);
ntag.setList("S", list);
return ntag;
}

View file

@ -7,7 +7,6 @@ import common.block.Directional;
import common.block.Rotatable;
import common.block.artificial.BlockDoor;
import common.block.tech.BlockButton;
import common.block.tech.BlockDispenser;
import common.block.tech.BlockLever;
import common.block.tech.BlockPistonBase;
import common.block.tech.BlockRail;
@ -390,7 +389,7 @@ public abstract class StructureComponent
}
}
}
else if (blockIn instanceof BlockPistonBase || blockIn instanceof BlockDispenser)
else if (blockIn instanceof BlockPistonBase)
{
Facing meta = state.getValue(Directional.FACING);
if (this.coordBaseMode == Facing.SOUTH)