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.
|
// This is our actual project within the group. Note: FML has "fml" here. But this is ironchest.
|
||||||
archivesBaseName = "ironchest"
|
archivesBaseName = "ironchest"
|
||||||
|
|
||||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
|
||||||
compileJava {
|
|
||||||
sourceCompatibility = targetCompatibility = '1.8'
|
|
||||||
}
|
|
||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
mappings channel: 'snapshot', version: mappings_version
|
mappings channel: 'snapshot', version: mappings_version
|
||||||
|
|
||||||
runs {
|
runs {
|
||||||
client = {
|
client = {
|
||||||
main "net.minecraftforge.userdev.UserdevLauncher"
|
|
||||||
workingDirectory = project.file("run").canonicalPath
|
workingDirectory = project.file("run").canonicalPath
|
||||||
environment "target", "fmluserdevclient"
|
source sourceSets.main
|
||||||
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)}"
|
|
||||||
}
|
}
|
||||||
server = {
|
server = {
|
||||||
main "net.minecraftforge.userdev.UserdevLauncher"
|
|
||||||
workingDirectory = project.file("run").canonicalPath
|
workingDirectory = project.file("run").canonicalPath
|
||||||
environment "target", "fmluserdevserver"
|
source sourceSets.main
|
||||||
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)}"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft 'net.minecraftforge.test:forge:' + minecraft_version + '-' + forge_version
|
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
|
// 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
|
minecraft_version_toml=13
|
||||||
|
|
||||||
# Forge Version Information
|
# Forge Version Information
|
||||||
forge_version=24.0.61-1.13-pre
|
forge_version=24.0.81-1.13-pre
|
||||||
forge_version_toml=24
|
forge_version_toml=24
|
||||||
forge_group=net.minecraftforge.test
|
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.ServerProxy;
|
||||||
import cpw.mods.ironchest.common.ai.OcelotsSitOnChestsHandler;
|
import cpw.mods.ironchest.common.ai.OcelotsSitOnChestsHandler;
|
||||||
import cpw.mods.ironchest.common.blocks.BlockChest;
|
import cpw.mods.ironchest.common.blocks.BlockChest;
|
||||||
import cpw.mods.ironchest.common.core.IronChestBlocks;
|
import cpw.mods.ironchest.common.network.PacketHandler;
|
||||||
import cpw.mods.ironchest.common.core.IronChestItems;
|
|
||||||
import cpw.mods.ironchest.common.tileentity.IronChestEntityType;
|
|
||||||
import cpw.mods.ironchest.common.util.BlockNames;
|
import cpw.mods.ironchest.common.util.BlockNames;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -24,7 +22,7 @@ import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
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;
|
import net.minecraftforge.fml.javafmlmod.FMLModLoadingContext;
|
||||||
|
|
||||||
@Mod(value = IronChest.MOD_ID)
|
@Mod(value = IronChest.MOD_ID)
|
||||||
|
@ -38,19 +36,14 @@ public class IronChest
|
||||||
|
|
||||||
public static ServerProxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> ServerProxy::new);
|
public static ServerProxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> ServerProxy::new);
|
||||||
|
|
||||||
public IronChestEntityType ironChestEntityType = new IronChestEntityType();
|
|
||||||
|
|
||||||
public IronChest()
|
public IronChest()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
FMLModLoadingContext.get().getModEventBus().addListener(this::preInit);
|
FMLModLoadingContext.get().getModEventBus().addListener(this::preInit);
|
||||||
MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler());
|
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();
|
proxy.preInit();
|
||||||
|
|
||||||
|
@ -59,8 +52,7 @@ public class IronChest
|
||||||
debugPrints();
|
debugPrints();
|
||||||
}
|
}
|
||||||
|
|
||||||
ironChestEntityType.registerTileEntities();
|
PacketHandler.register();
|
||||||
ironChestEntityType.createEntries();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void debugPrints()
|
private void debugPrints()
|
||||||
|
|
|
@ -13,6 +13,8 @@ package cpw.mods.ironchest.client;
|
||||||
import cpw.mods.ironchest.client.renderer.TileEntityIronChestRenderer;
|
import cpw.mods.ironchest.client.renderer.TileEntityIronChestRenderer;
|
||||||
import cpw.mods.ironchest.common.ServerProxy;
|
import cpw.mods.ironchest.common.ServerProxy;
|
||||||
import cpw.mods.ironchest.common.blocks.IronChestType;
|
import cpw.mods.ironchest.common.blocks.IronChestType;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||||
|
|
||||||
public class ClientProxy extends ServerProxy
|
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;
|
package cpw.mods.ironchest.client.renderer;
|
||||||
|
|
||||||
import cpw.mods.ironchest.common.blocks.BlockChest;
|
import cpw.mods.ironchest.common.blocks.BlockChest;
|
||||||
|
|
|
@ -10,10 +10,16 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package cpw.mods.ironchest.common;
|
package cpw.mods.ironchest.common;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class ServerProxy
|
public class ServerProxy
|
||||||
{
|
{
|
||||||
public void preInit()
|
public void preInit()
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public World getClientWorld()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package cpw.mods.ironchest.common.core;
|
package cpw.mods.ironchest.common.core;
|
||||||
|
|
||||||
|
import cpw.mods.ironchest.IronChest;
|
||||||
import cpw.mods.ironchest.client.renderer.TileEntityIronChestItemRenderer;
|
import cpw.mods.ironchest.client.renderer.TileEntityIronChestItemRenderer;
|
||||||
import cpw.mods.ironchest.common.blocks.BlockChest;
|
import cpw.mods.ironchest.common.blocks.BlockChest;
|
||||||
import cpw.mods.ironchest.common.blocks.BlockCopperChest;
|
import cpw.mods.ironchest.common.blocks.BlockCopperChest;
|
||||||
|
@ -27,6 +28,7 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.Item.Builder;
|
import net.minecraft.item.Item.Builder;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.registries.IForgeRegistry;
|
import net.minecraftforge.registries.IForgeRegistry;
|
||||||
|
|
||||||
public class IronChestBlocks
|
public class IronChestBlocks
|
||||||
|
@ -70,8 +72,11 @@ public class IronChestBlocks
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
|
||||||
|
public static class Registration
|
||||||
|
{
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void registerBlocks(final RegistryEvent.Register<Block> event)
|
public static void registerBlocks(final RegistryEvent.Register<Block> event)
|
||||||
{
|
{
|
||||||
IForgeRegistry<Block> blockRegistry = event.getRegistry();
|
IForgeRegistry<Block> blockRegistry = event.getRegistry();
|
||||||
|
|
||||||
|
@ -86,7 +91,7 @@ public class IronChestBlocks
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void registerItems(final RegistryEvent.Register<Item> event)
|
public static void registerItems(final RegistryEvent.Register<Item> event)
|
||||||
{
|
{
|
||||||
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
||||||
|
|
||||||
|
@ -101,4 +106,5 @@ public class IronChestBlocks
|
||||||
itemRegistry.register(obsidianChestItemBlock = new ItemChest(obsidianChestBlock, itemBuilder));
|
itemRegistry.register(obsidianChestItemBlock = new ItemChest(obsidianChestBlock, itemBuilder));
|
||||||
itemRegistry.register(dirtChestItemBlock = new ItemChest(dirtChestBlock, 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;
|
package cpw.mods.ironchest.common.core;
|
||||||
|
|
||||||
|
import cpw.mods.ironchest.IronChest;
|
||||||
import cpw.mods.ironchest.common.items.ChestChangerType;
|
import cpw.mods.ironchest.common.items.ChestChangerType;
|
||||||
import cpw.mods.ironchest.common.items.ItemChestChanger;
|
import cpw.mods.ironchest.common.items.ItemChestChanger;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.Item.Builder;
|
import net.minecraft.item.Item.Builder;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.registries.IForgeRegistry;
|
import net.minecraftforge.registries.IForgeRegistry;
|
||||||
|
|
||||||
public class IronChestItems
|
public class IronChestItems
|
||||||
|
@ -35,8 +47,11 @@ public class IronChestItems
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
|
||||||
|
public static class Registration
|
||||||
|
{
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void registerItems(final RegistryEvent.Register<Item> event)
|
public static void registerItems(final RegistryEvent.Register<Item> event)
|
||||||
{
|
{
|
||||||
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
IForgeRegistry<Item> itemRegistry = event.getRegistry();
|
||||||
|
|
||||||
|
@ -52,4 +67,5 @@ public class IronChestItems
|
||||||
itemRegistry.register(woodToCopperUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_COPPER));
|
itemRegistry.register(woodToCopperUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.WOOD_COPPER));
|
||||||
itemRegistry.register(diamondToObsidianUpgrade = new ItemChestChanger(itemBuilder, ChestChangerType.DIAMOND_OBSIDIAN));
|
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.IronChest;
|
||||||
import cpw.mods.ironchest.common.blocks.IronChestType;
|
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.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.COPPER;
|
||||||
import static cpw.mods.ironchest.common.blocks.IronChestType.CRYSTAL;
|
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);
|
IBlockState iBlockState = IronChestType.get(this.type.target).with(BlockIronChest.FACING, chestFacing);
|
||||||
|
|
||||||
System.out.println(iBlockState);
|
|
||||||
|
|
||||||
world.setTileEntity(blockPos, newChest);
|
world.setTileEntity(blockPos, newChest);
|
||||||
world.setBlockState(blockPos, iBlockState, 3);
|
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.DataFixUtils;
|
||||||
import com.mojang.datafixers.types.Type;
|
import com.mojang.datafixers.types.Type;
|
||||||
|
import cpw.mods.ironchest.IronChest;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.tileentity.TileEntityType;
|
import net.minecraft.tileentity.TileEntityType;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
@ -20,7 +21,7 @@ import net.minecraft.util.datafix.DataFixesManager;
|
||||||
import net.minecraft.util.datafix.TypeReferences;
|
import net.minecraft.util.datafix.TypeReferences;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
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.IForgeRegistry;
|
||||||
import net.minecraftforge.registries.IForgeRegistryEntry;
|
import net.minecraftforge.registries.IForgeRegistryEntry;
|
||||||
|
|
||||||
|
@ -47,24 +48,12 @@ public class IronChestEntityType
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@Mod.EventBusSubscriber(modid = IronChest.MOD_ID)
|
||||||
public void registerTileEntities()
|
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
|
@SubscribeEvent
|
||||||
public void onTileEntityRegistry(final RegistryEvent.Register<TileEntityType<?>> e)
|
public static void onTileEntityRegistry(final RegistryEvent.Register<TileEntityType<?>> e)
|
||||||
{
|
{
|
||||||
System.out.println("hello from onTileEntityRegistry");
|
|
||||||
IronChestEntityType.IRON_CHEST = registerTileEntityType(e.getRegistry(),
|
IronChestEntityType.IRON_CHEST = registerTileEntityType(e.getRegistry(),
|
||||||
register("iron_chest", TileEntityType.Builder.create(TileEntityIronChest::new)), "iron_chest");
|
register("iron_chest", TileEntityType.Builder.create(TileEntityIronChest::new)), "iron_chest");
|
||||||
IronChestEntityType.GOLD_CHEST = registerTileEntityType(e.getRegistry(),
|
IronChestEntityType.GOLD_CHEST = registerTileEntityType(e.getRegistry(),
|
||||||
|
@ -81,30 +70,7 @@ public class IronChestEntityType
|
||||||
register("silver_chest", TileEntityType.Builder.create(TileEntitySilverChest::new)), "silver_chest");
|
register("silver_chest", TileEntityType.Builder.create(TileEntitySilverChest::new)), "silver_chest");
|
||||||
IronChestEntityType.OBSIDIAN_CHEST = registerTileEntityType(e.getRegistry(),
|
IronChestEntityType.OBSIDIAN_CHEST = registerTileEntityType(e.getRegistry(),
|
||||||
register("obsidian_chest", TileEntityType.Builder.create(TileEntityObsidianChest::new)), "obsidian_chest");
|
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"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static <T extends TileEntityType<?>> T registerTileEntityType(IForgeRegistry<TileEntityType<?>> registry, T tileEntityType, String name)
|
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.blocks.IronChestType;
|
||||||
import cpw.mods.ironchest.common.core.IronChestBlocks;
|
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.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
|
import net.minecraftforge.fml.server.ServerLifecycleHooks;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
@ -219,10 +223,22 @@ public class TileEntityCrystalChest extends TileEntityIronChest
|
||||||
|
|
||||||
protected void sendTopStacksPacket()
|
protected void sendTopStacksPacket()
|
||||||
{
|
{
|
||||||
//NonNullList<ItemStack> stacks = this.buildItemStackDataList();
|
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));
|
for (EntityPlayerMP player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers())
|
||||||
//@formatter:on
|
{
|
||||||
|
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)
|
public void receiveMessageFromServer(NonNullList<ItemStack> topStacks)
|
||||||
|
|
|
@ -30,11 +30,6 @@ public class TileEntityDirtChest extends TileEntityIronChest
|
||||||
public TileEntityDirtChest()
|
public TileEntityDirtChest()
|
||||||
{
|
{
|
||||||
super(IronChestEntityType.DIRT_CHEST, IronChestType.DIRTCHEST9000, IronChestBlocks.dirtChestBlock);
|
super(IronChestEntityType.DIRT_CHEST, IronChestType.DIRTCHEST9000, IronChestBlocks.dirtChestBlock);
|
||||||
|
|
||||||
if (!bookDataCreated)
|
|
||||||
{
|
|
||||||
createBookData();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,6 +39,11 @@ public class TileEntityDirtChest extends TileEntityIronChest
|
||||||
{
|
{
|
||||||
this.setInventorySlotContents(0, dirtChest9000GuideBook.copy());
|
this.setInventorySlotContents(0, dirtChest9000GuideBook.copy());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!bookDataCreated)
|
||||||
|
{
|
||||||
|
createBookData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -62,6 +62,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements IChes
|
||||||
private int ticksSinceSync;
|
private int ticksSinceSync;
|
||||||
|
|
||||||
private IronChestType chestType;
|
private IronChestType chestType;
|
||||||
|
|
||||||
private Block blockToUse;
|
private Block blockToUse;
|
||||||
|
|
||||||
public TileEntityIronChest()
|
public TileEntityIronChest()
|
||||||
|
|
|
@ -2,12 +2,12 @@ modLoader="javafml"
|
||||||
loaderVersion="[24,)"
|
loaderVersion="[24,)"
|
||||||
issueTrackerURL="https://github.com/progwml6/ironchest/issues"
|
issueTrackerURL="https://github.com/progwml6/ironchest/issues"
|
||||||
displayURL="https://minecraft.curseforge.com/projects/iron-chests"
|
displayURL="https://minecraft.curseforge.com/projects/iron-chests"
|
||||||
authors="CPW, alexbegt, progwml6"
|
|
||||||
|
|
||||||
[[mods]]
|
[[mods]]
|
||||||
modId="ironchest"
|
modId="ironchest"
|
||||||
version="${version}"
|
version="${version}"
|
||||||
displayName="Iron Chests"
|
displayName="Iron Chests"
|
||||||
|
authors="cpw,alexbegt,progwml6"
|
||||||
description='''
|
description='''
|
||||||
New chests with larger sizes, with in-place upgrade items.
|
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
|
The feature chest is the crystal chest, which is transparent - some inventory contents are visible without opening the chest
|
||||||
|
|
Loading…
Reference in New Issue