Update to the latest forge, Implement the packet to sync the topstacks of the crystal chests, move to EventBusSubscriber for all registration, and make sure all classes have CPWs copyright on them.
TODO: Move to @ObjectHolder.
This commit is contained in:
parent
5eee1e224c
commit
620a6b3e1d
24
build.gradle
24
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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
* <p>
|
||||
* Contributors:
|
||||
* cpw - initial API and implementation
|
||||
******************************************************************************/
|
||||
package cpw.mods.ironchest.client.renderer;
|
||||
|
||||
import cpw.mods.ironchest.common.blocks.BlockChest;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Block> event)
|
||||
@Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
|
||||
public static class Registration
|
||||
{
|
||||
IForgeRegistry<Block> blockRegistry = event.getRegistry();
|
||||
@SubscribeEvent
|
||||
public static void registerBlocks(final RegistryEvent.Register<Block> event)
|
||||
{
|
||||
IForgeRegistry<Block> 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<Item> event)
|
||||
{
|
||||
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
||||
@SubscribeEvent
|
||||
public static void registerItems(final RegistryEvent.Register<Item> event)
|
||||
{
|
||||
IForgeRegistry<Item> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
* <p>
|
||||
* 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<Item> event)
|
||||
@Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
|
||||
public static class Registration
|
||||
{
|
||||
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
||||
@SubscribeEvent
|
||||
public static void registerItems(final RegistryEvent.Register<Item> event)
|
||||
{
|
||||
IForgeRegistry<Item> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
* <p>
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
* <p>
|
||||
* 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<ItemStack> topStacks;
|
||||
|
||||
public PacketTopStackSyncChest(int dimension, BlockPos pos, NonNullList<ItemStack> 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<ItemStack> topStacks = NonNullList.<ItemStack>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<NetworkEvent.Context> 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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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<TileEntityType<?>> 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<TileEntityType<?>> 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 extends TileEntityType<?>> T registerTileEntityType(IForgeRegistry<TileEntityType<?>> registry, T tileEntityType, String name)
|
||||
|
|
|
@ -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<ItemStack> 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<ItemStack> 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<ItemStack> topStacks)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -62,6 +62,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements IChes
|
|||
private int ticksSinceSync;
|
||||
|
||||
private IronChestType chestType;
|
||||
|
||||
private Block blockToUse;
|
||||
|
||||
public TileEntityIronChest()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue