diff --git a/build.gradle b/build.gradle
index 0ef8e4c..3956ee4 100755
--- a/build.gradle
+++ b/build.gradle
@@ -38,43 +38,23 @@ group = "cpw.mods" // http://maven.apache.org/guides/mini/guide-naming-conventio
// This is our actual project within the group. Note: FML has "fml" here. But this is ironchest.
archivesBaseName = "ironchest"
-sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
-compileJava {
- sourceCompatibility = targetCompatibility = '1.8'
-}
-
minecraft {
mappings channel: 'snapshot', version: mappings_version
runs {
client = {
- main "net.minecraftforge.userdev.UserdevLauncher"
workingDirectory = project.file("run").canonicalPath
- environment "target", "fmluserdevclient"
- environment "assetDirectory", downloadAssets.output.absolutePath
- environment "FORGE_VERSION", forge_version
- environment "FORGE_GROUP", forge_group
- environment "MCP_VERSION", mappings_version
- environment "MC_VERSION", minecraft_version
- environment "MOD_CLASSES", "${sourceSets.main.output.resourcesDir}${File.pathSeparator}${sourceSets.main.output.classesDirs.join(File.pathSeparator)}"
+ source sourceSets.main
}
server = {
- main "net.minecraftforge.userdev.UserdevLauncher"
workingDirectory = project.file("run").canonicalPath
- environment "target", "fmluserdevserver"
- environment "assetDirectory", downloadAssets.output.absolutePath
- environment "FORGE_VERSION", forge_version
- environment "FORGE_GROUP", forge_group
- environment "MCP_VERSION", mappings_version
- environment "MC_VERSION", minecraft_version
- environment "MOD_CLASSES", "${sourceSets.main.output.resourcesDir}${File.pathSeparator}${sourceSets.main.output.classesDirs.join(File.pathSeparator)}"
+ source sourceSets.main
}
}
}
dependencies {
minecraft 'net.minecraftforge.test:forge:' + minecraft_version + '-' + forge_version
- compile 'net.minecraftforge.test:forge:' + minecraft_version + '-' + forge_version + ':launcher'
}
// IronChest uses git tagging to mark major versions. This sets up the project version to that version data
diff --git a/gradle.properties b/gradle.properties
index ffb6a46..516e5ee 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,7 +7,7 @@ minecraft_version=1.13
minecraft_version_toml=13
# Forge Version Information
-forge_version=24.0.61-1.13-pre
+forge_version=24.0.81-1.13-pre
forge_version_toml=24
forge_group=net.minecraftforge.test
diff --git a/src/main/java/cpw/mods/ironchest/IronChest.java b/src/main/java/cpw/mods/ironchest/IronChest.java
index 9b1a330..0975236 100644
--- a/src/main/java/cpw/mods/ironchest/IronChest.java
+++ b/src/main/java/cpw/mods/ironchest/IronChest.java
@@ -14,9 +14,7 @@ import cpw.mods.ironchest.client.ClientProxy;
import cpw.mods.ironchest.common.ServerProxy;
import cpw.mods.ironchest.common.ai.OcelotsSitOnChestsHandler;
import cpw.mods.ironchest.common.blocks.BlockChest;
-import cpw.mods.ironchest.common.core.IronChestBlocks;
-import cpw.mods.ironchest.common.core.IronChestItems;
-import cpw.mods.ironchest.common.tileentity.IronChestEntityType;
+import cpw.mods.ironchest.common.network.PacketHandler;
import cpw.mods.ironchest.common.util.BlockNames;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
@@ -24,7 +22,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLPreRegistrationEvent;
import net.minecraftforge.fml.javafmlmod.FMLModLoadingContext;
@Mod(value = IronChest.MOD_ID)
@@ -38,19 +36,14 @@ public class IronChest
public static ServerProxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> ServerProxy::new);
- public IronChestEntityType ironChestEntityType = new IronChestEntityType();
-
public IronChest()
{
instance = this;
FMLModLoadingContext.get().getModEventBus().addListener(this::preInit);
MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler());
- MinecraftForge.EVENT_BUS.register(new IronChestBlocks());
- MinecraftForge.EVENT_BUS.register(new IronChestItems());
- MinecraftForge.EVENT_BUS.register(new IronChestEntityType());
}
- private void preInit(final FMLPreInitializationEvent event)
+ private void preInit(final FMLPreRegistrationEvent event)
{
proxy.preInit();
@@ -59,8 +52,7 @@ public class IronChest
debugPrints();
}
- ironChestEntityType.registerTileEntities();
- ironChestEntityType.createEntries();
+ PacketHandler.register();
}
private void debugPrints()
diff --git a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java
index 10520e8..935f41e 100644
--- a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java
+++ b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java
@@ -13,6 +13,8 @@ package cpw.mods.ironchest.client;
import cpw.mods.ironchest.client.renderer.TileEntityIronChestRenderer;
import cpw.mods.ironchest.common.ServerProxy;
import cpw.mods.ironchest.common.blocks.IronChestType;
+import net.minecraft.client.Minecraft;
+import net.minecraft.world.World;
import net.minecraftforge.fml.client.registry.ClientRegistry;
public class ClientProxy extends ServerProxy
@@ -36,4 +38,10 @@ public class ClientProxy extends ServerProxy
}
}
}
+
+ @Override
+ public World getClientWorld()
+ {
+ return Minecraft.getInstance().world;
+ }
}
diff --git a/src/main/java/cpw/mods/ironchest/client/renderer/TileEntityIronChestItemRenderer.java b/src/main/java/cpw/mods/ironchest/client/renderer/TileEntityIronChestItemRenderer.java
index e961c53..16e95fe 100644
--- a/src/main/java/cpw/mods/ironchest/client/renderer/TileEntityIronChestItemRenderer.java
+++ b/src/main/java/cpw/mods/ironchest/client/renderer/TileEntityIronChestItemRenderer.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
package cpw.mods.ironchest.client.renderer;
import cpw.mods.ironchest.common.blocks.BlockChest;
diff --git a/src/main/java/cpw/mods/ironchest/common/ServerProxy.java b/src/main/java/cpw/mods/ironchest/common/ServerProxy.java
index 7ccf778..13950fc 100644
--- a/src/main/java/cpw/mods/ironchest/common/ServerProxy.java
+++ b/src/main/java/cpw/mods/ironchest/common/ServerProxy.java
@@ -10,10 +10,16 @@
******************************************************************************/
package cpw.mods.ironchest.common;
+import net.minecraft.world.World;
+
public class ServerProxy
{
public void preInit()
{
+ }
+ public World getClientWorld()
+ {
+ return null;
}
}
diff --git a/src/main/java/cpw/mods/ironchest/common/core/IronChestBlocks.java b/src/main/java/cpw/mods/ironchest/common/core/IronChestBlocks.java
index cf1faa6..2ecffbb 100644
--- a/src/main/java/cpw/mods/ironchest/common/core/IronChestBlocks.java
+++ b/src/main/java/cpw/mods/ironchest/common/core/IronChestBlocks.java
@@ -10,6 +10,7 @@
******************************************************************************/
package cpw.mods.ironchest.common.core;
+import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.client.renderer.TileEntityIronChestItemRenderer;
import cpw.mods.ironchest.common.blocks.BlockChest;
import cpw.mods.ironchest.common.blocks.BlockCopperChest;
@@ -27,6 +28,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.Item.Builder;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.IForgeRegistry;
public class IronChestBlocks
@@ -70,35 +72,39 @@ public class IronChestBlocks
}
- @SubscribeEvent
- public void registerBlocks(final RegistryEvent.Register event)
+ @Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
+ public static class Registration
{
- IForgeRegistry blockRegistry = event.getRegistry();
+ @SubscribeEvent
+ public static void registerBlocks(final RegistryEvent.Register event)
+ {
+ IForgeRegistry blockRegistry = event.getRegistry();
- blockRegistry.register(ironChestBlock = new BlockIronChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(goldChestBlock = new BlockGoldChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(diamondChestBlock = new BlockDiamondChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(copperChestBlock = new BlockCopperChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(silverChestBlock = new BlockSilverChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(crystalChestBlock = new BlockCrystalChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(obsidianChestBlock = new BlockObsidianChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- blockRegistry.register(dirtChestBlock = new BlockDirtChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
- }
+ blockRegistry.register(ironChestBlock = new BlockIronChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(goldChestBlock = new BlockGoldChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(diamondChestBlock = new BlockDiamondChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(copperChestBlock = new BlockCopperChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(silverChestBlock = new BlockSilverChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(crystalChestBlock = new BlockCrystalChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(obsidianChestBlock = new BlockObsidianChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ blockRegistry.register(dirtChestBlock = new BlockDirtChest(Block.Builder.create(Material.IRON).hardnessAndResistance(3.0F, 3.0F)));
+ }
- @SubscribeEvent
- public void registerItems(final RegistryEvent.Register- event)
- {
- IForgeRegistry
- itemRegistry = event.getRegistry();
+ @SubscribeEvent
+ public static void registerItems(final RegistryEvent.Register
- event)
+ {
+ IForgeRegistry
- itemRegistry = event.getRegistry();
- itemBuilder = (new Builder()).group(IronChestCreativeTabs.IRON_CHESTS).setTEISR(() -> TileEntityIronChestItemRenderer::new);
+ itemBuilder = (new Builder()).group(IronChestCreativeTabs.IRON_CHESTS).setTEISR(() -> TileEntityIronChestItemRenderer::new);
- itemRegistry.register(ironChestItemBlock = new ItemChest(ironChestBlock, itemBuilder));
- itemRegistry.register(goldChestItemBlock = new ItemChest(goldChestBlock, itemBuilder));
- itemRegistry.register(diamondChestItemBlock = new ItemChest(diamondChestBlock, itemBuilder));
- itemRegistry.register(copperChestItemBlock = new ItemChest(copperChestBlock, itemBuilder));
- itemRegistry.register(silverChestItemBlock = new ItemChest(silverChestBlock, itemBuilder));
- itemRegistry.register(crystalChestItemBlock = new ItemChest(crystalChestBlock, itemBuilder));
- itemRegistry.register(obsidianChestItemBlock = new ItemChest(obsidianChestBlock, itemBuilder));
- itemRegistry.register(dirtChestItemBlock = new ItemChest(dirtChestBlock, itemBuilder));
+ itemRegistry.register(ironChestItemBlock = new ItemChest(ironChestBlock, itemBuilder));
+ itemRegistry.register(goldChestItemBlock = new ItemChest(goldChestBlock, itemBuilder));
+ itemRegistry.register(diamondChestItemBlock = new ItemChest(diamondChestBlock, itemBuilder));
+ itemRegistry.register(copperChestItemBlock = new ItemChest(copperChestBlock, itemBuilder));
+ itemRegistry.register(silverChestItemBlock = new ItemChest(silverChestBlock, itemBuilder));
+ itemRegistry.register(crystalChestItemBlock = new ItemChest(crystalChestBlock, itemBuilder));
+ itemRegistry.register(obsidianChestItemBlock = new ItemChest(obsidianChestBlock, itemBuilder));
+ itemRegistry.register(dirtChestItemBlock = new ItemChest(dirtChestBlock, itemBuilder));
+ }
}
}
diff --git a/src/main/java/cpw/mods/ironchest/common/core/IronChestItems.java b/src/main/java/cpw/mods/ironchest/common/core/IronChestItems.java
index 44d53f7..d7dddcf 100644
--- a/src/main/java/cpw/mods/ironchest/common/core/IronChestItems.java
+++ b/src/main/java/cpw/mods/ironchest/common/core/IronChestItems.java
@@ -1,11 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
package cpw.mods.ironchest.common.core;
+import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.items.ChestChangerType;
import cpw.mods.ironchest.common.items.ItemChestChanger;
import net.minecraft.item.Item;
import net.minecraft.item.Item.Builder;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.IForgeRegistry;
public class IronChestItems
@@ -35,21 +47,25 @@ public class IronChestItems
}
- @SubscribeEvent
- public void registerItems(final RegistryEvent.Register- event)
+ @Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
+ public static class Registration
{
- IForgeRegistry
- itemRegistry = event.getRegistry();
+ @SubscribeEvent
+ public static void registerItems(final RegistryEvent.Register
- event)
+ {
+ IForgeRegistry
- itemRegistry = event.getRegistry();
- itemBuilder = (new Builder()).group(IronChestCreativeTabs.IRON_CHESTS).maxStackSize(1);
+ itemBuilder = (new Builder()).group(IronChestCreativeTabs.IRON_CHESTS).maxStackSize(1);
- itemRegistry.register(ironToGoldUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.IRON_GOLD));
- itemRegistry.register(goldToDiamondUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.GOLD_DIAMOND));
- itemRegistry.register(copperToSilverUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.COPPER_SILVER));
- itemRegistry.register(silverToGoldUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.SILVER_GOLD));
- itemRegistry.register(copperToIronUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.COPPER_IRON));
- itemRegistry.register(diamondToCrystalUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.DIAMOND_CRYSTAL));
- itemRegistry.register(woodToIronUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_IRON));
- itemRegistry.register(woodToCopperUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_COPPER));
- itemRegistry.register(diamondToObsidianUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.DIAMOND_OBSIDIAN));
+ itemRegistry.register(ironToGoldUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.IRON_GOLD));
+ itemRegistry.register(goldToDiamondUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.GOLD_DIAMOND));
+ itemRegistry.register(copperToSilverUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.COPPER_SILVER));
+ itemRegistry.register(silverToGoldUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.SILVER_GOLD));
+ itemRegistry.register(copperToIronUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.COPPER_IRON));
+ itemRegistry.register(diamondToCrystalUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.DIAMOND_CRYSTAL));
+ itemRegistry.register(woodToIronUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_IRON));
+ itemRegistry.register(woodToCopperUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_COPPER));
+ itemRegistry.register(diamondToObsidianUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.DIAMOND_OBSIDIAN));
+ }
}
}
diff --git a/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java b/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
index edf9966..8d67f8b 100644
--- a/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
+++ b/src/main/java/cpw/mods/ironchest/common/items/ChestChangerType.java
@@ -12,10 +12,7 @@ package cpw.mods.ironchest.common.items;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.blocks.IronChestType;
-import cpw.mods.ironchest.common.core.IronChestCreativeTabs;
-import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.registries.IForgeRegistry;
import static cpw.mods.ironchest.common.blocks.IronChestType.COPPER;
import static cpw.mods.ironchest.common.blocks.IronChestType.CRYSTAL;
diff --git a/src/main/java/cpw/mods/ironchest/common/items/ItemChestChanger.java b/src/main/java/cpw/mods/ironchest/common/items/ItemChestChanger.java
index 9af4b50..5c812bf 100644
--- a/src/main/java/cpw/mods/ironchest/common/items/ItemChestChanger.java
+++ b/src/main/java/cpw/mods/ironchest/common/items/ItemChestChanger.java
@@ -127,8 +127,6 @@ public class ItemChestChanger extends ItemTooltip
IBlockState iBlockState = IronChestType.get(this.type.target).with(BlockIronChest.FACING, chestFacing);
- System.out.println(iBlockState);
-
world.setTileEntity(blockPos, newChest);
world.setBlockState(blockPos, iBlockState, 3);
diff --git a/src/main/java/cpw/mods/ironchest/common/network/PacketHandler.java b/src/main/java/cpw/mods/ironchest/common/network/PacketHandler.java
new file mode 100644
index 0000000..5e359f9
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/network/PacketHandler.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.network;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.network.packets.PacketTopStackSyncChest;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.common.util.FakePlayer;
+import net.minecraftforge.fml.network.NetworkDirection;
+import net.minecraftforge.fml.network.NetworkRegistry;
+import net.minecraftforge.fml.network.simple.SimpleChannel;
+
+public final class PacketHandler
+{
+ private static final String PROTOCOL_VERSION = Integer.toString(1);
+
+ private static final SimpleChannel HANDLER = NetworkRegistry.ChannelBuilder.named(new ResourceLocation(IronChest.MOD_ID, "main_channel"))
+ .clientAcceptedVersions(PROTOCOL_VERSION::equals)
+ .serverAcceptedVersions(PROTOCOL_VERSION::equals)
+ .networkProtocolVersion(() -> PROTOCOL_VERSION)
+ .simpleChannel();
+
+ public static void register()
+ {
+ int disc = 0;
+
+ HANDLER.registerMessage(disc++, PacketTopStackSyncChest.class, PacketTopStackSyncChest::encode, PacketTopStackSyncChest::decode,
+ PacketTopStackSyncChest.Handler::handle);
+ }
+
+ public static void sendTo(Object msg, EntityPlayerMP player)
+ {
+ if (!(player instanceof FakePlayer))
+ {
+ HANDLER.sendTo(msg, player.connection.netManager, NetworkDirection.PLAY_TO_CLIENT);
+ }
+ }
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/network/packets/PacketTopStackSyncChest.java b/src/main/java/cpw/mods/ironchest/common/network/packets/PacketTopStackSyncChest.java
new file mode 100644
index 0000000..0946040
--- /dev/null
+++ b/src/main/java/cpw/mods/ironchest/common/network/packets/PacketTopStackSyncChest.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2012 cpw.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Contributors:
+ * cpw - initial API and implementation
+ ******************************************************************************/
+package cpw.mods.ironchest.common.network.packets;
+
+import cpw.mods.ironchest.IronChest;
+import cpw.mods.ironchest.common.tileentity.TileEntityCrystalChest;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.PacketBuffer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.network.NetworkEvent;
+
+import java.util.function.Supplier;
+
+public class PacketTopStackSyncChest
+{
+ private final int dimension;
+
+ private final BlockPos pos;
+
+ private final NonNullList topStacks;
+
+ public PacketTopStackSyncChest(int dimension, BlockPos pos, NonNullList topStacks)
+ {
+ this.dimension = dimension;
+ this.pos = pos;
+ this.topStacks = topStacks;
+ }
+
+ public static void encode(PacketTopStackSyncChest msg, PacketBuffer buf)
+ {
+ buf.writeInt(msg.dimension);
+ buf.writeInt(msg.pos.getX());
+ buf.writeInt(msg.pos.getY());
+ buf.writeInt(msg.pos.getZ());
+ buf.writeInt(msg.topStacks.size());
+
+ for (ItemStack stack : msg.topStacks)
+ {
+ buf.writeItemStack(stack);
+ }
+ }
+
+ public static PacketTopStackSyncChest decode(PacketBuffer buf)
+ {
+ int dimension = buf.readInt();
+ BlockPos pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
+
+ int size = buf.readInt();
+ NonNullList topStacks = NonNullList.withSize(size, ItemStack.EMPTY);
+
+ for (int item = 0; item < size; item++)
+ {
+ ItemStack itemStack = buf.readItemStack();
+
+ topStacks.set(item, itemStack);
+ }
+
+ return new PacketTopStackSyncChest(dimension, pos, topStacks);
+ }
+
+ public static class Handler
+ {
+ public static void handle(final PacketTopStackSyncChest message, Supplier ctx)
+ {
+ ctx.get().enqueueWork(() -> {
+ World world = IronChest.proxy.getClientWorld();
+
+ if (world != null)
+ {
+ TileEntity tile = world.getTileEntity(message.pos);
+
+ if (tile instanceof TileEntityCrystalChest)
+ {
+ ((TileEntityCrystalChest) tile).receiveMessageFromServer(message.topStacks);
+ }
+ }
+ });
+ }
+ }
+
+}
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/IronChestEntityType.java b/src/main/java/cpw/mods/ironchest/common/tileentity/IronChestEntityType.java
index c9d78c2..c4c15c2 100644
--- a/src/main/java/cpw/mods/ironchest/common/tileentity/IronChestEntityType.java
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/IronChestEntityType.java
@@ -12,6 +12,7 @@ package cpw.mods.ironchest.common.tileentity;
import com.mojang.datafixers.DataFixUtils;
import com.mojang.datafixers.types.Type;
+import cpw.mods.ironchest.IronChest;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
@@ -20,7 +21,7 @@ import net.minecraft.util.datafix.DataFixesManager;
import net.minecraft.util.datafix.TypeReferences;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
-import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
@@ -47,64 +48,29 @@ public class IronChestEntityType
}
- @SuppressWarnings("unchecked")
- public void registerTileEntities()
+ @Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
+ public static class Registration
{
- IForgeRegistry e = GameRegistry.findRegistry(TileEntityType.class);
- registerTileEntityType(e, register("iron_chest", TileEntityType.Builder.create(TileEntityIronChest::new)), "iron_chest");
- registerTileEntityType(e, register("gold_chest", TileEntityType.Builder.create(TileEntityGoldChest::new)), "gold_chest");
- registerTileEntityType(e, register("diamond_chest", TileEntityType.Builder.create(TileEntityDiamondChest::new)), "diamond_chest");
- registerTileEntityType(e, register("crystal_chest", TileEntityType.Builder.create(TileEntityCrystalChest::new)), "crystal_chest");
- registerTileEntityType(e, register("dirt_chest", TileEntityType.Builder.create(TileEntityDirtChest::new)), "dirt_chest");
- registerTileEntityType(e, register("copper_chest", TileEntityType.Builder.create(TileEntityCopperChest::new)), "copper_chest");
- registerTileEntityType(e, register("silver_chest", TileEntityType.Builder.create(TileEntitySilverChest::new)), "silver_chest");
- registerTileEntityType(e, register("obsidian_chest", TileEntityType.Builder.create(TileEntityObsidianChest::new)), "obsidian_chest");
- }
-
- @SubscribeEvent
- public void onTileEntityRegistry(final RegistryEvent.Register> e)
- {
- System.out.println("hello from onTileEntityRegistry");
- IronChestEntityType.IRON_CHEST = registerTileEntityType(e.getRegistry(),
- register("iron_chest", TileEntityType.Builder.create(TileEntityIronChest::new)), "iron_chest");
- IronChestEntityType.GOLD_CHEST = registerTileEntityType(e.getRegistry(),
- register("gold_chest", TileEntityType.Builder.create(TileEntityGoldChest::new)), "gold_chest");
- IronChestEntityType.DIAMOND_CHEST = registerTileEntityType(e.getRegistry(),
- register("diamond_chest", TileEntityType.Builder.create(TileEntityDiamondChest::new)), "diamond_chest");
- IronChestEntityType.CRYSTAL_CHEST = registerTileEntityType(e.getRegistry(),
- register("crystal_chest", TileEntityType.Builder.create(TileEntityCrystalChest::new)), "crystal_chest");
- IronChestEntityType.DIRT_CHEST = registerTileEntityType(e.getRegistry(),
- register("dirt_chest", TileEntityType.Builder.create(TileEntityDirtChest::new)), "dirt_chest");
- IronChestEntityType.COPPER_CHEST = registerTileEntityType(e.getRegistry(),
- register("copper_chest", TileEntityType.Builder.create(TileEntityCopperChest::new)), "copper_chest");
- IronChestEntityType.SILVER_CHEST = registerTileEntityType(e.getRegistry(),
- register("silver_chest", TileEntityType.Builder.create(TileEntitySilverChest::new)), "silver_chest");
- IronChestEntityType.OBSIDIAN_CHEST = registerTileEntityType(e.getRegistry(),
- register("obsidian_chest", TileEntityType.Builder.create(TileEntityObsidianChest::new)), "obsidian_chest");
-
- IronChestEntityType.IRON_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "iron_chest"));
- IronChestEntityType.GOLD_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "gold_chest"));
- IronChestEntityType.DIAMOND_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "diamond_chest"));
- IronChestEntityType.CRYSTAL_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "crystal_chest"));
- IronChestEntityType.DIRT_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "dirt_chest"));
- IronChestEntityType.COPPER_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "copper_chest"));
- IronChestEntityType.SILVER_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "silver_chest"));
- IronChestEntityType.OBSIDIAN_CHEST = e.getRegistry().getValue(new ResourceLocation("ironchest", "obsidian_chest"));
- }
-
- @SuppressWarnings("unchecked")
- public void createEntries()
- {
- IForgeRegistry> e = GameRegistry.findRegistry(TileEntityType.class);
-
- IronChestEntityType.IRON_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "iron_chest"));
- IronChestEntityType.GOLD_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "gold_chest"));
- IronChestEntityType.DIAMOND_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "diamond_chest"));
- IronChestEntityType.CRYSTAL_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "crystal_chest"));
- IronChestEntityType.DIRT_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "dirt_chest"));
- IronChestEntityType.COPPER_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "copper_chest"));
- IronChestEntityType.SILVER_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "silver_chest"));
- IronChestEntityType.OBSIDIAN_CHEST = (TileEntityType>) e.getValue(new ResourceLocation("ironchest", "obsidian_chest"));
+ @SubscribeEvent
+ public static void onTileEntityRegistry(final RegistryEvent.Register> e)
+ {
+ IronChestEntityType.IRON_CHEST = registerTileEntityType(e.getRegistry(),
+ register("iron_chest", TileEntityType.Builder.create(TileEntityIronChest::new)), "iron_chest");
+ IronChestEntityType.GOLD_CHEST = registerTileEntityType(e.getRegistry(),
+ register("gold_chest", TileEntityType.Builder.create(TileEntityGoldChest::new)), "gold_chest");
+ IronChestEntityType.DIAMOND_CHEST = registerTileEntityType(e.getRegistry(),
+ register("diamond_chest", TileEntityType.Builder.create(TileEntityDiamondChest::new)), "diamond_chest");
+ IronChestEntityType.CRYSTAL_CHEST = registerTileEntityType(e.getRegistry(),
+ register("crystal_chest", TileEntityType.Builder.create(TileEntityCrystalChest::new)), "crystal_chest");
+ IronChestEntityType.DIRT_CHEST = registerTileEntityType(e.getRegistry(),
+ register("dirt_chest", TileEntityType.Builder.create(TileEntityDirtChest::new)), "dirt_chest");
+ IronChestEntityType.COPPER_CHEST = registerTileEntityType(e.getRegistry(),
+ register("copper_chest", TileEntityType.Builder.create(TileEntityCopperChest::new)), "copper_chest");
+ IronChestEntityType.SILVER_CHEST = registerTileEntityType(e.getRegistry(),
+ register("silver_chest", TileEntityType.Builder.create(TileEntitySilverChest::new)), "silver_chest");
+ IronChestEntityType.OBSIDIAN_CHEST = registerTileEntityType(e.getRegistry(),
+ register("obsidian_chest", TileEntityType.Builder.create(TileEntityObsidianChest::new)), "obsidian_chest");
+ }
}
protected static > T registerTileEntityType(IForgeRegistry> registry, T tileEntityType, String name)
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityCrystalChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityCrystalChest.java
index 85f877c..441a0a1 100644
--- a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityCrystalChest.java
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityCrystalChest.java
@@ -12,10 +12,14 @@ package cpw.mods.ironchest.common.tileentity;
import cpw.mods.ironchest.common.blocks.IronChestType;
import cpw.mods.ironchest.common.core.IronChestBlocks;
+import cpw.mods.ironchest.common.network.PacketHandler;
+import cpw.mods.ironchest.common.network.packets.PacketTopStackSyncChest;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
+import net.minecraftforge.fml.server.ServerLifecycleHooks;
import java.util.Collections;
import java.util.Comparator;
@@ -219,10 +223,22 @@ public class TileEntityCrystalChest extends TileEntityIronChest
protected void sendTopStacksPacket()
{
- //NonNullList stacks = this.buildItemStackDataList();
- //@formatter:off
- //IronChest.packetHandler.sendToAllAround(new MessageCrystalChestSync(this, stacks), new TargetPoint(world.provider.getDimension(), getPos().getX(), getPos().getY(), getPos().getZ(), 128));
- //@formatter:on
+ NonNullList stacks = this.buildItemStackDataList();
+
+ for (EntityPlayerMP player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers())
+ {
+ if (player.dimension == world.getDimension().getId())
+ {
+ double d4 = getPos().getX() - player.posX;
+ double d5 = getPos().getY() - player.posY;
+ double d6 = getPos().getZ() - player.posZ;
+
+ if (d4 * d4 + d5 * d5 + d6 * d6 < 16384)
+ {
+ PacketHandler.sendTo(new PacketTopStackSyncChest(this.getWorld().getDimension().getId(), this.getPos(), stacks), player);
+ }
+ }
+ }
}
public void receiveMessageFromServer(NonNullList topStacks)
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityDirtChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityDirtChest.java
index 56bec1a..19efa5f 100644
--- a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityDirtChest.java
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityDirtChest.java
@@ -30,11 +30,6 @@ public class TileEntityDirtChest extends TileEntityIronChest
public TileEntityDirtChest()
{
super(IronChestEntityType.DIRT_CHEST, IronChestType.DIRTCHEST9000, IronChestBlocks.dirtChestBlock);
-
- if (!bookDataCreated)
- {
- createBookData();
- }
}
@Override
@@ -44,6 +39,11 @@ public class TileEntityDirtChest extends TileEntityIronChest
{
this.setInventorySlotContents(0, dirtChest9000GuideBook.copy());
}
+
+ if (!bookDataCreated)
+ {
+ createBookData();
+ }
}
@Override
diff --git a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityIronChest.java
index 3afd372..4fd8fc7 100644
--- a/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityIronChest.java
+++ b/src/main/java/cpw/mods/ironchest/common/tileentity/TileEntityIronChest.java
@@ -62,6 +62,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements IChes
private int ticksSinceSync;
private IronChestType chestType;
+
private Block blockToUse;
public TileEntityIronChest()
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index c8cc7dc..929188d 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -2,12 +2,12 @@ modLoader="javafml"
loaderVersion="[24,)"
issueTrackerURL="https://github.com/progwml6/ironchest/issues"
displayURL="https://minecraft.curseforge.com/projects/iron-chests"
-authors="CPW, alexbegt, progwml6"
[[mods]]
modId="ironchest"
version="${version}"
displayName="Iron Chests"
+ authors="cpw,alexbegt,progwml6"
description='''
New chests with larger sizes, with in-place upgrade items.
The feature chest is the crystal chest, which is transparent - some inventory contents are visible without opening the chest