From b42d538049603c5f3dc9c9b244b7a25227def4f7 Mon Sep 17 00:00:00 2001 From: Tschipp Date: Tue, 3 Oct 2017 17:04:53 +0200 Subject: [PATCH 1/2] Client-Server Script desync --- .../carryon/common/command/CommandCarryOn.java | 3 ++- .../carryon/common/event/ItemEntityEvents.java | 13 +++++++------ .../tschipp/carryon/common/event/ItemEvents.java | 6 +++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java b/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java index fc574a8..99b6671 100644 --- a/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java +++ b/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import tschipp.carryon.CarryOn; import tschipp.carryon.common.handler.CustomPickupOverrideHandler; import tschipp.carryon.common.handler.ModelOverridesHandler; @@ -76,7 +77,7 @@ public class CommandCarryOn extends CommandBase implements ICommand cleared += player.inventory.clearMatchingItems(RegistrationHandler.itemTile, 0, 64, null); cleared += player.inventory.clearMatchingItems(RegistrationHandler.itemEntity, 0, 64, null); - CarryOn.network.sendTo(new CarrySlotPacket(9), (EntityPlayerMP) player); + CarryOn.network.sendToAllAround(new CarrySlotPacket(9), new TargetPoint(player.world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); if (cleared != 1) player.sendMessage(new TextComponentString("Cleared " + cleared + " Items!")); diff --git a/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java index 7c9cc7f..d7dd32d 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java @@ -16,6 +16,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.Event.Result; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.items.CapabilityItemHandler; @@ -91,21 +92,21 @@ public class ItemEntityEvents { if (ItemEntity.storeEntityData(entity, world, stack)) { - if(entity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) + if (entity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { IItemHandler handler = entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); - for(int i = 0; i < handler.getSlots(); i++) + for (int i = 0; i < handler.getSlots(); i++) { handler.extractItem(i, 64, false); } } - + CarryOnOverride override = ScriptChecker.inspectEntity(entity); int overrideHash = 0; - if(override != null) + if (override != null) overrideHash = override.hashCode(); - - CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, overrideHash), (EntityPlayerMP) player); + + CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); entity.setDead(); player.setHeldItem(EnumHand.MAIN_HAND, stack); event.setCanceled(true); diff --git a/src/main/java/tschipp/carryon/common/event/ItemEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEvents.java index 667446e..86bc1b4 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEvents.java @@ -23,9 +23,9 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import tschipp.carryon.CarryOn; import tschipp.carryon.client.keybinds.CarryOnKeybinds; -import tschipp.carryon.common.handler.ListHandler; import tschipp.carryon.common.handler.PickupHandler; import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.item.ItemTile; @@ -123,7 +123,7 @@ public class ItemEvents try { - CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, overrideHash), (EntityPlayerMP) player); + CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); world.removeTileEntity(pos); world.setBlockToAir(pos); player.setHeldItem(EnumHand.MAIN_HAND, stack); @@ -132,7 +132,7 @@ public class ItemEvents } catch (Exception e) { - CarryOn.network.sendTo(new CarrySlotPacket(9), (EntityPlayerMP) player); + CarryOn.network.sendToAllAround(new CarrySlotPacket(9), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); world.setBlockState(pos, statee); if (!tag.hasNoTags()) TileEntity.create(world, tag); From ecfe850a9934b6f13baf6031518820ae044933ac Mon Sep 17 00:00:00 2001 From: Tschipp Date: Sat, 7 Oct 2017 18:16:47 +0200 Subject: [PATCH 2/2] Scripting now works on Servers --- src/main/java/tschipp/carryon/CarryOn.java | 9 +-- .../client/event/RenderEntityEvents.java | 2 +- .../tschipp/carryon/common/CommonProxy.java | 3 + .../common/command/CommandCarryOn.java | 2 +- .../common/command/CommandCarryOnReload.java | 4 +- .../common/event/ItemEntityEvents.java | 2 +- .../carryon/common/event/ItemEvents.java | 81 ++++++++++++++++++- .../carryon/common/item/ItemEntity.java | 3 + .../tschipp/carryon/common/item/ItemTile.java | 3 + .../common/scripting/CarryOnOverride.java | 51 ++++-------- .../common/scripting/ScriptReader.java | 2 +- .../network/client/CarrySlotPacket.java | 11 ++- .../client/CarrySlotPacketHandler.java | 41 ++++++---- .../network/client/ScriptReloadPacket.java | 26 ++++++ .../client/ScriptReloadPacketHandler.java | 35 ++++++++ 15 files changed, 207 insertions(+), 68 deletions(-) create mode 100644 src/main/java/tschipp/carryon/network/client/ScriptReloadPacket.java create mode 100644 src/main/java/tschipp/carryon/network/client/ScriptReloadPacketHandler.java diff --git a/src/main/java/tschipp/carryon/CarryOn.java b/src/main/java/tschipp/carryon/CarryOn.java index 394c8b9..d245225 100644 --- a/src/main/java/tschipp/carryon/CarryOn.java +++ b/src/main/java/tschipp/carryon/CarryOn.java @@ -65,13 +65,6 @@ public class CarryOn { } - public static File getMcDir() - { - if (FMLCommonHandler.instance().getMinecraftServerInstance() != null && FMLCommonHandler.instance().getMinecraftServerInstance().isDedicatedServer()) - { - return new File("."); - } - return Minecraft.getMinecraft().mcDataDir; - } + } \ No newline at end of file diff --git a/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java b/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java index b161527..26f58bd 100644 --- a/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java +++ b/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java @@ -352,7 +352,7 @@ public class RenderEntityEvents if (nbttag != null) newEntity.readFromNBT(nbttag); entity = newEntity; - entity.setPosition(d0, d1, d2); + entity.setPosition(c0, c1, c2); entity.rotationYaw = 0.0f; entity.prevRotationYaw = 0.0f; entity.setRotationYawHead(0.0f); diff --git a/src/main/java/tschipp/carryon/common/CommonProxy.java b/src/main/java/tschipp/carryon/common/CommonProxy.java index 981ecd9..5740705 100644 --- a/src/main/java/tschipp/carryon/common/CommonProxy.java +++ b/src/main/java/tschipp/carryon/common/CommonProxy.java @@ -17,6 +17,8 @@ import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.scripting.ScriptReader; import tschipp.carryon.network.client.CarrySlotPacket; import tschipp.carryon.network.client.CarrySlotPacketHandler; +import tschipp.carryon.network.client.ScriptReloadPacket; +import tschipp.carryon.network.client.ScriptReloadPacketHandler; import tschipp.carryon.network.server.SyncKeybindPacket; import tschipp.carryon.network.server.SyncKeybindPacketHandler; @@ -32,6 +34,7 @@ public class CommonProxy CarryOn.network.registerMessage(SyncKeybindPacketHandler.class, SyncKeybindPacket.class, 0, Side.SERVER); CarryOn.network.registerMessage(CarrySlotPacketHandler.class, CarrySlotPacket.class, 1, Side.CLIENT); + CarryOn.network.registerMessage(ScriptReloadPacketHandler.class, ScriptReloadPacket.class, 2, Side.CLIENT); RegistrationHandler.regItems(); RegistrationHandler.regCommonEvents(); diff --git a/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java b/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java index 99b6671..571a8ff 100644 --- a/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java +++ b/src/main/java/tschipp/carryon/common/command/CommandCarryOn.java @@ -77,7 +77,7 @@ public class CommandCarryOn extends CommandBase implements ICommand cleared += player.inventory.clearMatchingItems(RegistrationHandler.itemTile, 0, 64, null); cleared += player.inventory.clearMatchingItems(RegistrationHandler.itemEntity, 0, 64, null); - CarryOn.network.sendToAllAround(new CarrySlotPacket(9), new TargetPoint(player.world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + CarryOn.network.sendTo(new CarrySlotPacket(9, player.getEntityId()), (EntityPlayerMP) player); if (cleared != 1) player.sendMessage(new TextComponentString("Cleared " + cleared + " Items!")); diff --git a/src/main/java/tschipp/carryon/common/command/CommandCarryOnReload.java b/src/main/java/tschipp/carryon/common/command/CommandCarryOnReload.java index 745c945..9f5c48e 100644 --- a/src/main/java/tschipp/carryon/common/command/CommandCarryOnReload.java +++ b/src/main/java/tschipp/carryon/common/command/CommandCarryOnReload.java @@ -6,12 +6,13 @@ import java.util.List; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; -import net.minecraft.command.WrongUsageException; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentString; +import tschipp.carryon.CarryOn; import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.scripting.ScriptReader; +import tschipp.carryon.network.client.ScriptReloadPacket; public class CommandCarryOnReload extends CommandBase { @@ -23,6 +24,7 @@ public class CommandCarryOnReload extends CommandBase if (CarryOnConfig.settings.useScripts) { ScriptReader.reloadScripts(); + CarryOn.network.sendToAll(new ScriptReloadPacket()); sender.sendMessage(new TextComponentString("Successfully reloaded scripts!")); } else diff --git a/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java index d7dd32d..830f017 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEntityEvents.java @@ -106,7 +106,7 @@ public class ItemEntityEvents if (override != null) overrideHash = override.hashCode(); - CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); entity.setDead(); player.setHeldItem(EnumHand.MAIN_HAND, stack); event.setCanceled(true); diff --git a/src/main/java/tschipp/carryon/common/event/ItemEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEvents.java index 86bc1b4..696f30b 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEvents.java @@ -2,6 +2,7 @@ package tschipp.carryon.common.event; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -19,15 +20,18 @@ import net.minecraft.util.text.event.ClickEvent; import net.minecraft.util.text.event.ClickEvent.Action; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.player.PlayerEvent.StartTracking; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import tschipp.carryon.CarryOn; import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.common.handler.PickupHandler; import tschipp.carryon.common.handler.RegistrationHandler; +import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemTile; import tschipp.carryon.common.scripting.CarryOnOverride; import tschipp.carryon.common.scripting.ScriptChecker; @@ -87,6 +91,75 @@ public class ItemEvents eitem.setEntityItemStack(ItemStack.EMPTY); } } + + } + + @SubscribeEvent + public void onPlayerLogin(PlayerLoggedInEvent event) + { + if (event.player instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) event.player; + World world = player.getEntityWorld(); + + ItemStack carried = player.getHeldItemMainhand(); + if (!carried.isEmpty() && carried.getItem() == RegistrationHandler.itemTile || carried.getItem() == RegistrationHandler.itemEntity) + { + if (carried.getItem() == RegistrationHandler.itemTile) + { + CarryOnOverride override = ScriptChecker.inspectBlock(((ItemTile) carried.getItem()).getBlockState(carried), world, player.getPosition(), ((ItemTile) carried.getItem()).getTileData(carried)); + if (override != null) + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), override.hashCode()), (EntityPlayerMP) player); + else + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId()), (EntityPlayerMP) player); + } + else + { + CarryOnOverride override = ScriptChecker.inspectEntity(((ItemEntity) carried.getItem()).getEntity(carried, world)); + if (override != null) + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), override.hashCode()), (EntityPlayerMP) player); + else + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId()), (EntityPlayerMP) player); + } + } + + } + } + + + @SubscribeEvent + public void onEntityStartTracking(StartTracking event) + { + Entity e = event.getTarget(); + EntityPlayer tracker = event.getEntityPlayer(); + + if (e instanceof EntityPlayer && tracker instanceof EntityPlayerMP) + { + EntityPlayer player = (EntityPlayer) e; + World world = player.getEntityWorld(); + + ItemStack carried = player.getHeldItemMainhand(); + if (!carried.isEmpty() && carried.getItem() == RegistrationHandler.itemTile || carried.getItem() == RegistrationHandler.itemEntity) + { + if (carried.getItem() == RegistrationHandler.itemTile) + { + CarryOnOverride override = ScriptChecker.inspectBlock(((ItemTile) carried.getItem()).getBlockState(carried), world, player.getPosition(), ((ItemTile) carried.getItem()).getTileData(carried)); + if (override != null) + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), override.hashCode()), (EntityPlayerMP) tracker); + else + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId()), (EntityPlayerMP) tracker); + } + else + { + CarryOnOverride override = ScriptChecker.inspectEntity(((ItemEntity) carried.getItem()).getEntity(carried, world)); + if (override != null) + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), override.hashCode()), (EntityPlayerMP) tracker); + else + CarryOn.network.sendTo(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId()), (EntityPlayerMP) tracker); + } + } + + } } @SubscribeEvent @@ -118,12 +191,12 @@ public class ItemEvents tag = world.getTileEntity(pos) != null ? world.getTileEntity(pos).writeToNBT(tag) : new NBTTagCompound(); CarryOnOverride override = ScriptChecker.inspectBlock(state, world, pos, tag); int overrideHash = 0; - if(override != null) + if (override != null) overrideHash = override.hashCode(); - + try { - CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + CarryOn.network.sendToAllAround(new CarrySlotPacket(player.inventory.currentItem, player.getEntityId(), overrideHash), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); world.removeTileEntity(pos); world.setBlockToAir(pos); player.setHeldItem(EnumHand.MAIN_HAND, stack); @@ -132,7 +205,7 @@ public class ItemEvents } catch (Exception e) { - CarryOn.network.sendToAllAround(new CarrySlotPacket(9), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); + CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); world.setBlockState(pos, statee); if (!tag.hasNoTags()) TileEntity.create(world, tag); diff --git a/src/main/java/tschipp/carryon/common/item/ItemEntity.java b/src/main/java/tschipp/carryon/common/item/ItemEntity.java index 707faa5..392c879 100644 --- a/src/main/java/tschipp/carryon/common/item/ItemEntity.java +++ b/src/main/java/tschipp/carryon/common/item/ItemEntity.java @@ -20,9 +20,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.translation.I18n; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.common.registry.GameRegistry; import tschipp.carryon.CarryOn; import tschipp.carryon.common.config.CarryOnConfig; +import tschipp.carryon.network.client.CarrySlotPacket; public class ItemEntity extends Item { @@ -109,6 +111,7 @@ public class ItemEntity extends Item } clearEntityData(stack); player.setHeldItem(hand, ItemStack.EMPTY); + CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); } player.getEntityData().removeTag("overrideKey"); return EnumActionResult.SUCCESS; diff --git a/src/main/java/tschipp/carryon/common/item/ItemTile.java b/src/main/java/tschipp/carryon/common/item/ItemTile.java index ba90146..c8fc3cb 100644 --- a/src/main/java/tschipp/carryon/common/item/ItemTile.java +++ b/src/main/java/tschipp/carryon/common/item/ItemTile.java @@ -33,11 +33,13 @@ import net.minecraft.util.text.event.ClickEvent; import net.minecraft.util.text.event.ClickEvent.Action; import net.minecraft.util.text.translation.I18n; import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraftforge.fml.common.registry.GameRegistry; import tschipp.carryon.CarryOn; import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.handler.CustomPickupOverrideHandler; import tschipp.carryon.common.handler.ModelOverridesHandler; +import tschipp.carryon.network.client.CarrySlotPacket; public class ItemTile extends Item { @@ -142,6 +144,7 @@ public class ItemTile extends Item player.playSound(containedblock.getSoundType().getPlaceSound(), 1.0f, 0.5f); player.setHeldItem(hand, ItemStack.EMPTY); player.getEntityData().removeTag("overrideKey"); + CarryOn.network.sendToAllAround(new CarrySlotPacket(9, player.getEntityId()), new TargetPoint(world.provider.getDimension(), player.posX, player.posY, player.posZ, 256)); return EnumActionResult.SUCCESS; } diff --git a/src/main/java/tschipp/carryon/common/scripting/CarryOnOverride.java b/src/main/java/tschipp/carryon/common/scripting/CarryOnOverride.java index b3bda35..aaec87a 100644 --- a/src/main/java/tschipp/carryon/common/scripting/CarryOnOverride.java +++ b/src/main/java/tschipp/carryon/common/scripting/CarryOnOverride.java @@ -37,13 +37,19 @@ public class CarryOnOverride private String renderScale; private String renderRotationLeftArm; private String renderRotationRightArm; - - private boolean isBlock; - private boolean isEntity; - private boolean renderLeftArm = true; private boolean renderRightArm = true; + + private boolean isBlock; + private boolean isEntity; + private final String path; + + public CarryOnOverride(String path) + { + this.path = path; + } + public String getRenderRotationLeftArm() { return renderRotationLeftArm; @@ -89,38 +95,15 @@ public class CarryOnOverride { final int prime = 31; int result = 1; - result = prime * result + ((conditionAchievement == null) ? 0 : conditionAchievement.hashCode()); - result = prime * result + ((conditionGamemode == null) ? 0 : conditionGamemode.hashCode()); - result = prime * result + ((conditionGamestage == null) ? 0 : conditionGamestage.hashCode()); - result = prime * result + ((conditionPosition == null) ? 0 : conditionPosition.hashCode()); - result = prime * result + ((conditionScoreboard == null) ? 0 : conditionScoreboard.hashCode()); - result = prime * result + ((conditionXp == null) ? 0 : conditionXp.hashCode()); - result = prime * result + (isBlock ? 1231 : 1237); - result = prime * result + (isEntity ? 1231 : 1237); - result = prime * result + (renderLeftArm ? 1231 : 1237); - result = prime * result + (renderRightArm ? 1231 : 1237); - result = prime * result + renderMeta; - result = prime * result + ((renderNBT == null) ? 0 : renderNBT.hashCode()); - result = prime * result + ((renderNameBlock == null) ? 0 : renderNameBlock.hashCode()); - result = prime * result + ((renderNameEntity == null) ? 0 : renderNameEntity.hashCode()); - result = prime * result + ((renderRotation == null) ? 0 : renderRotation.hashCode()); - result = prime * result + ((renderRotationLeftArm == null) ? 0 : renderRotationLeftArm.hashCode()); - result = prime * result + ((renderRotationRightArm == null) ? 0 : renderRotationRightArm.hashCode()); - result = prime * result + ((renderScale == null) ? 0 : renderScale.hashCode()); - result = prime * result + ((renderTranslation == null) ? 0 : renderTranslation.hashCode()); - result = prime * result + ((typeBlockTag == null) ? 0 : typeBlockTag.hashCode()); - result = prime * result + ((typeEntityTag == null) ? 0 : typeEntityTag.hashCode()); - result = prime * result + ((typeHardness == null) ? 0 : typeHardness.hashCode()); - result = prime * result + ((typeHealth == null) ? 0 : typeHealth.hashCode()); - result = prime * result + ((typeHeight == null) ? 0 : typeHeight.hashCode()); - result = prime * result + ((typeMaterial == null) ? 0 : typeMaterial.hashCode()); - result = prime * result + ((typeMeta == null) ? 0 : typeMeta.hashCode()); - result = prime * result + ((typeNameBlock == null) ? 0 : typeNameBlock.hashCode()); - result = prime * result + ((typeNameEntity == null) ? 0 : typeNameEntity.hashCode()); - result = prime * result + ((typeResistance == null) ? 0 : typeResistance.hashCode()); - result = prime * result + ((typeWidth == null) ? 0 : typeWidth.hashCode()); + result = prime * result + ((path == null) ? 0 : path.hashCode()); return result; } + + @Override + public String toString() + { + return "Code: " + this.hashCode(); + } @Override public boolean equals(Object obj) diff --git a/src/main/java/tschipp/carryon/common/scripting/ScriptReader.java b/src/main/java/tschipp/carryon/common/scripting/ScriptReader.java index fc3e54c..287bcfd 100644 --- a/src/main/java/tschipp/carryon/common/scripting/ScriptReader.java +++ b/src/main/java/tschipp/carryon/common/scripting/ScriptReader.java @@ -67,7 +67,7 @@ public class ScriptReader if (!errored) { - CarryOnOverride override = new CarryOnOverride(); + CarryOnOverride override = new CarryOnOverride(file.getAbsolutePath()); if (block != null) { diff --git a/src/main/java/tschipp/carryon/network/client/CarrySlotPacket.java b/src/main/java/tschipp/carryon/network/client/CarrySlotPacket.java index ca9fb2f..597cb5c 100644 --- a/src/main/java/tschipp/carryon/network/client/CarrySlotPacket.java +++ b/src/main/java/tschipp/carryon/network/client/CarrySlotPacket.java @@ -9,20 +9,25 @@ public class CarrySlotPacket implements IMessage { public int slot; public int carryOverride = 0; + public int entityid; public CarrySlotPacket() { + this.slot = 9; + this.entityid = 0; } - public CarrySlotPacket(int slot) + public CarrySlotPacket(int slot, int entityid) { this.slot = slot; + this.entityid = entityid; } - public CarrySlotPacket(int slot, int carryOverride) + public CarrySlotPacket(int slot, int entityid, int carryOverride) { this.slot = slot; this.carryOverride = carryOverride; + this.entityid = entityid; } @Override @@ -32,6 +37,7 @@ public class CarrySlotPacket implements IMessage this.slot = tag.getInteger("slot"); this.carryOverride = tag.getInteger("override"); + this.entityid = tag.getInteger("entityid"); } @Override @@ -40,6 +46,7 @@ public class CarrySlotPacket implements IMessage NBTTagCompound tag = new NBTTagCompound(); tag.setInteger("slot", slot); tag.setInteger("override", carryOverride); + tag.setInteger("entityid", entityid); ByteBufUtils.writeTag(buf, tag); } diff --git a/src/main/java/tschipp/carryon/network/client/CarrySlotPacketHandler.java b/src/main/java/tschipp/carryon/network/client/CarrySlotPacketHandler.java index 7e7ff43..4c131de 100644 --- a/src/main/java/tschipp/carryon/network/client/CarrySlotPacketHandler.java +++ b/src/main/java/tschipp/carryon/network/client/CarrySlotPacketHandler.java @@ -1,12 +1,14 @@ package tschipp.carryon.network.client; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.multiplayer.WorldClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IThreadListener; +import net.minecraft.world.World; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; -import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.common.scripting.ScriptChecker; public class CarrySlotPacketHandler implements IMessageHandler @@ -19,25 +21,34 @@ public class CarrySlotPacketHandler implements IMessageHandler= 9) + if (world != null) { - player.getEntityData().removeTag("carrySlot"); - player.getEntityData().removeTag("overrideKey"); + Entity e = world.getEntityByID(message.entityid); + + if (e != null && e instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) e; + + if (message.slot >= 9) + { + player.getEntityData().removeTag("carrySlot"); + player.getEntityData().removeTag("overrideKey"); + } + else + { + + player.getEntityData().setInteger("carrySlot", message.slot); + if (message.carryOverride != 0) + ScriptChecker.setCarryOnOverride(player, message.carryOverride); + } + } } - else - { - player.getEntityData().setInteger("carrySlot", message.slot); - if(message.carryOverride != 0) - ScriptChecker.setCarryOnOverride(player, message.carryOverride); - } - - - + } }); diff --git a/src/main/java/tschipp/carryon/network/client/ScriptReloadPacket.java b/src/main/java/tschipp/carryon/network/client/ScriptReloadPacket.java new file mode 100644 index 0000000..3cde434 --- /dev/null +++ b/src/main/java/tschipp/carryon/network/client/ScriptReloadPacket.java @@ -0,0 +1,26 @@ +package tschipp.carryon.network.client; + +import io.netty.buffer.ByteBuf; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; + +public class ScriptReloadPacket implements IMessage +{ + + public ScriptReloadPacket() + { + + } + + @Override + public void fromBytes(ByteBuf buf) + { + + } + + @Override + public void toBytes(ByteBuf buf) + { + + } + +} diff --git a/src/main/java/tschipp/carryon/network/client/ScriptReloadPacketHandler.java b/src/main/java/tschipp/carryon/network/client/ScriptReloadPacketHandler.java new file mode 100644 index 0000000..507e35e --- /dev/null +++ b/src/main/java/tschipp/carryon/network/client/ScriptReloadPacketHandler.java @@ -0,0 +1,35 @@ +package tschipp.carryon.network.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.util.IThreadListener; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import tschipp.carryon.common.scripting.ScriptReader; + +public class ScriptReloadPacketHandler implements IMessageHandler +{ + + @Override + public IMessage onMessage(ScriptReloadPacket message, MessageContext ctx) + { + IThreadListener mainThread = Minecraft.getMinecraft(); + + mainThread.addScheduledTask(new Runnable() + { + EntityPlayerSP player = Minecraft.getMinecraft().player; + + @Override + public void run() + { + if(player != null) + ScriptReader.reloadScripts(); + } + + }); + + return null; + } + +}