Add Iron Shulker Boxes, which function just like regular shulker boxes but with all the extra features the chest variants have. This version of the mod also has a reorganized code package (still in cpw.mods.ironchest) and resources have been moved around.

This commit is contained in:
alexbegt 2017-06-11 12:50:47 -04:00
parent 82f9d7cf8f
commit 0ce5748dae
230 changed files with 5726 additions and 761 deletions

View File

@ -33,7 +33,7 @@ repositories {
} }
dependencies { dependencies {
deobfCompile "mezz.jei:jei_1.11.2:4.2.7.241" deobfCompile "mezz.jei:jei_1.11.2:4.3.5.277"
} }
// This is our group. I'm cpw.mods // This is our group. I'm cpw.mods
@ -43,8 +43,8 @@ archivesBaseName = "ironchest"
// Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here // Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here
minecraft { minecraft {
version = "1.11.2-13.20.0.2252" version = "1.11.2-13.20.0.2299"
mappings = "snapshot_20161118" mappings = "snapshot_20170519"
runDir = "run" runDir = "run"
} }

View File

@ -12,22 +12,23 @@ package cpw.mods.ironchest;
import java.util.Properties; import java.util.Properties;
import javax.annotation.Nonnull; import cpw.mods.ironchest.common.CommonProxy;
import cpw.mods.ironchest.common.ICContent;
import net.minecraft.block.Block; import cpw.mods.ironchest.common.network.MessageCrystalChestSync;
import net.minecraft.item.Item; import cpw.mods.ironchest.common.network.MessageCrystalShulkerSync;
import net.minecraft.util.ResourceLocation; import cpw.mods.ironchest.common.util.MissingMappingsHandler;
import cpw.mods.ironchest.common.util.OcelotsSitOnChestsHandler;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent; import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent.MissingMapping;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side;
@Mod(modid = IronChest.MOD_ID, name = "Iron Chests", dependencies = "required-after:forge@[13.19.0.2142,)", acceptedMinecraftVersions = "[1.11, 1.12)") @Mod(modid = IronChest.MOD_ID, name = "Iron Chests", dependencies = "required-after:forge@[13.19.0.2142,)", acceptedMinecraftVersions = "[1.11, 1.12)")
public class IronChest public class IronChest
@ -37,12 +38,10 @@ public class IronChest
@Instance(IronChest.MOD_ID) @Instance(IronChest.MOD_ID)
public static IronChest instance; public static IronChest instance;
@SidedProxy(clientSide = "cpw.mods.ironchest.client.ClientProxy", serverSide = "cpw.mods.ironchest.CommonProxy") @SidedProxy(clientSide = "cpw.mods.ironchest.client.ClientProxy", serverSide = "cpw.mods.ironchest.common.CommonProxy")
public static CommonProxy proxy; public static CommonProxy proxy;
public static BlockIronChest ironChestBlock; public static final SimpleNetworkWrapper packetHandler = NetworkRegistry.INSTANCE.newSimpleChannel(MOD_ID);
public static ItemIronChest ironChestItemBlock;
@EventHandler @EventHandler
public void preInit(FMLPreInitializationEvent event) public void preInit(FMLPreInitializationEvent event)
@ -55,122 +54,28 @@ public class IronChest
String minor = properties.getProperty("IronChest.build.minor.number"); String minor = properties.getProperty("IronChest.build.minor.number");
String rev = properties.getProperty("IronChest.build.revision.number"); String rev = properties.getProperty("IronChest.build.revision.number");
String build = properties.getProperty("IronChest.build.number"); String build = properties.getProperty("IronChest.build.number");
event.getModMetadata().version = String.format("%s.%s.%s build %s", major, minor, rev, build); event.getModMetadata().version = String.format("%s.%s.%s build %s", major, minor, rev, build);
} }
ChestChangerType.buildItems(); ICContent.preInit();
ironChestBlock = GameRegistry.register(new BlockIronChest());
ironChestItemBlock = GameRegistry.register(new ItemIronChest(ironChestBlock));
for (IronChestType typ : IronChestType.VALUES)
{
if (typ.clazz != null)
{
GameRegistry.registerTileEntity(typ.clazz, "IronChest." + typ.name());
}
}
IronChestType.registerBlocksAndRecipes(ironChestBlock);
ChestChangerType.generateRecipes();
NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy); NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
proxy.registerRenderInformation(); proxy.registerRenderInformation();
MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler()); MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler());
} }
@EventHandler
public void init(FMLInitializationEvent event)
{
int messageId = 0;
packetHandler.registerMessage(MessageCrystalChestSync.Handler.class, MessageCrystalChestSync.class, messageId++, Side.CLIENT);
packetHandler.registerMessage(MessageCrystalShulkerSync.Handler.class, MessageCrystalShulkerSync.class, messageId++, Side.CLIENT);
}
@EventHandler @EventHandler
public void onMissingMappings(FMLMissingMappingsEvent event) public void onMissingMappings(FMLMissingMappingsEvent event)
{ {
for (MissingMapping mapping : event.get()) MissingMappingsHandler.onMissingMappings(event);
{
if (mapping.resourceLocation.getResourceDomain().equals(IronChest.MOD_ID))
{
@Nonnull
String path = mapping.resourceLocation.getResourcePath();
if (path.endsWith("blockironchest"))
{
path = path.replace("blockironchest", "iron_chest");
ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
Block block = ForgeRegistries.BLOCKS.getValue(newRes);
if (block != null)
{
if (mapping.type == GameRegistry.Type.BLOCK)
{
mapping.remap(block);
}
else
{
mapping.remap(Item.getItemFromBlock(block));
}
}
}
if (path.endsWith("irongoldupgrade"))
{
path = path.replace("irongoldupgrade", "iron_gold_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("golddiamondupgrade"))
{
path = path.replace("golddiamondupgrade", "gold_diamond_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("coppersilverupgrade"))
{
path = path.replace("coppersilverupgrade", "copper_silver_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("silvergoldupgrade"))
{
path = path.replace("silvergoldupgrade", "silver_gold_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("copperironupgrade"))
{
path = path.replace("copperironupgrade", "copper_iron_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamondcrystalupgrade"))
{
path = path.replace("diamondcrystalupgrade", "diamond_crystal_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("woodironupgrade"))
{
path = path.replace("woodironupgrade", "wood_iron_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("woodcopperupgrade"))
{
path = path.replace("woodcopperupgrade", "wood_copper_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamondobsidianupgrade"))
{
path = path.replace("diamondobsidianupgrade", "diamond_obsidian_upgrade");
replaceUpgradeItem(path, mapping);
}
}
}
}
private static void replaceUpgradeItem(String path, MissingMapping mapping)
{
ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
Item item = ForgeRegistries.ITEMS.getValue(newRes);
if (item != null)
{
mapping.remap(item);
}
} }
} }

View File

@ -1,22 +0,0 @@
package cpw.mods.ironchest;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ValidatingSlot extends Slot
{
private IronChestType type;
public ValidatingSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition, IronChestType type)
{
super(inventoryIn, slotIndex, xPosition, yPosition);
this.type = type;
}
@Override
public boolean isItemValid(ItemStack stack)
{
return this.type.acceptsStack(stack);
}
}

View File

@ -10,11 +10,21 @@
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest.client; package cpw.mods.ironchest.client;
import cpw.mods.ironchest.ChestChangerType;
import cpw.mods.ironchest.CommonProxy;
import cpw.mods.ironchest.IronChest; import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.client.gui.chest.GUIChest;
import cpw.mods.ironchest.TileEntityIronChest; import cpw.mods.ironchest.client.gui.shulker.GUIShulkerChest;
import cpw.mods.ironchest.client.renderer.chest.TileEntityIronChestRenderer;
import cpw.mods.ironchest.client.renderer.shulker.TileEntityIronShulkerBoxRenderer;
import cpw.mods.ironchest.common.CommonProxy;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.items.ChestChangerType;
import cpw.mods.ironchest.common.items.ShulkerBoxChangerType;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -33,7 +43,8 @@ public class ClientProxy extends CommonProxy
@Override @Override
public void registerRenderInformation() public void registerRenderInformation()
{ {
Item chestItem = Item.getItemFromBlock(IronChest.ironChestBlock); // Chests Start
Item chestItem = Item.getItemFromBlock(ICContent.ironChestBlock);
for (IronChestType type : IronChestType.values()) for (IronChestType type : IronChestType.values())
{ {
@ -53,19 +64,60 @@ public class ClientProxy extends CommonProxy
ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_chest_upgrades"), "variant=" + type.itemName.toLowerCase())); ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_chest_upgrades"), "variant=" + type.itemName.toLowerCase()));
//@formatter:on //@formatter:on
} }
// Chests End
// Shulkers Start
for (Block shulker : ICContent.SHULKER_BLOCKS)
{
Item shulkerBoxItem = Item.getItemFromBlock(shulker);
for (IronShulkerBoxType type : IronShulkerBoxType.values())
{
if (type != IronShulkerBoxType.VANILLA)
{
//@formatter:off
ModelLoader.setCustomModelResourceLocation(shulkerBoxItem, type.ordinal(), new ModelResourceLocation(shulkerBoxItem.getRegistryName(), "variant=" + type.getName()));
//@formatter:on
}
}
}
for (IronShulkerBoxType type : IronShulkerBoxType.values())
{
ClientRegistry.bindTileEntitySpecialRenderer(type.clazz, new TileEntityIronShulkerBoxRenderer());
}
for (ShulkerBoxChangerType type : ShulkerBoxChangerType.VALUES)
{
//@formatter:off
ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_upgrades"), "variant=" + type.itemName.toLowerCase()));
//@formatter:on
}
// Shulker End
} }
@Override @Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
{ {
TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); TileEntity te = world.getTileEntity(new BlockPos(x, y, z));
if (te != null && te instanceof TileEntityIronChest) if (te != null && te instanceof TileEntityIronChest)
{ {
return GUIChest.GUI.buildGUI(IronChestType.values()[ID], player.inventory, (TileEntityIronChest) te); return GUIChest.GUI.buildGUI(IronChestType.values()[ID], player.inventory, (TileEntityIronChest) te);
} }
else if (te != null && te instanceof TileEntityIronShulkerBox)
{
return GUIShulkerChest.GUI.buildGUI(IronShulkerBoxType.values()[ID], player.inventory, (TileEntityIronShulkerBox) te);
}
else else
{ {
return null; return null;
} }
} }
@Override
public World getClientWorld()
{
return Minecraft.getMinecraft().world;
}
} }

View File

@ -8,11 +8,11 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest.client; package cpw.mods.ironchest.client.gui.chest;
import cpw.mods.ironchest.ContainerIronChest; import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.common.gui.chest.ContainerIronChest;
import cpw.mods.ironchest.TileEntityIronChest; import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -91,10 +91,12 @@ public class GUIChest extends GuiContainer
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{ {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
// new "bind tex"
this.mc.getTextureManager().bindTexture(this.type.guiResourceList.location); this.mc.getTextureManager().bindTexture(this.type.guiResourceList.location);
int x = (this.width - this.xSize) / 2; int x = (this.width - this.xSize) / 2;
int y = (this.height - this.ySize) / 2; int y = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize); this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
} }
} }

View File

@ -0,0 +1,102 @@
/*******************************************************************************
* 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.gui.shulker;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.ResourceLocation;
public class GUIShulkerChest extends GuiContainer
{
public enum ResourceList
{
//@formatter:off
IRON(new ResourceLocation("ironchest", "textures/gui/iron_container.png")),
COPPER(new ResourceLocation("ironchest", "textures/gui/copper_container.png")),
SILVER(new ResourceLocation("ironchest", "textures/gui/silver_container.png")),
GOLD(new ResourceLocation("ironchest", "textures/gui/gold_container.png")),
DIAMOND(new ResourceLocation("ironchest", "textures/gui/diamond_container.png"));
//@formatter:on
public final ResourceLocation location;
ResourceList(ResourceLocation loc)
{
this.location = loc;
}
}
public enum GUI
{
//@formatter:off
IRON(184, 202, ResourceList.IRON, IronShulkerBoxType.IRON),
GOLD(184, 256, ResourceList.GOLD, IronShulkerBoxType.GOLD),
DIAMOND(238, 256, ResourceList.DIAMOND, IronShulkerBoxType.DIAMOND),
COPPER(184, 184, ResourceList.COPPER, IronShulkerBoxType.COPPER),
SILVER(184, 238, ResourceList.SILVER, IronShulkerBoxType.SILVER),
CRYSTAL(238, 256, ResourceList.DIAMOND, IronShulkerBoxType.CRYSTAL),
OBSIDIAN(238, 256, ResourceList.DIAMOND,IronShulkerBoxType.OBSIDIAN);
//@formatter:on
private int xSize;
private int ySize;
private ResourceList guiResourceList;
private IronShulkerBoxType mainType;
GUI(int xSize, int ySize, ResourceList guiResourceList, IronShulkerBoxType mainType)
{
this.xSize = xSize;
this.ySize = ySize;
this.guiResourceList = guiResourceList;
this.mainType = mainType;
}
protected Container makeContainer(IInventory player, IInventory shulker)
{
return new ContainerIronShulkerBox(player, shulker, this.mainType, this.xSize, this.ySize);
}
public static GUIShulkerChest buildGUI(IronShulkerBoxType type, IInventory playerInventory, TileEntityIronShulkerBox shulkerInventory)
{
return new GUIShulkerChest(values()[shulkerInventory.getType().ordinal()], playerInventory, shulkerInventory);
}
}
private GUI type;
private GUIShulkerChest(GUI type, IInventory player, IInventory shulker)
{
super(type.makeContainer(player, shulker));
this.type = type;
this.xSize = type.xSize;
this.ySize = type.ySize;
this.allowUserInput = false;
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(this.type.guiResourceList.location);
int x = (this.width - this.xSize) / 2;
int y = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
}
}

View File

@ -8,16 +8,16 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest.client; package cpw.mods.ironchest.client.renderer.chest;
import java.util.Random; import java.util.Random;
import com.google.common.primitives.SignedBytes; import com.google.common.primitives.SignedBytes;
import cpw.mods.ironchest.BlockIronChest; import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.IronChest; import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.TileEntityIronChest; import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelChest; import net.minecraft.client.model.ModelChest;
@ -36,8 +36,9 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer<TileE
private ModelChest model; private ModelChest model;
private static float[][] shifts = { { 0.3F, 0.45F, 0.3F }, { 0.7F, 0.45F, 0.3F }, { 0.3F, 0.45F, 0.7F }, { 0.7F, 0.45F, 0.7F }, { 0.3F, 0.1F, 0.3F }, //@formatter:off
{ 0.7F, 0.1F, 0.3F }, { 0.3F, 0.1F, 0.7F }, { 0.7F, 0.1F, 0.7F }, { 0.5F, 0.32F, 0.5F } }; private static float[][] shifts = { { 0.3F, 0.45F, 0.3F }, { 0.7F, 0.45F, 0.3F }, { 0.3F, 0.45F, 0.7F }, { 0.7F, 0.45F, 0.7F }, { 0.3F, 0.1F, 0.3F }, { 0.7F, 0.1F, 0.3F }, { 0.3F, 0.1F, 0.7F }, { 0.7F, 0.1F, 0.7F }, { 0.5F, 0.32F, 0.5F } };
//@formatter:on
private static EntityItem customitem = new EntityItem(null); private static EntityItem customitem = new EntityItem(null);
@ -60,7 +61,7 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer<TileE
EnumFacing facing = EnumFacing.SOUTH; EnumFacing facing = EnumFacing.SOUTH;
IronChestType type = te.getType(); IronChestType type = te.getType();
if (te.hasWorld() && te.getWorld().getBlockState(te.getPos()).getBlock() == IronChest.ironChestBlock) if (te.hasWorld() && te.getWorld().getBlockState(te.getPos()).getBlock() == ICContent.ironChestBlock)
{ {
facing = te.getFacing(); facing = te.getFacing();
IBlockState state = te.getWorld().getBlockState(te.getPos()); IBlockState state = te.getWorld().getBlockState(te.getPos());
@ -203,8 +204,7 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer<TileE
if (this.itemRenderer == null) if (this.itemRenderer == null)
{ {
this.itemRenderer = new RenderEntityItem(Minecraft.getMinecraft().getRenderManager(), Minecraft.getMinecraft().getRenderItem()) this.itemRenderer = new RenderEntityItem(Minecraft.getMinecraft().getRenderManager(), Minecraft.getMinecraft().getRenderItem()) {
{
@Override @Override
public int getModelCount(ItemStack stack) public int getModelCount(ItemStack stack)
{ {

View File

@ -0,0 +1,238 @@
/*******************************************************************************
* 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.shulker;
import java.util.Random;
import com.google.common.primitives.SignedBytes;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelShulker;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderEntityItem;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
public class TileEntityIronShulkerBoxRenderer extends TileEntitySpecialRenderer<TileEntityIronShulkerBox>
{
private Random random;
private RenderEntityItem itemRenderer;
private final ModelShulker model;
//@formatter:off
private static float[][] shifts = { { 0.3F, 0.45F, 0.3F }, { 0.7F, 0.45F, 0.3F }, { 0.3F, 0.45F, 0.7F }, { 0.7F, 0.45F, 0.7F }, { 0.3F, 0.1F, 0.3F }, { 0.7F, 0.1F, 0.3F }, { 0.3F, 0.1F, 0.7F }, { 0.7F, 0.1F, 0.7F }, { 0.5F, 0.32F, 0.5F } };
//@formatter:on
private static EntityItem customitem = new EntityItem(null);
public TileEntityIronShulkerBoxRenderer()
{
this.model = new ModelShulker();
this.random = new Random();
}
@Override
public void renderTileEntityAt(TileEntityIronShulkerBox te, double x, double y, double z, float partialTicks, int destroyStage)
{
if (te == null || te.isInvalid())
{
return;
}
EnumFacing facing = EnumFacing.UP;
IronShulkerBoxType type = te.getType();
if (te.hasWorld())
{
IBlockState iblockstate = this.getWorld().getBlockState(te.getPos());
if (iblockstate.getBlock() instanceof BlockIronShulkerBox)
{
facing = te.getFacing();
type = iblockstate.getValue(BlockIronShulkerBox.VARIANT_PROP);
}
}
GlStateManager.enableDepth();
GlStateManager.depthFunc(515);
GlStateManager.depthMask(true);
GlStateManager.disableCull();
if (destroyStage >= 0)
{
this.bindTexture(DESTROY_STAGES[destroyStage]);
GlStateManager.matrixMode(5890);
GlStateManager.pushMatrix();
GlStateManager.scale(4.0F, 4.0F, 1.0F);
GlStateManager.translate(0.0625F, 0.0625F, 0.0625F);
GlStateManager.matrixMode(5888);
}
else
{
//@formatter:off
ResourceLocation rs = new ResourceLocation("ironchest", "textures/model/shulker/" + te.getColor().getName() + "/shulker_" + te.getColor().getName() + type.modelTexture);
//@formatter:on
this.bindTexture(rs);
}
GlStateManager.pushMatrix();
GlStateManager.enableRescaleNormal();
if (destroyStage < 0)
{
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
}
GlStateManager.translate((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
GlStateManager.scale(1.0F, -1.0F, -1.0F);
GlStateManager.translate(0.0F, 1.0F, 0.0F);
GlStateManager.scale(0.9995F, 0.9995F, 0.9995F);
GlStateManager.translate(0.0F, -1.0F, 0.0F);
switch (facing)
{
case DOWN:
GlStateManager.translate(0.0F, 2.0F, 0.0F);
GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);
case UP:
default:
break;
case NORTH:
GlStateManager.translate(0.0F, 1.0F, 1.0F);
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
break;
case SOUTH:
GlStateManager.translate(0.0F, 1.0F, -1.0F);
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
break;
case WEST:
GlStateManager.translate(-1.0F, 1.0F, 0.0F);
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(-90.0F, 0.0F, 0.0F, 1.0F);
break;
case EAST:
GlStateManager.translate(1.0F, 1.0F, 0.0F);
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F);
}
this.model.base.render(0.0625F);
GlStateManager.translate(0.0F, -te.getProgress(partialTicks) * 0.5F, 0.0F);
GlStateManager.rotate(270.0F * te.getProgress(partialTicks), 0.0F, 1.0F, 0.0F);
this.model.lid.render(0.0625F);
GlStateManager.enableCull();
GlStateManager.disableRescaleNormal();
GlStateManager.popMatrix();
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
if (destroyStage >= 0)
{
GlStateManager.matrixMode(5890);
GlStateManager.popMatrix();
GlStateManager.matrixMode(5888);
}
if (type == IronShulkerBoxType.CRYSTAL)
{
GlStateManager.enableCull();
}
if (type.isTransparent() && te.getDistanceSq(this.rendererDispatcher.entityX, this.rendererDispatcher.entityY, this.rendererDispatcher.entityZ) < 128d)
{
this.random.setSeed(254L);
float shiftX;
float shiftY;
float shiftZ;
int shift = 0;
float blockScale = 0.70F;
float timeD = (float) (360D * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL) - partialTicks;
if (te.getTopItems().get(1).isEmpty())
{
shift = 8;
blockScale = 0.85F;
}
GlStateManager.pushMatrix();
GlStateManager.translate((float) x, (float) y, (float) z);
customitem.setWorld(this.getWorld());
customitem.hoverStart = 0F;
for (ItemStack item : te.getTopItems())
{
if (shift > shifts.length)
{
break;
}
if (item.isEmpty())
{
shift++;
continue;
}
shiftX = shifts[shift][0];
shiftY = shifts[shift][1];
shiftZ = shifts[shift][2];
shift++;
GlStateManager.pushMatrix();
GlStateManager.translate(shiftX, shiftY, shiftZ);
GlStateManager.rotate(timeD, 0F, 1F, 0F);
GlStateManager.scale(blockScale, blockScale, blockScale);
customitem.setEntityItemStack(item);
if (this.itemRenderer == null)
{
this.itemRenderer = new RenderEntityItem(Minecraft.getMinecraft().getRenderManager(), Minecraft.getMinecraft().getRenderItem()) {
@Override
public int getModelCount(ItemStack stack)
{
return SignedBytes.saturatedCast(Math.min(stack.getCount() / 32, 15) + 1);
}
@Override
public boolean shouldBob()
{
return false;
}
@Override
public boolean shouldSpreadItems()
{
return true;
}
};
}
this.itemRenderer.doRender(customitem, 0D, 0D, 0D, 0F, partialTicks);
GlStateManager.popMatrix();
}
GlStateManager.popMatrix();
}
}
}

View File

@ -8,8 +8,12 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common;
import cpw.mods.ironchest.common.gui.chest.ContainerIronChest;
import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -32,14 +36,27 @@ public class CommonProxy implements IGuiHandler
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
{ {
TileEntity te = world.getTileEntity(new BlockPos(x, y, z)); TileEntity te = world.getTileEntity(new BlockPos(x, y, z));
if (te != null && te instanceof TileEntityIronChest) if (te != null && te instanceof TileEntityIronChest)
{ {
TileEntityIronChest icte = (TileEntityIronChest) te; TileEntityIronChest icte = (TileEntityIronChest) te;
return new ContainerIronChest(player.inventory, icte, icte.getType(), 0, 0); return new ContainerIronChest(player.inventory, icte, icte.getType(), 0, 0);
} }
else if (te != null && te instanceof TileEntityIronShulkerBox)
{
TileEntityIronShulkerBox icte = (TileEntityIronShulkerBox) te;
return new ContainerIronShulkerBox(player.inventory, icte, icte.getType(), 0, 0);
}
else else
{ {
return null; return null;
} }
} }
public World getClientWorld()
{
return null;
}
} }

View File

@ -0,0 +1,222 @@
/*******************************************************************************
* 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;
import java.util.List;
import com.google.common.collect.Lists;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.crafting.IronShulkerBoxColoring;
import cpw.mods.ironchest.common.items.ChestChangerType;
import cpw.mods.ironchest.common.items.ShulkerBoxChangerType;
import cpw.mods.ironchest.common.items.chest.ItemIronChest;
import cpw.mods.ironchest.common.items.shulker.ItemIronShulkerBox;
import cpw.mods.ironchest.common.util.BehaviorDispenseIronShulkerBox;
import cpw.mods.ironchest.common.util.CreativeTab;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDispenser;
import net.minecraft.block.BlockShulkerBox;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.RecipeSorter.Category;
public class ICContent
{
public static CreativeTab tabGeneral = new CreativeTab("IronChest", new ItemStack(Item.getItemFromBlock(Blocks.SLIME_BLOCK)));
public static BlockIronChest ironChestBlock;
public static ItemIronChest ironChestItemBlock;
public static BlockIronShulkerBox ironShulkerBoxWhiteBlock;
public static BlockIronShulkerBox ironShulkerBoxOrangeBlock;
public static BlockIronShulkerBox ironShulkerBoxMagentaBlock;
public static BlockIronShulkerBox ironShulkerBoxLightBlueBlock;
public static BlockIronShulkerBox ironShulkerBoxYellowBlock;
public static BlockIronShulkerBox ironShulkerBoxLimeBlock;
public static BlockIronShulkerBox ironShulkerBoxPinkBlock;
public static BlockIronShulkerBox ironShulkerBoxGrayBlock;
public static BlockIronShulkerBox ironShulkerBoxSilverBlock;
public static BlockIronShulkerBox ironShulkerBoxCyanBlock;
public static BlockIronShulkerBox ironShulkerBoxPurpleBlock;
public static BlockIronShulkerBox ironShulkerBoxBlueBlock;
public static BlockIronShulkerBox ironShulkerBoxBrownBlock;
public static BlockIronShulkerBox ironShulkerBoxGreenBlock;
public static BlockIronShulkerBox ironShulkerBoxRedBlock;
public static BlockIronShulkerBox ironShulkerBoxBlackBlock;
public static ItemIronShulkerBox ironShulkerBoxWhiteItemBlock;
public static ItemIronShulkerBox ironShulkerBoxOrangeItemBlock;
public static ItemIronShulkerBox ironShulkerBoxMagentaItemBlock;
public static ItemIronShulkerBox ironShulkerBoxLightBlueItemBlock;
public static ItemIronShulkerBox ironShulkerBoxYellowItemBlock;
public static ItemIronShulkerBox ironShulkerBoxLimeItemBlock;
public static ItemIronShulkerBox ironShulkerBoxPinkItemBlock;
public static ItemIronShulkerBox ironShulkerBoxGrayItemBlock;
public static ItemIronShulkerBox ironShulkerBoxSilverItemBlock;
public static ItemIronShulkerBox ironShulkerBoxCyanItemBlock;
public static ItemIronShulkerBox ironShulkerBoxPurpleItemBlock;
public static ItemIronShulkerBox ironShulkerBoxBlueItemBlock;
public static ItemIronShulkerBox ironShulkerBoxBrownItemBlock;
public static ItemIronShulkerBox ironShulkerBoxGreenItemBlock;
public static ItemIronShulkerBox ironShulkerBoxRedItemBlock;
public static ItemIronShulkerBox ironShulkerBoxBlackItemBlock;
public static final List<Block> SHULKER_BLOCKS = Lists.newArrayList();
public static final List<ItemBlock> SHULKER_ITEM_BLOCKS = Lists.newArrayList();
public static final List<Block> VANILLA_SHULKER_BLOCKS = Lists.newArrayList();
public static final List<EnumDyeColor> VANILLA_SHULKER_COLORS = Lists.newArrayList();
public static void preInit()
{
// Chests Start
ChestChangerType.buildItems();
ironChestBlock = GameRegistry.register(new BlockIronChest());
ironChestItemBlock = GameRegistry.register(new ItemIronChest(ironChestBlock));
for (IronChestType typ : IronChestType.VALUES)
{
if (typ.clazz != null)
{
GameRegistry.registerTileEntity(typ.clazz, "IronChest." + typ.name());
}
}
IronChestType.registerBlocksAndRecipes(ironChestBlock);
ChestChangerType.generateRecipes();
// Chests End
// Shulkers Start
setVanillaShulkerList();
ShulkerBoxChangerType.buildItems();
registerShulkerBlocks();
registerShulkerItemBlocks();
for (IronShulkerBoxType typ : IronShulkerBoxType.VALUES)
{
if (typ.clazz != null)
{
GameRegistry.registerTileEntity(typ.clazz, "IronShulkerBox." + typ.name());
}
}
for (int i = 0; i < ICContent.SHULKER_BLOCKS.size(); i++)
{
IronShulkerBoxType.registerBlocksAndRecipes((BlockIronShulkerBox) SHULKER_BLOCKS.get(i), (BlockShulkerBox) VANILLA_SHULKER_BLOCKS.get(i));
}
for (ItemBlock block : SHULKER_ITEM_BLOCKS)
{
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(block, new BehaviorDispenseIronShulkerBox());
}
GameRegistry.addRecipe(new IronShulkerBoxColoring());
RecipeSorter.register(IronChest.MOD_ID, IronShulkerBoxColoring.class, Category.SHAPELESS, "after:forge:shapelessore");
ShulkerBoxChangerType.generateRecipes();
// Shulkers End
tabGeneral.setDisplayIcon(new ItemStack(ironChestBlock, 1, IronChestType.IRON.ordinal()));
}
private static void registerShulkerBlocks()
{
SHULKER_BLOCKS.add(ironShulkerBoxWhiteBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.WHITE)));
SHULKER_BLOCKS.add(ironShulkerBoxOrangeBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.ORANGE)));
SHULKER_BLOCKS.add(ironShulkerBoxMagentaBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.MAGENTA)));
SHULKER_BLOCKS.add(ironShulkerBoxLightBlueBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.LIGHT_BLUE)));
SHULKER_BLOCKS.add(ironShulkerBoxYellowBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.YELLOW)));
SHULKER_BLOCKS.add(ironShulkerBoxLimeBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.LIME)));
SHULKER_BLOCKS.add(ironShulkerBoxPinkBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.PINK)));
SHULKER_BLOCKS.add(ironShulkerBoxGrayBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.GRAY)));
SHULKER_BLOCKS.add(ironShulkerBoxSilverBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.SILVER)));
SHULKER_BLOCKS.add(ironShulkerBoxCyanBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.CYAN)));
SHULKER_BLOCKS.add(ironShulkerBoxPurpleBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.PURPLE)));
SHULKER_BLOCKS.add(ironShulkerBoxBlueBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BLUE)));
SHULKER_BLOCKS.add(ironShulkerBoxBrownBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BROWN)));
SHULKER_BLOCKS.add(ironShulkerBoxGreenBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.GREEN)));
SHULKER_BLOCKS.add(ironShulkerBoxRedBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.RED)));
SHULKER_BLOCKS.add(ironShulkerBoxBlackBlock = GameRegistry.register(new BlockIronShulkerBox(EnumDyeColor.BLACK)));
}
private static void registerShulkerItemBlocks()
{
//@formatter:off
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxWhiteItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxWhiteBlock, EnumDyeColor.WHITE)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxOrangeItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxOrangeBlock, EnumDyeColor.ORANGE)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxMagentaItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxMagentaBlock, EnumDyeColor.MAGENTA)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxLightBlueItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxLightBlueBlock, EnumDyeColor.LIGHT_BLUE)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxYellowItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxYellowBlock, EnumDyeColor.YELLOW)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxLimeItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxLimeBlock, EnumDyeColor.LIME)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxPinkItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxPinkBlock, EnumDyeColor.PINK)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxGrayItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxGrayBlock, EnumDyeColor.GRAY)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxSilverItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxSilverBlock, EnumDyeColor.SILVER)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxCyanItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxCyanBlock, EnumDyeColor.CYAN)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxPurpleItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxPurpleBlock, EnumDyeColor.PURPLE)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBlueItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBlueBlock, EnumDyeColor.BLUE)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBrownItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBrownBlock, EnumDyeColor.BROWN)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxGreenItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxGreenBlock, EnumDyeColor.GREEN)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxRedItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxRedBlock, EnumDyeColor.RED)));
SHULKER_ITEM_BLOCKS.add(ironShulkerBoxBlackItemBlock = GameRegistry.register(new ItemIronShulkerBox(ironShulkerBoxBlackBlock, EnumDyeColor.BLACK)));
//@formatter:on
}
private static void setVanillaShulkerList()
{
VANILLA_SHULKER_BLOCKS.add(Blocks.WHITE_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.ORANGE_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.MAGENTA_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.LIGHT_BLUE_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.YELLOW_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.LIME_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.PINK_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.GRAY_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.SILVER_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.CYAN_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.PURPLE_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.BLUE_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.BROWN_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.GREEN_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.RED_SHULKER_BOX);
VANILLA_SHULKER_BLOCKS.add(Blocks.BLACK_SHULKER_BOX);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.WHITE);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.ORANGE);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.MAGENTA);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.LIGHT_BLUE);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.YELLOW);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.LIME);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.PINK);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.GRAY);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.SILVER);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.CYAN);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.PURPLE);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.BLUE);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.BROWN);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.GREEN);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.RED);
VANILLA_SHULKER_COLORS.add(EnumDyeColor.BLACK);
}
}

View File

@ -1,5 +1,17 @@
package cpw.mods.ironchest; /*******************************************************************************
* 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.ai;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.ai.EntityAIOcelotSit; import net.minecraft.entity.ai.EntityAIOcelotSit;
@ -30,7 +42,7 @@ public class IronChestAIOcelotSit extends EntityAIOcelotSit
IBlockState iblockstate = worldIn.getBlockState(pos); IBlockState iblockstate = worldIn.getBlockState(pos);
Block block = iblockstate.getBlock(); Block block = iblockstate.getBlock();
if (block == IronChest.ironChestBlock) if (block == ICContent.ironChestBlock)
{ {
TileEntity tileentity = worldIn.getTileEntity(pos); TileEntity tileentity = worldIn.getTileEntity(pos);

View File

@ -8,8 +8,13 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.blocks.chest;
import javax.annotation.Nullable;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
@ -20,7 +25,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -34,6 +38,7 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Explosion; import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.ILockableContainer;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@ -47,13 +52,12 @@ public class BlockIronChest extends Block
public BlockIronChest() public BlockIronChest()
{ {
super(Material.IRON); super(Material.IRON);
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest")); this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON)); this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON));
this.setHardness(3.0F); this.setHardness(3.0F);
this.setUnlocalizedName("IronChest"); this.setUnlocalizedName("IronChest");
this.setCreativeTab(CreativeTabs.DECORATIONS); this.setCreativeTab(ICContent.tabGeneral);
} }
@Override @Override
@ -80,6 +84,18 @@ public class BlockIronChest extends Block
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
} }
@Nullable
public ILockableContainer getLockableContainer(World worldIn, BlockPos pos)
{
return this.getContainer(worldIn, pos, false);
}
@Nullable
public ILockableContainer getContainer(World worldIn, BlockPos pos, boolean allowBlocking)
{
return null;
}
@Override @Override
//@formatter:off //@formatter:off
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY) public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY)
@ -103,6 +119,7 @@ public class BlockIronChest extends Block
} }
playerIn.openGui(IronChest.instance, ((TileEntityIronChest) te).getType().ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); playerIn.openGui(IronChest.instance, ((TileEntityIronChest) te).getType().ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
return true; return true;
} }
@ -160,11 +177,14 @@ public class BlockIronChest extends Block
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{ {
TileEntity te = worldIn.getTileEntity(pos); TileEntity te = worldIn.getTileEntity(pos);
if (te != null && te instanceof TileEntityIronChest) if (te != null && te instanceof TileEntityIronChest)
{ {
TileEntityIronChest teic = (TileEntityIronChest) te; TileEntityIronChest teic = (TileEntityIronChest) te;
teic.wasPlaced(placer, stack); teic.wasPlaced(placer, stack);
teic.setFacing(placer.getHorizontalFacing().getOpposite()); teic.setFacing(placer.getHorizontalFacing().getOpposite());
worldIn.notifyBlockUpdate(pos, state, state, 3); worldIn.notifyBlockUpdate(pos, state, state, 3);
} }
} }
@ -186,6 +206,7 @@ public class BlockIronChest extends Block
InventoryHelper.dropInventoryItems(worldIn, pos, tileentity); InventoryHelper.dropInventoryItems(worldIn, pos, tileentity);
} }
super.breakBlock(worldIn, pos, state); super.breakBlock(worldIn, pos, state);
} }
@ -193,14 +214,17 @@ public class BlockIronChest extends Block
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion)
{ {
TileEntity te = world.getTileEntity(pos); TileEntity te = world.getTileEntity(pos);
if (te instanceof TileEntityIronChest) if (te instanceof TileEntityIronChest)
{ {
TileEntityIronChest teic = (TileEntityIronChest) te; TileEntityIronChest teic = (TileEntityIronChest) te;
if (teic.getType().isExplosionResistant()) if (teic.getType().isExplosionResistant())
{ {
return 10000F; return 10000F;
} }
} }
return super.getExplosionResistance(world, pos, exploder, explosion); return super.getExplosionResistance(world, pos, exploder, explosion);
} }
@ -211,14 +235,9 @@ public class BlockIronChest extends Block
} }
@Override @Override
public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos) public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos)
{ {
TileEntity te = world.getTileEntity(pos); return Container.calcRedstone(worldIn.getTileEntity(pos));
if (te instanceof IInventory)
{
return Container.calcRedstoneFromInventory((IInventory) te);
}
return 0;
} }
private static final EnumFacing[] validRotationAxes = new EnumFacing[] { EnumFacing.UP, EnumFacing.DOWN }; private static final EnumFacing[] validRotationAxes = new EnumFacing[] { EnumFacing.UP, EnumFacing.DOWN };
@ -236,14 +255,18 @@ public class BlockIronChest extends Block
{ {
return false; return false;
} }
if (axis == EnumFacing.UP || axis == EnumFacing.DOWN) if (axis == EnumFacing.UP || axis == EnumFacing.DOWN)
{ {
TileEntity tileEntity = worldObj.getTileEntity(pos); TileEntity tileEntity = worldObj.getTileEntity(pos);
if (tileEntity instanceof TileEntityIronChest) if (tileEntity instanceof TileEntityIronChest)
{ {
TileEntityIronChest icte = (TileEntityIronChest) tileEntity; TileEntityIronChest icte = (TileEntityIronChest) tileEntity;
icte.rotateAround(); icte.rotateAround();
} }
return true; return true;
} }
return false; return false;
@ -254,7 +277,9 @@ public class BlockIronChest extends Block
public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param) public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param)
{ {
super.eventReceived(state, worldIn, pos, id, param); super.eventReceived(state, worldIn, pos, id, param);
TileEntity tileentity = worldIn.getTileEntity(pos); TileEntity tileentity = worldIn.getTileEntity(pos);
return tileentity != null && tileentity.receiveClientEvent(id, param); return tileentity != null && tileentity.receiveClientEvent(id, param);
} }
} }

View File

@ -8,12 +8,21 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.blocks.chest;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import cpw.mods.ironchest.common.gui.chest.slot.ValidatingChestSlot;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityCopperChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityCrystalChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityDiamondChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityDirtChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityGoldChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityObsidianChest;
import cpw.mods.ironchest.common.tileentity.chest.TileEntitySilverChest;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
@ -71,7 +80,7 @@ public enum IronChestType implements IStringSerializable
this.size = size; this.size = size;
this.rowLength = rowLength; this.rowLength = rowLength;
this.tieredChest = tieredChest; this.tieredChest = tieredChest;
this.modelTexture = new ResourceLocation("ironchest", "textures/model/" + modelTexture); this.modelTexture = new ResourceLocation("ironchest", "textures/model/chest/" + modelTexture);
this.matList = Collections.unmodifiableCollection(mats); this.matList = Collections.unmodifiableCollection(mats);
this.clazz = clazz; this.clazz = clazz;
this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes)); this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes));
@ -119,11 +128,13 @@ public enum IronChestType implements IStringSerializable
public static void registerBlocksAndRecipes(BlockIronChest blockResult) public static void registerBlocksAndRecipes(BlockIronChest blockResult)
{ {
Object previous = "chestWood"; Object previous = "chestWood";
for (IronChestType typ : values()) for (IronChestType typ : values())
{ {
generateRecipesForType(blockResult, previous, typ); generateRecipesForType(blockResult, previous, typ);
ItemStack chest = new ItemStack(blockResult, 1, typ.ordinal()); ItemStack chest = new ItemStack(blockResult, 1, typ.ordinal());
// if (typ.isValidForCreativeMode()) GameRegistry.registerCustomItemStack(typ.friendlyName, chest);//TODO fix this!!
if (typ.tieredChest) if (typ.tieredChest)
{ {
previous = chest; previous = chest;
@ -137,12 +148,17 @@ public enum IronChestType implements IStringSerializable
{ {
String[] recipeSplit = new String[] { recipe.substring(0, 3), recipe.substring(3, 6), recipe.substring(6, 9) }; String[] recipeSplit = new String[] { recipe.substring(0, 3), recipe.substring(3, 6), recipe.substring(6, 9) };
Object mainMaterial = null; Object mainMaterial = null;
for (String mat : type.matList) for (String mat : type.matList)
{ {
mainMaterial = translateOreName(mat); mainMaterial = translateOreName(mat);
//@formatter:off //@formatter:off
addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit, 'm', mainMaterial, 'P', previousTier, /* previous tier of chest */ addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit,
'G', "blockGlass", 'C', "chestWood", '0', new ItemStack(blockResult, 1, 0), /* Iron Chest */ 'm', mainMaterial,
'P', previousTier, /* previous tier of chest */
'G', "blockGlass",
'C', "chestWood",
'0', new ItemStack(blockResult, 1, 0), /* Iron Chest */
'1', new ItemStack(blockResult, 1, 1), /* Gold Chest */ '1', new ItemStack(blockResult, 1, 1), /* Gold Chest */
'2', new ItemStack(blockResult, 1, 2), /* Diamond Chest */ '2', new ItemStack(blockResult, 1, 2), /* Diamond Chest */
'3', new ItemStack(blockResult, 1, 3), /* Copper Chest */ '3', new ItemStack(blockResult, 1, 3), /* Copper Chest */
@ -162,12 +178,14 @@ public enum IronChestType implements IStringSerializable
{ {
return Blocks.DIRT; return Blocks.DIRT;
} }
return mat; return mat;
} }
public static void addRecipe(ItemStack is, Object... parts) public static void addRecipe(ItemStack is, Object... parts)
{ {
ShapedOreRecipe oreRecipe = new ShapedOreRecipe(is, parts); ShapedOreRecipe oreRecipe = new ShapedOreRecipe(is, parts);
GameRegistry.addRecipe(oreRecipe); GameRegistry.addRecipe(oreRecipe);
} }
@ -193,7 +211,7 @@ public enum IronChestType implements IStringSerializable
public Slot makeSlot(IInventory chestInventory, int index, int x, int y) public Slot makeSlot(IInventory chestInventory, int index, int x, int y)
{ {
return new ValidatingSlot(chestInventory, index, x, y, this); return new ValidatingChestSlot(chestInventory, index, x, y, this);
} }
private static final Item DIRT_ITEM = Item.getItemFromBlock(Blocks.DIRT); private static final Item DIRT_ITEM = Item.getItemFromBlock(Blocks.DIRT);

View File

@ -0,0 +1,493 @@
/*******************************************************************************
* 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.blocks.shulker;
import java.util.List;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.block.Block;
import net.minecraft.block.material.EnumPushReaction;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.translation.I18n;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SuppressWarnings("deprecation")
public class BlockIronShulkerBox extends Block
{
public static final PropertyEnum<IronShulkerBoxType> VARIANT_PROP = PropertyEnum.create("variant", IronShulkerBoxType.class);
private final EnumDyeColor color;
private EnumFacing facingDirection;
public BlockIronShulkerBox(EnumDyeColor colorIn)
{
super(Material.IRON);
this.color = colorIn;
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_" + colorIn.getName()));
this.setUnlocalizedName("IronShulkerBox" + colorIn.getName());
this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronShulkerBoxType.IRON));
this.setHardness(3.0F);
this.setCreativeTab(ICContent.tabGeneral);
}
/**
* Used to determine ambient occlusion and culling when rebuilding chunks for render
*/
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
public boolean causesSuffocation(IBlockState state)
{
return true;
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasCustomBreakingProgress(IBlockState state)
{
return true;
}
/**
* The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only, LIQUID for vanilla liquids, INVISIBLE to skip all rendering
*/
@Override
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
//@formatter:off
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY)
//@formatter:on
{
if (worldIn.isRemote)
{
return true;
}
else if (playerIn.isSpectator())
{
return true;
}
else
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityIronShulkerBox)
{
EnumFacing enumfacing = ((TileEntityIronShulkerBox) tileentity).getFacing();
boolean flag;
if (((TileEntityIronShulkerBox) tileentity).getAnimationStatus() == TileEntityIronShulkerBox.AnimationStatus.CLOSED)
{
//@formatter:off
AxisAlignedBB axisalignedbb = FULL_BLOCK_AABB.addCoord(0.5F * enumfacing.getFrontOffsetX(), 0.5F * enumfacing.getFrontOffsetY(), 0.5F * enumfacing.getFrontOffsetZ()).contract(enumfacing.getFrontOffsetX(), enumfacing.getFrontOffsetY(), enumfacing.getFrontOffsetZ());
//@formatter:on
flag = !worldIn.collidesWithAnyBlock(axisalignedbb.offset(pos.offset(enumfacing)));
}
else
{
flag = true;
}
if (flag)
{
//@formatter:off
playerIn.openGui(IronChest.instance, ((TileEntityIronShulkerBox) tileentity).getType().ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
//@formatter:on
}
return true;
}
else
{
return false;
}
}
}
@Override
public boolean hasTileEntity(IBlockState state)
{
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state)
{
return state.getValue(VARIANT_PROP).makeEntity(this.color);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list)
{
for (IronShulkerBoxType type : IronShulkerBoxType.VALUES)
{
if (type.isValidForCreativeMode())
{
list.add(new ItemStack(itemIn, 1, type.ordinal()));
}
}
}
@Override
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(VARIANT_PROP, IronShulkerBoxType.VALUES[meta]);
}
@Override
public int getMetaFromState(IBlockState blockState)
{
return blockState.getValue(VARIANT_PROP).ordinal();
}
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStateContainer(this, VARIANT_PROP);
}
@Override
//@formatter:off
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
//@formatter:on
{
this.facingDirection = facing;
return super.getStateForPlacement(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer);
}
@Override
public void onBlockAdded(World world, BlockPos pos, IBlockState state)
{
super.onBlockAdded(world, pos, state);
world.notifyBlockUpdate(pos, state, state, 3);
}
/**
* Called by ItemBlocks after a block is set in the world, to allow post-place logic
*/
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
if (stack.hasDisplayName())
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityIronShulkerBox)
{
((TileEntityIronShulkerBox) tileentity).setCustomName(stack.getDisplayName());
((TileEntityIronShulkerBox) tileentity).setFacing(facingDirection);
worldIn.notifyBlockUpdate(pos, state, state, 3);
}
}
else
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityIronShulkerBox)
{
TileEntityIronShulkerBox teic = (TileEntityIronShulkerBox) tileentity;
teic.setFacing(facingDirection);
worldIn.notifyBlockUpdate(pos, state, state, 3);
}
}
}
@Override
public int damageDropped(IBlockState state)
{
return state.getValue(VARIANT_PROP).ordinal();
}
@Override
public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player)
{
TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) worldIn.getTileEntity(pos);
tileentityironshulkerbox.setDestroyedByCreativePlayer(player.capabilities.isCreativeMode);
tileentityironshulkerbox.fillWithLoot(player);
}
/**
* Spawns this Block's drops into the World as EntityItems.
*/
@Override
public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune)
{
}
/**
* Called serverside after this block is replaced with another in Chunk, but before the Tile Entity is updated
*/
@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityIronShulkerBox)
{
TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) tileentity;
if (!tileentityironshulkerbox.isCleared() && tileentityironshulkerbox.shouldDrop())
{
if (!tileentityironshulkerbox.beenUpgraded())
{
ItemStack itemstack = new ItemStack(Item.getItemFromBlock(this), 1, state.getValue(VARIANT_PROP).ordinal());
NBTTagCompound nbttagcompound = new NBTTagCompound();
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound.setTag("BlockEntityTag", ((TileEntityIronShulkerBox) tileentity).saveToNbt(nbttagcompound1));
itemstack.setTagCompound(nbttagcompound);
if (tileentityironshulkerbox.hasCustomName())
{
itemstack.setStackDisplayName(tileentityironshulkerbox.getName());
tileentityironshulkerbox.setCustomName("");
}
spawnAsEntity(worldIn, pos, itemstack);
}
}
worldIn.updateComparatorOutputLevel(pos, state.getBlock());
}
super.breakBlock(worldIn, pos, state);
}
@Override
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion)
{
TileEntity te = world.getTileEntity(pos);
if (te instanceof TileEntityIronShulkerBox)
{
TileEntityIronShulkerBox teic = (TileEntityIronShulkerBox) te;
if (teic.getType().isExplosionResistant())
{
return 10000F;
}
}
return super.getExplosionResistance(world, pos, exploder, explosion);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
super.addInformation(stack, player, tooltip, advanced);
NBTTagCompound nbttagcompound = stack.getTagCompound();
if (nbttagcompound != null && nbttagcompound.hasKey("BlockEntityTag", 10))
{
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("BlockEntityTag");
if (nbttagcompound1.hasKey("LootTable", 8))
{
tooltip.add("???????");
}
if (nbttagcompound1.hasKey("Items", 9))
{
if (nbttagcompound1.hasKey("ShulkerBoxSize", 3))
{
NonNullList<ItemStack> nonnulllist = NonNullList.<ItemStack> withSize(nbttagcompound1.getInteger("ShulkerBoxSize"), ItemStack.EMPTY);
ItemStackHelper.loadAllItems(nbttagcompound1, nonnulllist);
int i = 0;
int j = 0;
for (ItemStack itemstack : nonnulllist)
{
if (!itemstack.isEmpty())
{
++j;
if (i <= 4)
{
++i;
tooltip.add(String.format("%s x%d", new Object[] { itemstack.getDisplayName(), Integer.valueOf(itemstack.getCount()) }));
}
}
}
if (j - i > 0)
{
//@formatter:off
tooltip.add(String.format(TextFormatting.ITALIC + I18n.translateToLocal("container.shulkerBox.more"), new Object[] {Integer.valueOf(j - i)}));
//@formatter:on
}
}
}
}
}
@Override
public EnumPushReaction getMobilityFlag(IBlockState state)
{
return EnumPushReaction.DESTROY;
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{
TileEntity tileentity = source.getTileEntity(pos);
return tileentity instanceof TileEntityIronShulkerBox ? ((TileEntityIronShulkerBox) tileentity).getBoundingBox() : FULL_BLOCK_AABB;
}
@Override
public boolean hasComparatorInputOverride(IBlockState state)
{
return true;
}
@Override
public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos)
{
return Container.calcRedstoneFromInventory((IInventory) worldIn.getTileEntity(pos));
}
@Override
public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
{
ItemStack itemstack = super.getItem(worldIn, pos, state);
TileEntityIronShulkerBox tileentityironshulkerbox = (TileEntityIronShulkerBox) worldIn.getTileEntity(pos);
NBTTagCompound nbttagcompound = tileentityironshulkerbox.saveToNbt(new NBTTagCompound());
if (!nbttagcompound.hasNoTags())
{
itemstack.setTagInfo("BlockEntityTag", nbttagcompound);
}
return itemstack;
}
public static Block getBlockByColor(EnumDyeColor colorIn)
{
switch (colorIn)
{
case WHITE:
return ICContent.ironShulkerBoxWhiteBlock;
case ORANGE:
return ICContent.ironShulkerBoxOrangeBlock;
case MAGENTA:
return ICContent.ironShulkerBoxMagentaBlock;
case LIGHT_BLUE:
return ICContent.ironShulkerBoxLightBlueBlock;
case YELLOW:
return ICContent.ironShulkerBoxYellowBlock;
case LIME:
return ICContent.ironShulkerBoxLimeBlock;
case PINK:
return ICContent.ironShulkerBoxPinkBlock;
case GRAY:
return ICContent.ironShulkerBoxGrayBlock;
case SILVER:
return ICContent.ironShulkerBoxSilverBlock;
case CYAN:
return ICContent.ironShulkerBoxCyanBlock;
case PURPLE:
default:
return ICContent.ironShulkerBoxPurpleBlock;
case BLUE:
return ICContent.ironShulkerBoxBlueBlock;
case BROWN:
return ICContent.ironShulkerBoxBrownBlock;
case GREEN:
return ICContent.ironShulkerBoxGreenBlock;
case RED:
return ICContent.ironShulkerBoxRedBlock;
case BLACK:
return ICContent.ironShulkerBoxBlackBlock;
}
}
public static ItemStack getColoredItemStack(EnumDyeColor colorIn, int damageIn)
{
return new ItemStack(getBlockByColor(colorIn), 1, damageIn);
}
@SideOnly(Side.CLIENT)
public static EnumDyeColor getColorFromBlock(Block blockIn)
{
return blockIn instanceof BlockIronShulkerBox ? ((BlockIronShulkerBox) blockIn).getColor() : EnumDyeColor.PURPLE;
}
@SideOnly(Side.CLIENT)
public EnumDyeColor getColor()
{
return this.color;
}
@Override
@Deprecated
public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param)
{
super.eventReceived(state, worldIn, pos, id, param);
TileEntity tileentity = worldIn.getTileEntity(pos);
return tileentity != null && tileentity.receiveClientEvent(id, param);
}
}

View File

@ -0,0 +1,233 @@
/*******************************************************************************
* 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.blocks.shulker;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import cpw.mods.ironchest.common.gui.shulker.slot.ValidatingShulkerBoxSlot;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityCopperShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityCrystalShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityDiamondShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityGoldShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityObsidianShulkerBox;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntitySilverShulkerBox;
import net.minecraft.block.BlockShulkerBox;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.ShapedOreRecipe;
public enum IronShulkerBoxType implements IStringSerializable
{
//@formatter:off
IRON(54, 9, true, "_iron.png", TileEntityIronShulkerBox.class, 184, 202, Arrays.asList("ingotIron", "ingotRefinedIron"), "mmmmPmmmm", "mGmG3GmGm"),
GOLD(81, 9, true, "_gold.png", TileEntityGoldShulkerBox.class, 184, 256, Collections.singleton("ingotGold"), "mmmmPmmmm", "mGmG4GmGm"),
DIAMOND(108, 12, true, "_diamond.png", TileEntityDiamondShulkerBox.class, 184, 256, Collections.singleton("gemDiamond"), "GGGmPmGGG", "GGGG4Gmmm"),
COPPER(45, 9, false, "_copper.png", TileEntityCopperShulkerBox.class, 184, 184, Collections.singleton("ingotCopper"), "mmmmCmmmm"),
SILVER(72, 9, false, "_silver.png", TileEntitySilverShulkerBox.class, 184, 238, Collections.singleton("ingotSilver"), "mmmm3mmmm", "mGmG0GmGm"),
CRYSTAL(108, 12, true, "_crystal.png", TileEntityCrystalShulkerBox.class, 238, 256, Collections.singleton("blockGlass"), "GGGGPGGGG"),
OBSIDIAN(108, 12, false, "_obsidian.png", TileEntityObsidianShulkerBox.class, 238, 256, Collections.singleton("obsidian"), "mmmm2mmmm"),
VANILLA(0, 0, false, "", null, 0, 0, Collections.singleton("shulkerBox"));
//@formatter:on
public static final IronShulkerBoxType VALUES[] = values();
public final String name;
public final int size;
public final int rowLength;
public final boolean tieredChest;
public final String modelTexture;
public final Class<? extends TileEntityIronShulkerBox> clazz;
public final int xSize;
public final int ySize;
public final Collection<String> matList;
public final Collection<String> recipes;
private String breakTexture;
//@formatter:off
IronShulkerBoxType(int size, int rowLength, boolean tieredChest, String modelTexture, Class<? extends TileEntityIronShulkerBox> clazz, int xSize, int ySize, Collection<String> mats, String... recipes)
//@formatter:on
{
this.name = this.name().toLowerCase();
this.size = size;
this.rowLength = rowLength;
this.tieredChest = tieredChest;
this.modelTexture = modelTexture;
this.clazz = clazz;
this.xSize = xSize;
this.ySize = ySize;
this.matList = Collections.unmodifiableCollection(mats);
this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes));
}
@Override
public String getName()
{
return this.name;
}
public String getBreakTexture()
{
if (this.breakTexture == null)
{
switch (this)
{
case OBSIDIAN:
{
this.breakTexture = "minecraft:blocks/obsidian";
break;
}
case VANILLA:
{
this.breakTexture = "minecraft:blocks/planks_oak";
break;
}
default:
{
this.breakTexture = "ironchest:blocks/" + this.getName() + "break";
}
}
}
return this.breakTexture;
}
public static void registerBlocksAndRecipes(BlockIronShulkerBox blockResult, BlockShulkerBox shulkerBox)
{
Object previous = shulkerBox;
for (IronShulkerBoxType typ : values())
{
generateRecipesForType(blockResult, previous, typ);
ItemStack chest = new ItemStack(blockResult, 1, typ.ordinal());
if (typ.tieredChest)
{
previous = chest;
}
}
}
public static void generateRecipesForType(BlockIronShulkerBox blockResult, Object previousTier, IronShulkerBoxType type)
{
for (String recipe : type.recipes)
{
String[] recipeSplit = new String[] { recipe.substring(0, 3), recipe.substring(3, 6), recipe.substring(6, 9) };
Object mainMaterial = null;
for (String mat : type.matList)
{
mainMaterial = translateOreName(mat);
//@formatter:off
addRecipe(new ItemStack(blockResult, 1, type.ordinal()), recipeSplit,
'm', mainMaterial,
'P', previousTier, /* previous tier of chest */
'G', "blockGlass",
'C', "chestWood",
'0', new ItemStack(blockResult, 1, 0), /* Iron Chest */
'1', new ItemStack(blockResult, 1, 1), /* Gold Chest */
'2', new ItemStack(blockResult, 1, 2), /* Diamond Chest */
'3', new ItemStack(blockResult, 1, 3), /* Copper Chest */
'4', new ItemStack(blockResult, 1, 4) /* Silver Chest */
);
//@formatter:on
}
}
}
public static Object translateOreName(String mat)
{
if (mat.equals("shulkerBox"))
{
return Blocks.PURPLE_SHULKER_BOX;
}
if (mat.equals("obsidian"))
{
return Blocks.OBSIDIAN;
}
return mat;
}
public static void addRecipe(ItemStack is, Object... parts)
{
ShapedOreRecipe oreRecipe = new ShapedOreRecipe(is, parts);
GameRegistry.addRecipe(oreRecipe);
}
public int getRowCount()
{
return this.size / this.rowLength;
}
public boolean isTransparent()
{
return this == CRYSTAL;
}
public boolean isValidForCreativeMode()
{
return this != VANILLA;
}
public boolean isExplosionResistant()
{
return this == OBSIDIAN;
}
public Slot makeSlot(IInventory chestInventory, int index, int x, int y)
{
return new ValidatingShulkerBoxSlot(chestInventory, index, x, y);
}
public TileEntityIronShulkerBox makeEntity(EnumDyeColor colorIn)
{
switch (this)
{
case IRON:
return new TileEntityIronShulkerBox(colorIn);
case GOLD:
return new TileEntityGoldShulkerBox(colorIn);
case DIAMOND:
return new TileEntityDiamondShulkerBox(colorIn);
case COPPER:
return new TileEntityCopperShulkerBox(colorIn);
case SILVER:
return new TileEntitySilverShulkerBox(colorIn);
case CRYSTAL:
return new TileEntityCrystalShulkerBox(colorIn);
case OBSIDIAN:
return new TileEntityObsidianShulkerBox(colorIn);
default:
return null;
}
}
}

View File

@ -0,0 +1,136 @@
/*******************************************************************************
* 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.crafting;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
public class IronShulkerBoxColoring implements IRecipe
{
public IronShulkerBoxColoring()
{
}
/**
* Used to check if a recipe matches current crafting inventory
*/
@Override
public boolean matches(InventoryCrafting inv, World worldIn)
{
int i = 0;
int j = 0;
for (int k = 0; k < inv.getSizeInventory(); ++k)
{
ItemStack itemstack = inv.getStackInSlot(k);
if (!itemstack.isEmpty())
{
if (Block.getBlockFromItem(itemstack.getItem()) instanceof BlockIronShulkerBox)
{
++i;
}
else
{
if (itemstack.getItem() != Items.DYE)
{
return false;
}
++j;
}
if (j > 1 || i > 1)
{
return false;
}
}
}
return i == 1 && j == 1;
}
/**
* Returns an Item that is the result of this recipe
*/
@Override
public ItemStack getCraftingResult(InventoryCrafting inv)
{
ItemStack itemstack = ItemStack.EMPTY;
ItemStack itemstack1 = ItemStack.EMPTY;
for (int i = 0; i < inv.getSizeInventory(); ++i)
{
ItemStack itemstack2 = inv.getStackInSlot(i);
if (!itemstack2.isEmpty())
{
if (Block.getBlockFromItem(itemstack2.getItem()) instanceof BlockIronShulkerBox)
{
itemstack = itemstack2;
}
else if (itemstack2.getItem() == Items.DYE)
{
itemstack1 = itemstack2;
}
}
}
ItemStack itemstack3 = BlockIronShulkerBox.getColoredItemStack(EnumDyeColor.byDyeDamage(itemstack1.getMetadata()), itemstack.getMetadata());
if (itemstack.hasTagCompound())
{
itemstack3.setTagCompound(itemstack.getTagCompound().copy());
}
return itemstack3;
}
/**
* Returns the size of the recipe area
*/
@Override
public int getRecipeSize()
{
return 10;
}
@Override
public ItemStack getRecipeOutput()
{
return ItemStack.EMPTY;
}
@Override
public NonNullList<ItemStack> getRemainingItems(InventoryCrafting inv)
{
NonNullList<ItemStack> nonnulllist = NonNullList.<ItemStack> withSize(inv.getSizeInventory(), ItemStack.EMPTY);
for (int i = 0; i < nonnulllist.size(); ++i)
{
ItemStack itemstack = inv.getStackInSlot(i);
if (itemstack.getItem().hasContainerItem(itemstack))
{
nonnulllist.set(i, new ItemStack(itemstack.getItem().getContainerItem()));
}
}
return nonnulllist;
}
}

View File

@ -8,8 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.gui.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import invtweaks.api.container.ChestContainer; import invtweaks.api.container.ChestContainer;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@ -108,11 +109,13 @@ public class ContainerIronChest extends Container
} }
int leftCol = (xSize - 162) / 2 + 1; int leftCol = (xSize - 162) / 2 + 1;
for (int playerInvRow = 0; playerInvRow < 3; playerInvRow++) for (int playerInvRow = 0; playerInvRow < 3; playerInvRow++)
{ {
for (int playerInvCol = 0; playerInvCol < 9; playerInvCol++) for (int playerInvCol = 0; playerInvCol < 9; playerInvCol++)
{ {
this.addSlotToContainer(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10)); this.addSlotToContainer(
new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10));
} }
} }

View File

@ -0,0 +1,33 @@
/*******************************************************************************
* 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.gui.chest.slot;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ValidatingChestSlot extends Slot
{
private IronChestType type;
public ValidatingChestSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition, IronChestType type)
{
super(inventoryIn, slotIndex, xPosition, yPosition);
this.type = type;
}
@Override
public boolean isItemValid(ItemStack stack)
{
return this.type.acceptsStack(stack);
}
}

View File

@ -0,0 +1,138 @@
/*******************************************************************************
* 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.gui.shulker;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import invtweaks.api.container.ChestContainer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
@ChestContainer(isLargeChest = true)
public class ContainerIronShulkerBox extends Container
{
private IronShulkerBoxType type;
private EntityPlayer player;
private IInventory inventory;
public ContainerIronShulkerBox(IInventory playerInventory, IInventory shulkerBoxInventory, IronShulkerBoxType type, int xSize, int ySize)
{
this.inventory = shulkerBoxInventory;
this.player = ((InventoryPlayer) playerInventory).player;
this.type = type;
shulkerBoxInventory.openInventory(this.player);
this.layoutContainer(playerInventory, shulkerBoxInventory, type, xSize, ySize);
}
protected void layoutContainer(IInventory playerInventory, IInventory shulkerBoxInventory, IronShulkerBoxType type, int xSize, int ySize)
{
for (int chestRow = 0; chestRow < type.getRowCount(); chestRow++)
{
for (int chestCol = 0; chestCol < type.rowLength; chestCol++)
{
this.addSlotToContainer(type.makeSlot(shulkerBoxInventory, chestCol + chestRow * type.rowLength, 12 + chestCol * 18, 8 + chestRow * 18));
}
}
int leftCol = (xSize - 162) / 2 + 1;
for (int playerInvRow = 0; playerInvRow < 3; playerInvRow++)
{
for (int playerInvCol = 0; playerInvCol < 9; playerInvCol++)
{
//@formatter:off
this.addSlotToContainer(new Slot(playerInventory, playerInvCol + playerInvRow * 9 + 9, leftCol + playerInvCol * 18, ySize - (4 - playerInvRow) * 18 - 10));
//@formatter:on
}
}
for (int hotbarSlot = 0; hotbarSlot < 9; hotbarSlot++)
{
this.addSlotToContainer(new Slot(playerInventory, hotbarSlot, leftCol + hotbarSlot * 18, ySize - 24));
}
}
public EntityPlayer getPlayer()
{
return this.player;
}
/**
* Determines whether supplied player can use this container
*/
@Override
public boolean canInteractWith(EntityPlayer playerIn)
{
return this.inventory.isUsableByPlayer(playerIn);
}
/**
* Take a stack from the specified inventory slot.
*/
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
{
ItemStack itemstack = ItemStack.EMPTY;
Slot slot = this.inventorySlots.get(index);
if (slot != null && slot.getHasStack())
{
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if (index < this.type.size)
{
if (!this.mergeItemStack(itemstack1, this.type.size, this.inventorySlots.size(), true))
{
return ItemStack.EMPTY;
}
}
else if (!this.mergeItemStack(itemstack1, 0, this.type.size, false))
{
return ItemStack.EMPTY;
}
if (itemstack1.isEmpty())
{
slot.putStack(ItemStack.EMPTY);
}
else
{
slot.onSlotChanged();
}
}
return itemstack;
}
/**
* Called when the container is closed.
*/
@Override
public void onContainerClosed(EntityPlayer playerIn)
{
super.onContainerClosed(playerIn);
this.inventory.closeInventory(playerIn);
}
@ChestContainer.RowSizeCallback
public int getNumColumns()
{
return this.type.rowLength;
}
}

View File

@ -0,0 +1,34 @@
/*******************************************************************************
* 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.gui.shulker.slot;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import net.minecraft.block.Block;
import net.minecraft.block.BlockShulkerBox;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ValidatingShulkerBoxSlot extends Slot
{
public ValidatingShulkerBoxSlot(IInventory inventoryIn, int slotIndex, int xPosition, int yPosition)
{
super(inventoryIn, slotIndex, xPosition, yPosition);
}
@Override
public boolean isItemValid(ItemStack stack)
{
//@formatter:off
return !(Block.getBlockFromItem(stack.getItem()) instanceof BlockIronShulkerBox) && !(Block.getBlockFromItem(stack.getItem()) instanceof BlockShulkerBox);
//@formatter:on
}
}

View File

@ -4,17 +4,19 @@
* <p> * <p>
* Contributors: cpw - initial API and implementation * Contributors: cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.items;
import static cpw.mods.ironchest.IronChestType.COPPER; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.COPPER;
import static cpw.mods.ironchest.IronChestType.CRYSTAL; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.CRYSTAL;
import static cpw.mods.ironchest.IronChestType.DIAMOND; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.DIAMOND;
import static cpw.mods.ironchest.IronChestType.GOLD; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.GOLD;
import static cpw.mods.ironchest.IronChestType.IRON; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.IRON;
import static cpw.mods.ironchest.IronChestType.OBSIDIAN; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.OBSIDIAN;
import static cpw.mods.ironchest.IronChestType.SILVER; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.SILVER;
import static cpw.mods.ironchest.IronChestType.WOOD; import static cpw.mods.ironchest.common.blocks.chest.IronChestType.WOOD;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.common.items.chest.ItemChestChanger;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
@ -22,15 +24,15 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public enum ChestChangerType public enum ChestChangerType
{ {
//@formatter:off //@formatter:off
IRONGOLD(IRON, GOLD, "iron_gold_upgrade", "mmm", "msm", "mmm"), IRON_GOLD(IRON, GOLD, "iron_gold_chest_upgrade", "mmm", "msm", "mmm"),
GOLDDIAMOND(GOLD, DIAMOND, "gold_diamond_upgrade", "GGG", "msm", "GGG"), GOLD_DIAMOND(GOLD, DIAMOND, "gold_diamond_chest_upgrade", "GGG", "msm", "GGG"),
COPPERSILVER(COPPER, SILVER, "copper_silver_upgrade", "mmm", "msm", "mmm"), COPPER_SILVER(COPPER, SILVER, "copper_silver_chest_upgrade", "mmm", "msm", "mmm"),
SILVERGOLD(SILVER, GOLD, "silver_gold_upgrade", "mGm", "GsG", "mGm"), SILVER_GOLD(SILVER, GOLD, "silver_gold_chest_upgrade", "mGm", "GsG", "mGm"),
COPPERIRON(COPPER, IRON, "copper_iron_upgrade", "mGm", "GsG", "mGm"), COPPER_IRON(COPPER, IRON, "copper_iron_chest_upgrade", "mGm", "GsG", "mGm"),
DIAMONDCRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_upgrade", "GGG", "GOG", "GGG"), DIAMOND_CRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_chest_upgrade", "GGG", "GOG", "GGG"),
WOODIRON(WOOD, IRON, "wood_iron_upgrade", "mmm", "msm", "mmm"), WOOD_IRON(WOOD, IRON, "wood_iron_chest_upgrade", "mmm", "msm", "mmm"),
WOODCOPPER(WOOD, COPPER, "wood_copper_upgrade", "mmm", "msm", "mmm"), WOOD_COPPER(WOOD, COPPER, "wood_copper_chest_upgrade", "mmm", "msm", "mmm"),
DIAMONDOBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_upgrade", "mmm", "mGm", "mmm"); DIAMOND_OBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_chest_upgrade", "mmm", "mGm", "mmm");
//@formatter:on //@formatter:on
public static final ChestChangerType[] VALUES = values(); public static final ChestChangerType[] VALUES = values();
@ -57,8 +59,11 @@ public enum ChestChangerType
public ItemChestChanger buildItem() public ItemChestChanger buildItem()
{ {
this.item = new ItemChestChanger(this); this.item = new ItemChestChanger(this);
this.item.setRegistryName(this.itemName); this.item.setRegistryName(this.itemName);
GameRegistry.register(this.item); GameRegistry.register(this.item);
return this.item; return this.item;
} }

View File

@ -0,0 +1,101 @@
/*******************************************************************************
* 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.items;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.COPPER;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.CRYSTAL;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.DIAMOND;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.GOLD;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.IRON;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.OBSIDIAN;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.SILVER;
import static cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType.VANILLA;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.items.shulker.ItemShulkerBoxChanger;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
public enum ShulkerBoxChangerType
{
//@formatter:off
IRON_GOLD(IRON, GOLD, "iron_gold_shulker_upgrade", "mmm", "msm", "mmm"),
GOLD_DIAMOND(GOLD, DIAMOND, "gold_diamond_shulker_upgrade", "GGG", "msm", "GGG"),
COPPER_SILVER(COPPER, SILVER, "copper_silver_shulker_upgrade", "mmm", "msm", "mmm"),
SILVER_GOLD(SILVER, GOLD, "silver_gold_shulker_upgrade", "mGm", "GsG", "mGm"),
COPPER_IRON(COPPER, IRON, "copper_iron_shulker_upgrade", "mGm", "GsG", "mGm"),
DIAMOND_CRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_shulker_upgrade", "GGG", "GOG", "GGG"),
VANILLA_IRON(VANILLA, IRON, "vanilla_iron_shulker_upgrade", "mmm", "msm", "mmm"),
VANILLA_COPPER(VANILLA, COPPER, "vanilla_copper_shulker_upgrade", "mmm", "msm", "mmm"),
DIAMOND_OBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_shulker_upgrade", "mmm", "mGm", "mmm");
//@formatter:on
public static final ShulkerBoxChangerType[] VALUES = values();
public final IronShulkerBoxType source;
public final IronShulkerBoxType target;
public final String itemName;
public ItemShulkerBoxChanger item;
private String[] recipe;
ShulkerBoxChangerType(IronShulkerBoxType source, IronShulkerBoxType target, String itemName, String... recipe)
{
this.source = source;
this.target = target;
this.itemName = itemName;
this.recipe = recipe;
}
public boolean canUpgrade(IronShulkerBoxType from)
{
return from == this.source;
}
public ItemShulkerBoxChanger buildItem()
{
this.item = new ItemShulkerBoxChanger(this);
this.item.setRegistryName(this.itemName);
GameRegistry.register(this.item);
return this.item;
}
public void addRecipes()
{
for (String sourceMat : this.source.matList)
{
for (String targetMat : this.target.matList)
{
Object targetMaterial = IronShulkerBoxType.translateOreName(targetMat);
Object sourceMaterial = IronShulkerBoxType.translateOreName(sourceMat);
//@formatter:off
IronShulkerBoxType.addRecipe(new ItemStack(this.item), this.recipe, 'm', targetMaterial, 's', sourceMaterial, 'G', "blockGlass", 'O', Blocks.OBSIDIAN);
//@formatter:on
}
}
}
public static void buildItems()
{
for (ShulkerBoxChangerType type : VALUES)
{
type.buildItem();
}
}
public static void generateRecipes()
{
for (ShulkerBoxChangerType item : VALUES)
{
item.addRecipes();
}
}
}

View File

@ -8,13 +8,19 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.items.chest;
import java.util.Locale;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.common.items.ChestChangerType;
import cpw.mods.ironchest.common.tileentity.chest.TileEntityIronChest;
import cpw.mods.ironchest.common.util.ItemTooltip;
import net.minecraft.block.BlockChest; import net.minecraft.block.BlockChest;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest; import net.minecraft.tileentity.TileEntityChest;
@ -25,7 +31,7 @@ import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ItemChestChanger extends Item public class ItemChestChanger extends ItemTooltip
{ {
public final ChestChangerType type; public final ChestChangerType type;
@ -33,15 +39,17 @@ public class ItemChestChanger extends Item
{ {
this.type = type; this.type = type;
this.setMaxStackSize(1); this.setMaxStackSize(1);
this.setUnlocalizedName("ironchest:" + type.name()); this.setUnlocalizedName("ironchest.chest." + type.name().toLowerCase(Locale.US));
this.setCreativeTab(CreativeTabs.MISC); this.setCreativeTab(ICContent.tabGeneral);
} }
/** /**
* Called when a Block is right-clicked with this Item * Called when a Block is right-clicked with this Item
*/ */
@Override @Override
public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) //@formatter:off
public EnumActionResult onItemUseFirst(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand)
//@formatter:on
{ {
ItemStack itemstack = playerIn.getHeldItem(hand); ItemStack itemstack = playerIn.getHeldItem(hand);
@ -59,7 +67,9 @@ public class ItemChestChanger extends Item
} }
else else
{ {
if (worldIn.getBlockState(pos) != IronChest.ironChestBlock.getStateFromMeta(IronChestType.valueOf(this.type.source.getName().toUpperCase()).ordinal())) //@formatter:off
if (worldIn.getBlockState(pos) != ICContent.ironChestBlock.getStateFromMeta(IronChestType.valueOf(this.type.source.getName().toUpperCase()).ordinal()))
//@formatter:on
{ {
return EnumActionResult.PASS; return EnumActionResult.PASS;
} }
@ -120,7 +130,7 @@ public class ItemChestChanger extends Item
worldIn.removeTileEntity(pos); worldIn.removeTileEntity(pos);
worldIn.setBlockToAir(pos); worldIn.setBlockToAir(pos);
IBlockState iblockstate = IronChest.ironChestBlock.getDefaultState().withProperty(BlockIronChest.VARIANT_PROP, this.type.target); IBlockState iblockstate = ICContent.ironChestBlock.getDefaultState().withProperty(BlockIronChest.VARIANT_PROP, this.type.target);
worldIn.setTileEntity(pos, newchest); worldIn.setTileEntity(pos, newchest);
worldIn.setBlockState(pos, iblockstate, 3); worldIn.setBlockState(pos, iblockstate, 3);

View File

@ -8,8 +8,12 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.items.chest;
import java.util.Locale;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -20,8 +24,8 @@ public class ItemIronChest extends ItemBlock
public ItemIronChest(Block block) public ItemIronChest(Block block)
{ {
super(block); super(block);
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest"));
this.setMaxDamage(0); this.setMaxDamage(0);
this.setHasSubtypes(true); this.setHasSubtypes(true);
} }
@ -35,6 +39,6 @@ public class ItemIronChest extends ItemBlock
@Override @Override
public String getUnlocalizedName(ItemStack itemstack) public String getUnlocalizedName(ItemStack itemstack)
{ {
return "tile.ironchest:" + IronChestType.VALUES[itemstack.getMetadata()].name(); return "tile.ironchest.chest." + IronChestType.VALUES[itemstack.getMetadata()].name().toLowerCase(Locale.US);
} }
} }

View File

@ -0,0 +1,49 @@
/*******************************************************************************
* 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.items.shulker;
import java.util.Locale;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.block.Block;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class ItemIronShulkerBox extends ItemBlock
{
private final String colorName;
public ItemIronShulkerBox(Block block, EnumDyeColor colorIn)
{
super(block);
this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_shulker_box_" + colorIn.getName()));
this.setMaxDamage(0);
this.setHasSubtypes(true);
this.setMaxStackSize(1);
this.colorName = colorIn.getName();
}
@Override
public int getMetadata(int meta)
{
return meta;
}
@Override
public String getUnlocalizedName(ItemStack itemstack)
{
return "tile.ironchest.shulker_box." + IronShulkerBoxType.VALUES[itemstack.getMetadata()].name().toLowerCase(Locale.US) + "." + this.colorName;
}
}

View File

@ -0,0 +1,213 @@
/*******************************************************************************
* 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.items.shulker;
import java.util.Locale;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.items.ShulkerBoxChangerType;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import cpw.mods.ironchest.common.util.ItemTooltip;
import net.minecraft.block.Block;
import net.minecraft.block.BlockShulkerBox;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityShulkerBox;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class ItemShulkerBoxChanger extends ItemTooltip
{
public final ShulkerBoxChangerType type;
public ItemShulkerBoxChanger(ShulkerBoxChangerType type)
{
this.type = type;
this.setMaxStackSize(1);
this.setUnlocalizedName("ironchest.shulker_box." + type.name().toLowerCase(Locale.US));
this.setCreativeTab(ICContent.tabGeneral);
}
public EnumDyeColor getColorFromTileEntity(TileEntity te, World worldIn)
{
if (te != null)
{
if (te instanceof TileEntityIronShulkerBox)
{
TileEntityIronShulkerBox ironShulkerBox = (TileEntityIronShulkerBox) te;
Block ironShulkerBoxBlock = worldIn.getBlockState(ironShulkerBox.getPos()).getBlock();
for (int i = 0; i < ICContent.SHULKER_BLOCKS.size(); i++)
{
if (ICContent.SHULKER_BLOCKS.get(i) == ironShulkerBoxBlock)
{
return ICContent.VANILLA_SHULKER_COLORS.get(i);
}
}
}
else if (te instanceof TileEntityShulkerBox)
{
TileEntityShulkerBox shulkerBox = (TileEntityShulkerBox) te;
Block shulkerBoxBlock = worldIn.getBlockState(shulkerBox.getPos()).getBlock();
for (int i = 0; i < ICContent.VANILLA_SHULKER_BLOCKS.size(); i++)
{
if (ICContent.VANILLA_SHULKER_BLOCKS.get(i) == shulkerBoxBlock)
{
return ICContent.VANILLA_SHULKER_COLORS.get(i);
}
}
}
}
return EnumDyeColor.PURPLE;
}
/**
* Called when a Block is right-clicked with this Item
*/
@Override
//@formatter:off
public EnumActionResult onItemUseFirst(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand)
//@formatter:on
{
ItemStack itemstack = playerIn.getHeldItem(hand);
if (worldIn.isRemote)
{
return EnumActionResult.PASS;
}
if (this.type.canUpgrade(IronShulkerBoxType.VANILLA))
{
if (!(worldIn.getBlockState(pos).getBlock() instanceof BlockShulkerBox))
{
return EnumActionResult.PASS;
}
}
else
{
if ((worldIn.getBlockState(pos).getBlock() instanceof BlockIronShulkerBox))
{
//@formatter:off
if (worldIn.getBlockState(pos) != ((BlockIronShulkerBox) worldIn.getBlockState(pos).getBlock()).getStateFromMeta(IronShulkerBoxType.valueOf(this.type.source.getName().toUpperCase()).ordinal()))
//@formatter:on
{
return EnumActionResult.PASS;
}
}
else
{
return EnumActionResult.PASS;
}
}
TileEntity te = worldIn.getTileEntity(pos);
TileEntityIronShulkerBox newShulkerBox = new TileEntityIronShulkerBox();
NonNullList<ItemStack> shulkerBoxContents = NonNullList.<ItemStack> withSize(27, ItemStack.EMPTY);
EnumFacing shulkerBoxFacing = EnumFacing.UP;
EnumDyeColor shulkerBoxColor = EnumDyeColor.PURPLE;
if (te != null)
{
if (te instanceof TileEntityIronShulkerBox)
{
shulkerBoxContents = ((TileEntityIronShulkerBox) te).getItems();
shulkerBoxFacing = ((TileEntityIronShulkerBox) te).getFacing();
shulkerBoxColor = getColorFromTileEntity(te, worldIn);
((TileEntityIronShulkerBox) te).setHasBeenUpgraded();
newShulkerBox = this.type.target.makeEntity(shulkerBoxColor);
if (newShulkerBox == null)
{
return EnumActionResult.PASS;
}
}
else if (te instanceof TileEntityShulkerBox)
{
IBlockState shulkerBoxState = worldIn.getBlockState(pos);
shulkerBoxFacing = shulkerBoxState.getValue(BlockShulkerBox.FACING);
TileEntityShulkerBox shulkerBox = (TileEntityShulkerBox) te;
if (!this.type.canUpgrade(IronShulkerBoxType.VANILLA))
{
return EnumActionResult.PASS;
}
shulkerBoxContents = NonNullList.<ItemStack> withSize(shulkerBox.getSizeInventory(), ItemStack.EMPTY);
for (int i = 0; i < shulkerBoxContents.size(); i++)
{
shulkerBoxContents.set(i, shulkerBox.getStackInSlot(i));
}
shulkerBoxColor = getColorFromTileEntity(te, worldIn);
shulkerBox.clear();
shulkerBox.setDestroyedByCreativePlayer(true);
newShulkerBox = this.type.target.makeEntity(shulkerBoxColor);
}
}
te.updateContainingBlockInfo();
worldIn.setBlockToAir(pos);
IBlockState iblockstate = null;
if (ICContent.SHULKER_BLOCKS.get(shulkerBoxColor.getMetadata()) != null)
{
Block block = ICContent.SHULKER_BLOCKS.get(shulkerBoxColor.getMetadata());
iblockstate = block.getDefaultState().withProperty(BlockIronShulkerBox.VARIANT_PROP, this.type.target);
}
else
{
return EnumActionResult.PASS;
}
worldIn.setTileEntity(pos, newShulkerBox);
worldIn.setBlockState(pos, iblockstate, 3);
worldIn.notifyBlockUpdate(pos, iblockstate, iblockstate, 3);
TileEntity te2 = worldIn.getTileEntity(pos);
if (te2 instanceof TileEntityIronShulkerBox)
{
((TileEntityIronShulkerBox) te2).setContents(shulkerBoxContents);
((TileEntityIronShulkerBox) te2).setFacing(shulkerBoxFacing);
}
if (!playerIn.capabilities.isCreativeMode)
{
itemstack.shrink(1);
}
return EnumActionResult.SUCCESS;
}
}

View File

@ -0,0 +1,93 @@
/*******************************************************************************
* 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.tileentity.chest.TileEntityIronChest;
import io.netty.buffer.ByteBuf;
import net.minecraft.item.ItemStack;
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.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class MessageCrystalChestSync implements IMessage
{
int dimension;
BlockPos pos;
private NonNullList<ItemStack> topStacks;
public MessageCrystalChestSync(TileEntityIronChest tile, NonNullList<ItemStack> stack)
{
this.dimension = tile.getWorld().provider.getDimension();
this.pos = tile.getPos();
this.topStacks = stack;
}
public MessageCrystalChestSync()
{
}
@Override
public void fromBytes(ByteBuf buf)
{
this.dimension = buf.readInt();
this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
int size = buf.readInt();
this.topStacks = NonNullList.<ItemStack> withSize(size, ItemStack.EMPTY);
for (int i = 0; i < size; i++)
{
ItemStack itemstack = ByteBufUtils.readItemStack(buf);
this.topStacks.set(i, itemstack);
}
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(this.dimension);
buf.writeInt(this.pos.getX());
buf.writeInt(this.pos.getY());
buf.writeInt(this.pos.getZ());
buf.writeInt(this.topStacks.size());
for (ItemStack stack : this.topStacks)
{
ByteBufUtils.writeItemStack(buf, stack);
}
}
public static class Handler implements IMessageHandler<MessageCrystalChestSync, IMessage>
{
@Override
public IMessage onMessage(MessageCrystalChestSync message, MessageContext ctx)
{
World world = IronChest.proxy.getClientWorld();
if (world != null)
{
TileEntity tile = world.getTileEntity(message.pos);
if (tile instanceof TileEntityIronChest)
((TileEntityIronChest) tile).receiveMessageFromServer(message.topStacks);
}
return null;
}
}
}

View File

@ -0,0 +1,93 @@
/*******************************************************************************
* 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.tileentity.shulker.TileEntityIronShulkerBox;
import io.netty.buffer.ByteBuf;
import net.minecraft.item.ItemStack;
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.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class MessageCrystalShulkerSync implements IMessage
{
int dimension;
BlockPos pos;
private NonNullList<ItemStack> topStacks;
public MessageCrystalShulkerSync(TileEntityIronShulkerBox tile, NonNullList<ItemStack> stack)
{
this.dimension = tile.getWorld().provider.getDimension();
this.pos = tile.getPos();
this.topStacks = stack;
}
public MessageCrystalShulkerSync()
{
}
@Override
public void fromBytes(ByteBuf buf)
{
this.dimension = buf.readInt();
this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
int size = buf.readInt();
this.topStacks = NonNullList.<ItemStack> withSize(size, ItemStack.EMPTY);
for (int i = 0; i < size; i++)
{
ItemStack itemstack = ByteBufUtils.readItemStack(buf);
this.topStacks.set(i, itemstack);
}
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(this.dimension);
buf.writeInt(this.pos.getX());
buf.writeInt(this.pos.getY());
buf.writeInt(this.pos.getZ());
buf.writeInt(this.topStacks.size());
for (ItemStack stack : this.topStacks)
{
ByteBufUtils.writeItemStack(buf, stack);
}
}
public static class Handler implements IMessageHandler<MessageCrystalShulkerSync, IMessage>
{
@Override
public IMessage onMessage(MessageCrystalShulkerSync message, MessageContext ctx)
{
World world = IronChest.proxy.getClientWorld();
if (world != null)
{
TileEntity tile = world.getTileEntity(message.pos);
if (tile instanceof TileEntityIronShulkerBox)
((TileEntityIronShulkerBox) tile).receiveMessageFromServer(message.topStacks);
}
return null;
}
}
}

View File

@ -8,7 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntityCopperChest extends TileEntityIronChest public class TileEntityCopperChest extends TileEntityIronChest
{ {

View File

@ -8,7 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntityCrystalChest extends TileEntityIronChest public class TileEntityCrystalChest extends TileEntityIronChest
{ {

View File

@ -8,7 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntityDiamondChest extends TileEntityIronChest public class TileEntityDiamondChest extends TileEntityIronChest
{ {

View File

@ -1,5 +1,6 @@
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -15,13 +16,13 @@ public class TileEntityDirtChest extends TileEntityIronChest
static static
{ {
dirtChest9000GuideBook.setTagInfo("author", new NBTTagString("cpw")); dirtChest9000GuideBook.setTagInfo("author", new NBTTagString("cpw"));
dirtChest9000GuideBook.setTagInfo("title", new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.title"))); dirtChest9000GuideBook.setTagInfo("title", new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.title")));
NBTTagList pages = new NBTTagList(); NBTTagList pages = new NBTTagList();
pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page1"))); pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page1")));
pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page2"))); pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page2")));
pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page3"))); pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page3")));
pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page4"))); pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page4")));
pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest:dirtchest9000.page5"))); pages.appendTag(new NBTTagString(I18n.translateToLocal("book.ironchest.dirtchest9000.page5")));
dirtChest9000GuideBook.setTagInfo("pages", pages); dirtChest9000GuideBook.setTagInfo("pages", pages);
} }

View File

@ -8,7 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntityGoldChest extends TileEntityIronChest public class TileEntityGoldChest extends TileEntityIronChest
{ {

View File

@ -8,11 +8,17 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.ICContent;
import cpw.mods.ironchest.common.blocks.chest.BlockIronChest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
import cpw.mods.ironchest.common.gui.chest.ContainerIronChest;
import cpw.mods.ironchest.common.network.MessageCrystalChestSync;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -31,13 +37,14 @@ import net.minecraft.util.NonNullList;
import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
public class TileEntityIronChest extends TileEntityLockableLoot implements ITickable public class TileEntityIronChest extends TileEntityLockableLoot implements ITickable
{ {
/** Chest Contents */ /** Chest Contents */
public NonNullList<ItemStack> chestContents; public NonNullList<ItemStack> chestContents;
/** Crystal chest top stacks */ /** Crystal Chest top stacks */
private NonNullList<ItemStack> topStacks; private NonNullList<ItemStack> topStacks;
/** The current angle of the lid (between 0 and 1) */ /** The current angle of the lid (between 0 and 1) */
@ -113,7 +120,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
{ {
IBlockState state = this.world.getBlockState(this.pos); IBlockState state = this.world.getBlockState(this.pos);
if (state.getBlock() == IronChest.ironChestBlock) if (state.getBlock() == ICContent.ironChestBlock)
{ {
type = state.getValue(BlockIronChest.VARIANT_PROP); type = state.getValue(BlockIronChest.VARIANT_PROP);
} }
@ -163,7 +170,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
{ {
ItemStack tempCopyStack = tempCopy.get(j); ItemStack tempCopyStack = tempCopy.get(j);
if (ItemStack.areItemsEqual(tempCopyStack, itemStack)) if (ItemStack.areItemsEqualIgnoreDurability(tempCopyStack, itemStack))
{ {
if (itemStack.getCount() != tempCopyStack.getCount()) if (itemStack.getCount() != tempCopyStack.getCount())
{ {
@ -250,6 +257,8 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
this.world.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); this.world.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3);
} }
sendTopStacksPacket();
} }
@Override @Override
@ -338,15 +347,17 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
public void update() public void update()
{ {
// Resynchronizes clients with the server state // Resynchronizes clients with the server state
if (this.world != null && !this.world.isRemote && this.numPlayersUsing != 0 //@formatter:off
&& (this.ticksSinceSync + this.pos.getX() + this.pos.getY() + this.pos.getZ()) % 200 == 0) if (this.world != null && !this.world.isRemote && this.numPlayersUsing != 0 && (this.ticksSinceSync + this.pos.getX() + this.pos.getY() + this.pos.getZ()) % 200 == 0)
//@formatter:on
{ {
this.numPlayersUsing = 0; this.numPlayersUsing = 0;
float f = 5.0F; float f = 5.0F;
for (EntityPlayer player : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(this.pos.getX() - f, this.pos.getY() - f, //@formatter:off
this.pos.getZ() - f, this.pos.getX() + 1 + f, this.pos.getY() + 1 + f, this.pos.getZ() + 1 + f))) for (EntityPlayer player : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(this.pos.getX() - f, this.pos.getY() - f, this.pos.getZ() - f, this.pos.getX() + 1 + f, this.pos.getY() + 1 + f, this.pos.getZ() + 1 + f)))
//@formatter:on
{ {
if (player.openContainer instanceof ContainerIronChest) if (player.openContainer instanceof ContainerIronChest)
{ {
@ -357,7 +368,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
if (this.world != null && !this.world.isRemote && this.ticksSinceSync < 0) if (this.world != null && !this.world.isRemote && this.ticksSinceSync < 0)
{ {
this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 3, ((this.numPlayersUsing << 3) & 0xF8) | (this.facing.ordinal() & 0x7)); this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 3, ((this.numPlayersUsing << 3) & 0xF8) | (this.facing.ordinal() & 0x7));
} }
if (!this.world.isRemote && this.inventoryTouched) if (!this.world.isRemote && this.inventoryTouched)
@ -455,9 +466,9 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
++this.numPlayersUsing; ++this.numPlayersUsing;
this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 1, this.numPlayersUsing);
this.world.notifyNeighborsOfStateChange(this.pos, IronChest.ironChestBlock, false); this.world.notifyNeighborsOfStateChange(this.pos, ICContent.ironChestBlock, false);
this.world.notifyNeighborsOfStateChange(this.pos.down(), IronChest.ironChestBlock, false); this.world.notifyNeighborsOfStateChange(this.pos.down(), ICContent.ironChestBlock, false);
} }
} }
@ -473,9 +484,9 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
--this.numPlayersUsing; --this.numPlayersUsing;
this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 1, this.numPlayersUsing);
this.world.notifyNeighborsOfStateChange(this.pos, IronChest.ironChestBlock, false); this.world.notifyNeighborsOfStateChange(this.pos, ICContent.ironChestBlock, false);
this.world.notifyNeighborsOfStateChange(this.pos.down(), IronChest.ironChestBlock, false); this.world.notifyNeighborsOfStateChange(this.pos.down(), ICContent.ironChestBlock, false);
} }
} }
@ -491,10 +502,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
compound.setByte("facing", (byte) this.facing.ordinal()); compound.setByte("facing", (byte) this.facing.ordinal());
NonNullList<ItemStack> stacks = this.buildItemStackDataList();
ItemStackHelper.saveAllItems(compound, stacks);
return new SPacketUpdateTileEntity(this.pos, 0, compound); return new SPacketUpdateTileEntity(this.pos, 0, compound);
} }
@ -506,29 +513,6 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
NBTTagCompound compound = pkt.getNbtCompound(); NBTTagCompound compound = pkt.getNbtCompound();
this.facing = EnumFacing.VALUES[compound.getByte("facing")]; this.facing = EnumFacing.VALUES[compound.getByte("facing")];
NonNullList<ItemStack> stacks = NonNullList.<ItemStack> withSize(this.getTopItems().size(), ItemStack.EMPTY);
ItemStackHelper.loadAllItems(compound, stacks);
if (this.getType().isTransparent())
{
int pos = 0;
for (int i = 0; i < this.getTopItems().size(); i++)
{
if (!stacks.get(pos).isEmpty())
{
this.getTopItems().set(i, stacks.get(pos));
}
else
{
this.getTopItems().set(i, ItemStack.EMPTY);
}
pos++;
}
}
} }
} }
@ -570,7 +554,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
{ {
this.setFacing(this.facing.rotateY()); this.setFacing(this.facing.rotateY());
this.world.addBlockEvent(this.pos, IronChest.ironChestBlock, 2, this.facing.ordinal()); this.world.addBlockEvent(this.pos, ICContent.ironChestBlock, 2, this.facing.ordinal());
} }
public void wasPlaced(EntityLivingBase entityliving, ItemStack stack) public void wasPlaced(EntityLivingBase entityliving, ItemStack stack)
@ -592,7 +576,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
@Override @Override
public String getGuiID() public String getGuiID()
{ {
return "IronChest:" + this.getType().name(); return "IronChest:" + this.getType().name() + "_chest";
} }
@Override @Override
@ -608,7 +592,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
} }
@Override @Override
protected NonNullList<ItemStack> getItems() public NonNullList<ItemStack> getItems()
{ {
return this.chestContents; return this.chestContents;
} }
@ -631,4 +615,17 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick
return true; return true;
} }
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
}
public void receiveMessageFromServer(NonNullList<ItemStack> topStacks)
{
this.topStacks = topStacks;
}
} }

View File

@ -1,4 +1,6 @@
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntityObsidianChest extends TileEntityIronChest public class TileEntityObsidianChest extends TileEntityIronChest
{ {

View File

@ -8,7 +8,9 @@
* Contributors: * Contributors:
* cpw - initial API and implementation * cpw - initial API and implementation
******************************************************************************/ ******************************************************************************/
package cpw.mods.ironchest; package cpw.mods.ironchest.common.tileentity.chest;
import cpw.mods.ironchest.common.blocks.chest.IronChestType;
public class TileEntitySilverChest extends TileEntityIronChest public class TileEntitySilverChest extends TileEntityIronChest
{ {

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntityCopperShulkerBox extends TileEntityIronShulkerBox
{
public TileEntityCopperShulkerBox()
{
this(null);
}
public TileEntityCopperShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.COPPER);
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntityCrystalShulkerBox extends TileEntityIronShulkerBox
{
public TileEntityCrystalShulkerBox()
{
this(null);
}
public TileEntityCrystalShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.CRYSTAL);
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntityDiamondShulkerBox extends TileEntityIronShulkerBox
{
public TileEntityDiamondShulkerBox()
{
this(null);
}
public TileEntityDiamondShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.DIAMOND);
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntityGoldShulkerBox extends TileEntityIronShulkerBox
{
public TileEntityGoldShulkerBox()
{
this(null);
}
public TileEntityGoldShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.GOLD);
}
}

View File

@ -0,0 +1,795 @@
/*******************************************************************************
* 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.tileentity.shulker;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.annotation.Nullable;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.gui.shulker.ContainerIronShulkerBox;
import cpw.mods.ironchest.common.network.MessageCrystalShulkerSync;
import net.minecraft.block.Block;
import net.minecraft.block.BlockShulkerBox;
import net.minecraft.block.material.EnumPushReaction;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.MoverType;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntityLockableLoot;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.NonNullList;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class TileEntityIronShulkerBox extends TileEntityLockableLoot implements ITickable, ISidedInventory
{
private final int[] SLOTS;
/** Shulker Box Contents */
private NonNullList<ItemStack> items;
/** Crystal Shulker Boxes top stacks */
private NonNullList<ItemStack> topStacks;
/** Direction Shulker ox is facing */
private EnumFacing facing;
/** If the inventory got touched */
private boolean inventoryTouched;
/** Server sync counter (once per 20 ticks) */
private int ticksSinceSync;
/** If the inventory had items */
private boolean hadStuff;
private boolean hasBeenCleared;
private int openCount;
private AnimationStatus animationStatus;
private float progress;
private float progressOld;
private EnumDyeColor color;
private boolean destroyedByCreativePlayer;
private boolean hasBeenUpgraded;
/** The Variant of the Shulker Box (Not Color) */
private IronShulkerBoxType shulkerBoxType;
public TileEntityIronShulkerBox()
{
this(null);
}
public TileEntityIronShulkerBox(@Nullable EnumDyeColor colorIn)
{
this(colorIn, IronShulkerBoxType.IRON);
}
public TileEntityIronShulkerBox(@Nullable EnumDyeColor colorIn, IronShulkerBoxType typeIn)
{
super();
this.shulkerBoxType = typeIn;
this.SLOTS = new int[typeIn.size];
this.items = NonNullList.<ItemStack> withSize(typeIn.size, ItemStack.EMPTY);
this.topStacks = NonNullList.<ItemStack> withSize(8, ItemStack.EMPTY);
this.animationStatus = AnimationStatus.CLOSED;
this.color = colorIn;
this.facing = EnumFacing.UP;
this.hasBeenUpgraded = false;
}
public void setContents(NonNullList<ItemStack> contents)
{
this.items = NonNullList.<ItemStack> withSize(this.getType().size, ItemStack.EMPTY);
for (int i = 0; i < contents.size(); i++)
{
if (i < this.items.size())
{
this.getItems().set(i, contents.get(i));
}
}
this.inventoryTouched = true;
}
@Override
public int getSizeInventory()
{
return this.getItems().size();
}
public EnumFacing getFacing()
{
return this.facing;
}
public IronShulkerBoxType getType()
{
IronShulkerBoxType type = IronShulkerBoxType.IRON;
if (this.hasWorld())
{
IBlockState state = this.world.getBlockState(this.pos);
if (state.getBlock() instanceof BlockIronShulkerBox)
{
type = state.getValue(BlockIronShulkerBox.VARIANT_PROP);
}
}
return type;
}
@Override
public ItemStack getStackInSlot(int index)
{
this.fillWithLoot((EntityPlayer) null);
this.inventoryTouched = true;
return this.getItems().get(index);
}
@Override
public void markDirty()
{
super.markDirty();
this.sortTopStacks();
}
protected void sortTopStacks()
{
if (!this.getType().isTransparent() || (this.world != null && this.world.isRemote))
{
return;
}
NonNullList<ItemStack> tempCopy = NonNullList.<ItemStack> withSize(this.getSizeInventory(), ItemStack.EMPTY);
boolean hasStuff = false;
int compressedIdx = 0;
mainLoop: for (int i = 0; i < this.getSizeInventory(); i++)
{
ItemStack itemStack = this.getItems().get(i);
if (!itemStack.isEmpty())
{
for (int j = 0; j < compressedIdx; j++)
{
ItemStack tempCopyStack = tempCopy.get(j);
if (ItemStack.areItemsEqualIgnoreDurability(tempCopyStack, itemStack))
{
if (itemStack.getCount() != tempCopyStack.getCount())
{
tempCopyStack.grow(itemStack.getCount());
}
continue mainLoop;
}
}
tempCopy.set(compressedIdx, itemStack.copy());
compressedIdx++;
hasStuff = true;
}
}
if (!hasStuff && this.hadStuff)
{
this.hadStuff = false;
for (int i = 0; i < this.getTopItems().size(); i++)
{
this.getTopItems().set(i, ItemStack.EMPTY);
}
return;
}
this.hadStuff = true;
Collections.sort(tempCopy, new Comparator<ItemStack>() {
@Override
public int compare(ItemStack stack1, ItemStack stack2)
{
if (stack1.isEmpty())
{
return 1;
}
else if (stack2.isEmpty())
{
return -1;
}
else
{
return stack2.getCount() - stack1.getCount();
}
}
});
int p = 0;
for (ItemStack element : tempCopy)
{
if (!element.isEmpty() && element.getCount() > 0)
{
if (p == this.getTopItems().size())
{
break;
}
this.getTopItems().set(p, element);
p++;
}
}
for (int i = p; i < this.getTopItems().size(); i++)
{
this.getTopItems().set(i, ItemStack.EMPTY);
}
sendTopStacksPacket();
}
/**
* Get the name of this object. For players this returns their username
*/
@Override
public String getName()
{
return this.hasCustomName() ? this.customName : this.getType().name();
}
@Override
public void readFromNBT(NBTTagCompound compound)
{
super.readFromNBT(compound);
this.loadFromNbt(compound);
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound)
{
super.writeToNBT(compound);
return this.saveToNbt(compound);
}
public void loadFromNbt(NBTTagCompound compound)
{
this.items = NonNullList.<ItemStack> withSize(this.getSizeInventory(), ItemStack.EMPTY);
if (!this.checkLootAndRead(compound) && compound.hasKey("Items", 9))
{
ItemStackHelper.loadAllItems(compound, this.items);
}
if (compound.hasKey("CustomName", 8))
{
this.customName = compound.getString("CustomName");
}
this.facing = EnumFacing.VALUES[compound.getByte("facing")];
this.sortTopStacks();
}
public NBTTagCompound saveToNbt(NBTTagCompound compound)
{
if (!this.checkLootAndWrite(compound))
{
ItemStackHelper.saveAllItems(compound, this.items, false);
}
compound.setInteger("ShulkerBoxSize", this.getSizeInventory());
compound.setByte("facing", (byte) this.facing.ordinal());
if (this.hasCustomName())
{
compound.setString("CustomName", this.customName);
}
if (!compound.hasKey("Lock") && this.isLocked())
{
this.getLockCode().toNBT(compound);
}
return compound;
}
/**
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended.
*/
@Override
public int getInventoryStackLimit()
{
return 64;
}
/**
* Like the old updateEntity(), except more generic.
*/
@Override
public void update()
{
this.updateAnimation();
if (this.animationStatus == AnimationStatus.OPENING || this.animationStatus == AnimationStatus.CLOSING)
{
this.moveCollidedEntities();
}
if (this.world != null && !this.world.isRemote && this.ticksSinceSync < 0)
{
this.world.addBlockEvent(this.pos, this.getBlockType(), 3, ((this.openCount << 3) & 0xF8) | (this.facing.ordinal() & 0x7));
}
if (!this.world.isRemote && this.inventoryTouched)
{
this.inventoryTouched = false;
this.sortTopStacks();
}
this.ticksSinceSync++;
}
protected void updateAnimation()
{
this.progressOld = this.progress;
switch (this.animationStatus)
{
case CLOSED:
this.progress = 0.0F;
break;
case OPENING:
this.progress += 0.1F;
if (this.progress >= 1.0F)
{
this.moveCollidedEntities();
this.animationStatus = AnimationStatus.OPENED;
this.progress = 1.0F;
}
break;
case CLOSING:
this.progress -= 0.1F;
if (this.progress <= 0.0F)
{
this.animationStatus = AnimationStatus.CLOSED;
this.progress = 0.0F;
}
break;
case OPENED:
this.progress = 1.0F;
}
}
public AnimationStatus getAnimationStatus()
{
return this.animationStatus;
}
public AxisAlignedBB getBoundingBox()
{
return this.getBoundingBox(this.getFacing());
}
public AxisAlignedBB getBoundingBox(EnumFacing facing)
{
//@formatter:off
return Block.FULL_BLOCK_AABB.addCoord(0.5F * this.getProgress(1.0F) * facing.getFrontOffsetX(), 0.5F * this.getProgress(1.0F) * facing.getFrontOffsetY(), 0.5F * this.getProgress(1.0F) * facing.getFrontOffsetZ());
//@formatter:on
}
private AxisAlignedBB getTopBoundingBox(EnumFacing facing)
{
EnumFacing enumfacing = facing.getOpposite();
return this.getBoundingBox(facing).contract(enumfacing.getFrontOffsetX(), enumfacing.getFrontOffsetY(), enumfacing.getFrontOffsetZ());
}
private void moveCollidedEntities()
{
IBlockState iblockstate = this.world.getBlockState(this.getPos());
if (iblockstate.getBlock() instanceof BlockIronShulkerBox)
{
EnumFacing enumfacing = this.getFacing();
AxisAlignedBB axisalignedbb = this.getTopBoundingBox(enumfacing).offset(this.pos);
List<Entity> list = this.world.getEntitiesWithinAABBExcludingEntity((Entity) null, axisalignedbb);
if (!list.isEmpty())
{
for (int i = 0; i < list.size(); ++i)
{
Entity entity = list.get(i);
if (entity.getPushReaction() != EnumPushReaction.IGNORE)
{
double d0 = 0.0D;
double d1 = 0.0D;
double d2 = 0.0D;
AxisAlignedBB axisalignedbb1 = entity.getEntityBoundingBox();
switch (enumfacing.getAxis())
{
case X:
if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE)
{
d0 = axisalignedbb.maxX - axisalignedbb1.minX;
}
else
{
d0 = axisalignedbb1.maxX - axisalignedbb.minX;
}
d0 = d0 + 0.01D;
break;
case Y:
if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE)
{
d1 = axisalignedbb.maxY - axisalignedbb1.minY;
}
else
{
d1 = axisalignedbb1.maxY - axisalignedbb.minY;
}
d1 = d1 + 0.01D;
break;
case Z:
if (enumfacing.getAxisDirection() == EnumFacing.AxisDirection.POSITIVE)
{
d2 = axisalignedbb.maxZ - axisalignedbb1.minZ;
}
else
{
d2 = axisalignedbb1.maxZ - axisalignedbb.minZ;
}
d2 = d2 + 0.01D;
}
//@formatter:off
entity.move(MoverType.SHULKER_BOX, d0 * enumfacing.getFrontOffsetX(), d1 * enumfacing.getFrontOffsetY(), d2 * enumfacing.getFrontOffsetZ());
//@formatter:on
}
}
}
}
}
@Override
public boolean receiveClientEvent(int id, int type)
{
if (id == 1)
{
this.openCount = type;
if (type == 0)
{
this.animationStatus = AnimationStatus.CLOSING;
}
if (type == 1)
{
this.animationStatus = AnimationStatus.OPENING;
}
return true;
}
else if (id == 2)
{
this.facing = EnumFacing.VALUES[type];
return true;
}
else if (id == 3)
{
this.facing = EnumFacing.VALUES[type & 0x7];
this.openCount = (type & 0xF8) >> 3;
return true;
}
else
{
return super.receiveClientEvent(id, type);
}
}
@Override
public void openInventory(EntityPlayer player)
{
if (!player.isSpectator())
{
if (this.openCount < 0)
{
this.openCount = 0;
}
++this.openCount;
this.world.addBlockEvent(this.pos, this.getBlockType(), 1, this.openCount);
if (this.openCount == 1)
{
//@formatter:off
this.world.playSound((EntityPlayer) null, this.pos, SoundEvents.BLOCK_SHULKER_BOX_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
//@formatter:on
}
}
}
@Override
public void closeInventory(EntityPlayer player)
{
if (!player.isSpectator())
{
--this.openCount;
this.world.addBlockEvent(this.pos, this.getBlockType(), 1, this.openCount);
if (this.openCount <= 0)
{
//@formatter:off
this.world.playSound((EntityPlayer) null, this.pos, SoundEvents.BLOCK_SHULKER_BOX_CLOSE, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
//@formatter:on
}
}
}
public void setFacing(EnumFacing facing)
{
this.facing = facing;
}
@Override
@Nullable
public SPacketUpdateTileEntity getUpdatePacket()
{
NBTTagCompound compound = new NBTTagCompound();
compound.setByte("facing", (byte) this.facing.ordinal());
return new SPacketUpdateTileEntity(this.pos, 0, compound);
}
@Override
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt)
{
if (pkt.getTileEntityType() == 0)
{
NBTTagCompound compound = pkt.getNbtCompound();
this.facing = EnumFacing.VALUES[compound.getByte("facing")];
}
}
public NonNullList<ItemStack> buildItemStackDataList()
{
if (this.getType().isTransparent())
{
NonNullList<ItemStack> sortList = NonNullList.<ItemStack> withSize(this.getTopItems().size(), ItemStack.EMPTY);
int pos = 0;
for (ItemStack is : this.topStacks)
{
if (!is.isEmpty())
{
sortList.set(pos, is);
}
else
{
sortList.set(pos, ItemStack.EMPTY);
}
pos++;
}
return sortList;
}
return NonNullList.<ItemStack> withSize(this.getTopItems().size(), ItemStack.EMPTY);
}
@Override
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn)
{
this.fillWithLoot(playerIn);
return new ContainerIronShulkerBox(playerInventory, this, this.shulkerBoxType, this.shulkerBoxType.xSize, this.shulkerBoxType.ySize);
}
@Override
public String getGuiID()
{
return "IronChest:" + this.getType().name() + "_shulker_box";
}
@Override
public boolean canRenderBreaking()
{
return true;
}
@Override
public NBTTagCompound getUpdateTag()
{
return this.writeToNBT(new NBTTagCompound());
}
@Override
public NonNullList<ItemStack> getItems()
{
return this.items;
}
public NonNullList<ItemStack> getTopItems()
{
return this.topStacks;
}
@Override
public boolean isEmpty()
{
for (ItemStack itemstack : this.items)
{
if (!itemstack.isEmpty())
{
return false;
}
}
return true;
}
@Override
public int[] getSlotsForFace(EnumFacing side)
{
return SLOTS;
}
/**
* Returns true if automation can insert the given item in the given slot from the given side.
*/
@Override
public boolean canInsertItem(int index, ItemStack itemStackIn, EnumFacing direction)
{
//@formatter:off
return !(Block.getBlockFromItem(itemStackIn.getItem()) instanceof BlockIronShulkerBox) && !(Block.getBlockFromItem(itemStackIn.getItem()) instanceof BlockShulkerBox);
//@formatter:on
}
/**
* Returns true if automation can extract the given item in the given slot from the given side.
*/
@Override
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction)
{
return true;
}
@Override
public void clear()
{
this.hasBeenCleared = true;
super.clear();
}
public boolean isCleared()
{
return this.hasBeenCleared;
}
public void setHasBeenUpgraded()
{
this.hasBeenUpgraded = true;
}
public boolean beenUpgraded()
{
return this.hasBeenUpgraded;
}
public float getProgress(float partialTicks)
{
return this.progressOld + (this.progress - this.progressOld) * partialTicks;
}
@SideOnly(Side.CLIENT)
public EnumDyeColor getColor()
{
if (this.color == null)
{
this.color = BlockIronShulkerBox.getColorFromBlock(this.getBlockType());
}
return this.color;
}
public boolean isDestroyedByCreativePlayer()
{
return this.destroyedByCreativePlayer;
}
public void setDestroyedByCreativePlayer(boolean destoryedByCreativeUser)
{
this.destroyedByCreativePlayer = destoryedByCreativeUser;
}
public boolean shouldDrop()
{
return !this.isDestroyedByCreativePlayer() || !this.isEmpty() || this.hasCustomName() || this.lootTable != null;
}
protected void sendTopStacksPacket()
{
NonNullList<ItemStack> stacks = this.buildItemStackDataList();
//@formatter:off
IronChest.packetHandler.sendToAllAround(new MessageCrystalShulkerSync(this, stacks), new TargetPoint(world.provider.getDimension(), getPos().getX(), getPos().getY(), getPos().getZ(), 128));
//@formatter:on
}
public void receiveMessageFromServer(NonNullList<ItemStack> topStacks)
{
this.topStacks = topStacks;
}
public static enum AnimationStatus
{
CLOSED, OPENING, OPENED, CLOSING;
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntityObsidianShulkerBox extends TileEntityIronShulkerBox
{
public TileEntityObsidianShulkerBox()
{
this(null);
}
public TileEntityObsidianShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.OBSIDIAN);
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************************
* 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.tileentity.shulker;
import javax.annotation.Nullable;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import net.minecraft.item.EnumDyeColor;
public class TileEntitySilverShulkerBox extends TileEntityIronShulkerBox
{
public TileEntitySilverShulkerBox()
{
this(null);
}
public TileEntitySilverShulkerBox(@Nullable EnumDyeColor colorIn)
{
super(colorIn, IronShulkerBoxType.SILVER);
}
}

View File

@ -0,0 +1,64 @@
/*******************************************************************************
* 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.util;
import cpw.mods.ironchest.common.blocks.shulker.BlockIronShulkerBox;
import cpw.mods.ironchest.common.blocks.shulker.IronShulkerBoxType;
import cpw.mods.ironchest.common.tileentity.shulker.TileEntityIronShulkerBox;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDispenser;
import net.minecraft.block.state.IBlockState;
import net.minecraft.dispenser.IBlockSource;
import net.minecraft.entity.Entity;
import net.minecraft.init.Bootstrap.BehaviorDispenseOptional;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BehaviorDispenseIronShulkerBox extends BehaviorDispenseOptional
{
@Override
protected ItemStack dispenseStack(IBlockSource source, ItemStack stack)
{
Block block = Block.getBlockFromItem(stack.getItem());
World world = source.getWorld();
EnumFacing enumfacing = source.getBlockState().getValue(BlockDispenser.FACING);
BlockPos blockpos = source.getBlockPos().offset(enumfacing);
this.successful = world.mayPlace(block, blockpos, false, EnumFacing.DOWN, (Entity) null);
if (this.successful)
{
EnumFacing enumfacing1 = world.isAirBlock(blockpos.down()) ? enumfacing : EnumFacing.UP;
IBlockState iblockstate = block.getDefaultState().withProperty(BlockIronShulkerBox.VARIANT_PROP, IronShulkerBoxType.VALUES[stack.getMetadata()]);
world.setBlockState(blockpos, iblockstate);
TileEntity tileentity = world.getTileEntity(blockpos);
ItemStack itemstack = stack.splitStack(1);
((TileEntityIronShulkerBox) tileentity).setFacing(enumfacing1);
if (itemstack.hasTagCompound())
{
((TileEntityIronShulkerBox) tileentity).loadFromNbt(itemstack.getTagCompound().getCompoundTag("BlockEntityTag"));
}
if (itemstack.hasDisplayName())
{
((TileEntityIronShulkerBox) tileentity).setCustomName(itemstack.getDisplayName());
}
world.updateComparatorOutputLevel(blockpos, iblockstate.getBlock());
}
return stack;
}
}

View File

@ -0,0 +1,55 @@
/*******************************************************************************
* 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.util;
import javax.annotation.Nonnull;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class CreativeTab extends CreativeTabs
{
private ItemStack icon;
// a vanilla icon in case the other one isn't present
public CreativeTab(String label, ItemStack backupIcon)
{
super(label);
this.icon = backupIcon;
}
public void setDisplayIcon(ItemStack displayIcon)
{
if (!displayIcon.isEmpty())
{
this.icon = displayIcon;
}
}
@Nonnull
@SideOnly(Side.CLIENT)
@Override
public ItemStack getIconItemStack()
{
return icon;
}
@Nonnull
@SideOnly(Side.CLIENT)
@Override
public ItemStack getTabIconItem()
{
return icon;
}
}

View File

@ -0,0 +1,71 @@
/*******************************************************************************
* 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.util;
import java.util.List;
import com.google.common.collect.Lists;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SuppressWarnings("deprecation")
public class ItemTooltip extends Item
{
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced)
{
addOptionalTooltip(stack, tooltip);
super.addInformation(stack, playerIn, tooltip, advanced);
}
public static void addOptionalTooltip(ItemStack stack, List<String> tooltip)
{
if (I18n.canTranslate(stack.getUnlocalizedName() + ".tooltip"))
{
tooltip.addAll(getTooltips(TextFormatting.GRAY.toString() + translateRecursive(stack.getUnlocalizedName() + ".tooltip")));
}
else if (I18n.canTranslate(stack.getUnlocalizedName() + ".tooltip"))
{
tooltip.addAll(getTooltips(TextFormatting.GRAY.toString() + translateRecursive(stack.getUnlocalizedName() + ".tooltip")));
}
}
public static String translateRecursive(String key, Object... params)
{
return I18n.translateToLocal(I18n.translateToLocalFormatted(key, params));
}
public static List<String> getTooltips(String text)
{
List<String> list = Lists.newLinkedList();
if (text == null)
return list;
int j = 0;
int k;
while ((k = text.indexOf("\\n", j)) >= 0)
{
list.add(text.substring(j, k));
j = k + 2;
}
list.add(text.substring(j, text.length()));
return list;
}
}

View File

@ -0,0 +1,190 @@
/*******************************************************************************
* 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.util;
import javax.annotation.Nonnull;
import cpw.mods.ironchest.IronChest;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent.MissingMapping;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class MissingMappingsHandler
{
public static void onMissingMappings(FMLMissingMappingsEvent event)
{
for (MissingMapping mapping : event.get())
{
if (mapping.resourceLocation.getResourceDomain().equals(IronChest.MOD_ID))
{
@Nonnull
String path = mapping.resourceLocation.getResourcePath();
replaceOldChest(path, mapping);
replaceOldUpgrades(path, mapping);
replaceNewUpgrades(path, mapping);
}
}
}
private static void replaceOldChest(String path, MissingMapping mapping)
{
if (path.endsWith("blockironchest"))
{
path = path.replace("blockironchest", "iron_chest");
ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
Block block = ForgeRegistries.BLOCKS.getValue(newRes);
if (block != null)
{
if (mapping.type == GameRegistry.Type.BLOCK)
{
mapping.remap(block);
}
else
{
mapping.remap(Item.getItemFromBlock(block));
}
}
}
}
private static void replaceOldUpgrades(String path, MissingMapping mapping)
{
if (path.endsWith("irongoldupgrade"))
{
path = path.replace("irongoldupgrade", "iron_gold_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("golddiamondupgrade"))
{
path = path.replace("golddiamondupgrade", "gold_diamond_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("coppersilverupgrade"))
{
path = path.replace("coppersilverupgrade", "copper_silver_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("silvergoldupgrade"))
{
path = path.replace("silvergoldupgrade", "silver_gold_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("copperironupgrade"))
{
path = path.replace("copperironupgrade", "copper_iron_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamondcrystalupgrade"))
{
path = path.replace("diamondcrystalupgrade", "diamond_crystal_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("woodironupgrade"))
{
path = path.replace("woodironupgrade", "wood_iron_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("woodcopperupgrade"))
{
path = path.replace("woodcopperupgrade", "wood_copper_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamondobsidianupgrade"))
{
path = path.replace("diamondobsidianupgrade", "diamond_obsidian_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
}
private static void replaceNewUpgrades(String path, MissingMapping mapping)
{
if (path.endsWith("iron_gold_upgrade"))
{
path = path.replace("iron_gold_upgrade", "iron_gold_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("gold_diamond_upgrade"))
{
path = path.replace("gold_diamond_upgrade", "gold_diamond_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("copper_silver_upgrade"))
{
path = path.replace("copper_silver_upgrade", "copper_silver_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("silver_gold_upgrade"))
{
path = path.replace("silver_gold_upgrade", "silver_gold_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("copper_iron_upgrade"))
{
path = path.replace("copper_iron_upgrade", "copper_iron_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamond_crystal_upgrade"))
{
path = path.replace("diamond_crystal_upgrade", "diamond_crystal_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("wood_iron_upgrade"))
{
path = path.replace("wood_iron_upgrade", "wood_iron_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("wood_copper_upgrade"))
{
path = path.replace("wood_copper_upgrade", "wood_copper_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
if (path.endsWith("diamond_obsidian_upgrade"))
{
path = path.replace("diamond_obsidian_upgrade", "diamond_obsidian_chest_upgrade");
replaceUpgradeItem(path, mapping);
}
}
private static void replaceUpgradeItem(String path, MissingMapping mapping)
{
ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path);
Item item = ForgeRegistries.ITEMS.getValue(newRes);
if (item != null)
{
mapping.remap(item);
}
}
}

View File

@ -1,7 +1,18 @@
package cpw.mods.ironchest; /*******************************************************************************
* 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.util;
import java.util.HashSet; import java.util.HashSet;
import cpw.mods.ironchest.common.ai.IronChestAIOcelotSit;
import net.minecraft.entity.ai.EntityAIOcelotSit; import net.minecraft.entity.ai.EntityAIOcelotSit;
import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry; import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry;
import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityOcelot;

View File

@ -9,49 +9,49 @@
"iron": { "iron": {
"textures": { "textures": {
"particle": "ironchest:blocks/iron_break", "particle": "ironchest:blocks/iron_break",
"texture": "ironchest:model/iron_chest" "texture": "ironchest:model/chest/iron_chest"
} }
}, },
"gold": { "gold": {
"textures": { "textures": {
"particle": "ironchest:blocks/gold_break", "particle": "ironchest:blocks/gold_break",
"texture": "ironchest:model/gold_chest" "texture": "ironchest:model/chest/gold_chest"
} }
}, },
"diamond": { "diamond": {
"textures": { "textures": {
"particle": "ironchest:blocks/diamond_break", "particle": "ironchest:blocks/diamond_break",
"texture": "ironchest:model/diamond_chest" "texture": "ironchest:model/chest/diamond_chest"
} }
}, },
"copper": { "copper": {
"textures": { "textures": {
"particle": "ironchest:blocks/copper_break", "particle": "ironchest:blocks/copper_break",
"texture": "ironchest:model/copper_chest" "texture": "ironchest:model/chest/copper_chest"
} }
}, },
"silver": { "silver": {
"textures": { "textures": {
"particle": "ironchest:blocks/silver_break", "particle": "ironchest:blocks/silver_break",
"texture": "ironchest:model/silver_chest" "texture": "ironchest:model/chest/silver_chest"
} }
}, },
"crystal": { "crystal": {
"textures": { "textures": {
"particle": "ironchest:blocks/crystal_break", "particle": "ironchest:blocks/crystal_break",
"texture": "ironchest:model/crystal_chest" "texture": "ironchest:model/chest/crystal_chest"
} }
}, },
"obsidian": { "obsidian": {
"textures": { "textures": {
"particle": "minecraft:blocks/obsidian", "particle": "minecraft:blocks/obsidian",
"texture": "ironchest:model/obsidian_chest" "texture": "ironchest:model/chest/obsidian_chest"
} }
}, },
"dirtchest9000": { "dirtchest9000": {
"textures": { "textures": {
"particle": "minecraft:blocks/dirt", "particle": "minecraft:blocks/dirt",
"texture": "ironchest:model/dirt_chest" "texture": "ironchest:model/chest/dirt_chest"
} }
}, },
"wood": { "wood": {

View File

@ -6,49 +6,49 @@
}, },
"variants": { "variants": {
"variant": { "variant": {
"copper_silver_upgrade": { "copper_silver_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/copper_silver_upgrade" "layer0": "ironchest:items/chest/copper_silver_upgrade"
} }
}, },
"diamond_crystal_upgrade": { "diamond_crystal_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/diamond_crystal_upgrade" "layer0": "ironchest:items/chest/diamond_crystal_upgrade"
} }
}, },
"diamond_obsidian_upgrade": { "diamond_obsidian_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/diamond_obsidian_upgrade" "layer0": "ironchest:items/chest/diamond_obsidian_upgrade"
} }
}, },
"gold_diamond_upgrade": { "gold_diamond_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/gold_diamond_upgrade" "layer0": "ironchest:items/chest/gold_diamond_upgrade"
} }
}, },
"iron_gold_upgrade": { "iron_gold_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/iron_gold_upgrade" "layer0": "ironchest:items/chest/iron_gold_upgrade"
} }
}, },
"silver_gold_upgrade": { "silver_gold_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/silver_gold_upgrade" "layer0": "ironchest:items/chest/silver_gold_upgrade"
} }
}, },
"wood_copper_upgrade": { "wood_copper_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/wood_copper_upgrade" "layer0": "ironchest:items/chest/wood_copper_upgrade"
} }
}, },
"wood_iron_upgrade": { "wood_iron_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/wood_iron_upgrade" "layer0": "ironchest:items/chest/wood_iron_upgrade"
} }
}, },
"copper_iron_upgrade": { "copper_iron_chest_upgrade": {
"textures": { "textures": {
"layer0": "ironchest:items/copper_iron_upgrade" "layer0": "ironchest:items/chest/copper_iron_upgrade"
} }
} }
} }

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/black/shulker_black_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/black/shulker_black_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/black/shulker_black_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/black/shulker_black_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/black/shulker_black_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/black/shulker_black_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/black/shulker_black_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_black",
"texture":"minecraft:entity/shulker/shulker_black"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/blue/shulker_blue_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/blue/shulker_blue_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_blue",
"texture":"minecraft:entity/shulker/shulker_blue"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/brown/shulker_brown_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/brown/shulker_brown_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_brown",
"texture":"minecraft:entity/shulker/shulker_brown"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/cyan/shulker_cyan_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_cyan",
"texture":"minecraft:entity/shulker/shulker_cyan"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/gray/shulker_gray_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/gray/shulker_gray_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_gray",
"texture":"minecraft:entity/shulker/shulker_gray"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/green/shulker_green_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/green/shulker_green_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/green/shulker_green_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/green/shulker_green_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/green/shulker_green_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/green/shulker_green_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/green/shulker_green_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_green",
"texture":"minecraft:entity/shulker/shulker_green"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/light_blue/shulker_light_blue_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_light_blue",
"texture":"minecraft:entity/shulker/shulker_light_blue"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/lime/shulker_lime_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/lime/shulker_lime_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_lime",
"texture":"minecraft:entity/shulker/shulker_lime"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/magenta/shulker_magenta_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_magenta",
"texture":"minecraft:entity/shulker/shulker_magenta"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/orange/shulker_orange_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/orange/shulker_orange_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_orange",
"texture":"minecraft:entity/shulker/shulker_orange"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/pink/shulker_pink_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/pink/shulker_pink_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_pink",
"texture":"minecraft:entity/shulker/shulker_pink"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/purple/shulker_purple_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/purple/shulker_purple_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_purple",
"texture":"minecraft:entity/shulker/shulker_purple"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/red/shulker_red_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/red/shulker_red_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/red/shulker_red_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/red/shulker_red_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/red/shulker_red_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/red/shulker_red_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/red/shulker_red_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_red",
"texture":"minecraft:entity/shulker/shulker_red"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/silver/shulker_silver_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/silver/shulker_silver_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_silver",
"texture":"minecraft:entity/shulker/shulker_silver"
}
}
}
}
}

View File

@ -0,0 +1,56 @@
{
"forge_marker":1,
"defaults":{
"model":"builtin/generated",
"transform":"forge:default-item"
},
"variants":{
"variant":{
"copper_silver_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/copper_silver_upgrade"
}
},
"diamond_crystal_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/diamond_crystal_upgrade"
}
},
"diamond_obsidian_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/diamond_obsidian_upgrade"
}
},
"gold_diamond_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/gold_diamond_upgrade"
}
},
"iron_gold_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/iron_gold_upgrade"
}
},
"silver_gold_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/silver_gold_upgrade"
}
},
"vanilla_copper_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/vanilla_copper_upgrade"
}
},
"vanilla_iron_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/vanilla_iron_upgrade"
}
},
"copper_iron_shulker_upgrade":{
"textures":{
"layer0":"ironchest:items/shulker/copper_iron_upgrade"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/white/shulker_white_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/white/shulker_white_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/white/shulker_white_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/white/shulker_white_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/white/shulker_white_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/white/shulker_white_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/white/shulker_white_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_white",
"texture":"minecraft:entity/shulker/shulker_white"
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"forge_marker":1,
"defaults":{
"model":"ironchest:iron_shulker_box",
"transform":"forge:default-block"
},
"variants":{
"variant":{
"iron":{
"textures":{
"particle":"ironchest:blocks/iron_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_iron"
}
},
"gold":{
"textures":{
"particle":"ironchest:blocks/gold_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_gold"
}
},
"diamond":{
"textures":{
"particle":"ironchest:blocks/diamond_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_diamond"
}
},
"copper":{
"textures":{
"particle":"ironchest:blocks/copper_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_copper"
}
},
"silver":{
"textures":{
"particle":"ironchest:blocks/silver_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_silver"
}
},
"crystal":{
"textures":{
"particle":"ironchest:blocks/crystal_break",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_crystal"
}
},
"obsidian":{
"textures":{
"particle":"minecraft:blocks/obsidian",
"texture":"ironchest:model/shulker/yellow/shulker_yellow_obsidian"
}
},
"vanilla":{
"textures":{
"particle":"minecraft:blocks/shulker_top_yellow",
"texture":"minecraft:entity/shulker/shulker_yellow"
}
}
}
}
}

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Železná truhla ################
tile.ironchest:GOLD.name=Zlatá truhla # Chests #
tile.ironchest:DIAMOND.name=Diamantová truhla ################
tile.ironchest:COPPER.name=Měděná truhla
tile.ironchest:SILVER.name=Stříbrná truhla
tile.ironchest:CRYSTAL.name=Krystalová truhla
tile.ironchest:OBSIDIAN.name=Obsidiánová truhla
item.ironchest:IRONGOLD.name=Vylepšení železné truhly na zlatou tile.ironchest.chest.iron.name=Železná truhla
item.ironchest:GOLDDIAMOND.name=Vylepšení zlaté truhly na diamantovou tile.ironchest.chest.gold.name=Zlatá truhla
item.ironchest:COPPERSILVER.name=Vylepšení měděné truhly na stříbrnou tile.ironchest.chest.diamond.name=Diamantová truhla
item.ironchest:SILVERGOLD.name=Vylepšení stříbrné truhly na zlatou tile.ironchest.chest.copper.name=Měděná truhla
item.ironchest:COPPERIRON.name=Vylepšení měděné truhly na železnou tile.ironchest.chest.silver.name=Stříbrná truhla
item.ironchest:DIAMONDCRYSTAL.name=Vylepšení diamantové truhly na krystalovou tile.ironchest.chest.crystal.name=Krystalová truhla
item.ironchest:WOODIRON.name=Vylepšení dřevěné truhly na železnou tile.ironchest.chest.obsidian.name=Obsidiánová truhla
item.ironchest:WOODCOPPER.name=Vylepšení dřevěné truhly na měděnou
item.ironchest:DIAMONDOBSIDIAN.name=Vylepšení diamantové truhly na obsidiánovou item.ironchest.chest.iron_gold.name=Vylepšení železné truhly na zlatou
item.ironchest.chest.gold_diamond.name=Vylepšení zlaté truhly na diamantovou
item.ironchest.chest.copper_silver.name=Vylepšení měděné truhly na stříbrnou
item.ironchest.chest.silver_gold.name=Vylepšení stříbrné truhly na zlatou
item.ironchest.chest.copper_iron.name=Vylepšení měděné truhly na železnou
item.ironchest.chest.diamond_crystal.name=Vylepšení diamantové truhly na krystalovou
item.ironchest.chest.wood_iron.name=Vylepšení dřevěné truhly na železnou
item.ironchest.chest.wood_copper.name=Vylepšení dřevěné truhly na měděnou
item.ironchest.chest.diamond_obsidian.name=Vylepšení diamantové truhly na obsidiánovou

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Jern Kiste ################
tile.ironchest:GOLD.name=Guld Kiste # Chests #
tile.ironchest:DIAMOND.name=Diamant Kiste ################
tile.ironchest:COPPER.name=Kobber Kiste
tile.ironchest:SILVER.name=Sølv Kiste
tile.ironchest:CRYSTAL.name=Krystal Kiste
tile.ironchest:OBSIDIAN.name=Obsidian Kiste
item.ironchest:IRONGOLD.name=Jern til Guld Kiste Opgradering tile.ironchest.chest.iron.name=Jern Kiste
item.ironchest:GOLDDIAMOND.name=Guld til Diamant Kiste Opgradering tile.ironchest.chest.gold.name=Guld Kiste
item.ironchest:COPPERSILVER.name=Kobber til Sølv Kiste Opgradering tile.ironchest.chest.diamond.name=Diamant Kiste
item.ironchest:SILVERGOLD.name=Sølv til Guld Kiste Opgradering tile.ironchest.chest.copper.name=Kobber Kiste
item.ironchest:COPPERIRON.name=Kobber til Jern Kiste Opgradering tile.ironchest.chest.silver.name=Sølv Kiste
item.ironchest:DIAMONDCRYSTAL.name=Diamant til Krystal Kiste Opgradering tile.ironchest.chest.crystal.name=Krystal Kiste
item.ironchest:WOODIRON.name=Træ til Jern Kiste Opgradering tile.ironchest.chest.obsidian.name=Obsidian Kiste
item.ironchest:WOODCOPPER.name=Træ til Kobber Kiste Opgradering
item.ironchest:DIAMONDOBSIDIAN.name=Diamant til Obsidian Kiste Opgradering item.ironchest.chest.iron_gold.name=Jern til Guld Kiste Opgradering
item.ironchest.chest.gold_diamond.name=Guld til Diamant Kiste Opgradering
item.ironchest.chest.copper_silver.name=Kobber til Sølv Kiste Opgradering
item.ironchest.chest.silver_gold.name=Sølv til Guld Kiste Opgradering
item.ironchest.chest.copper_iron.name=Kobber til Jern Kiste Opgradering
item.ironchest.chest.diamond_crystal.name=Diamant til Krystal Kiste Opgradering
item.ironchest.chest.wood_iron.name=Træ til Jern Kiste Opgradering
item.ironchest.chest.wood_copper.name=Træ til Kobber Kiste Opgradering
item.ironchest.chest.diamond_obsidian.name=Diamant til Obsidian Kiste Opgradering

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Eisentruhe ################
tile.ironchest:GOLD.name=Goldtruhe # Chests #
tile.ironchest:DIAMOND.name=Diamanttruhe ################
tile.ironchest:COPPER.name=Kupfertruhe
tile.ironchest:SILVER.name=Silbertruhe
tile.ironchest:CRYSTAL.name=Kristalltruhe
tile.ironchest:OBSIDIAN.name=Obsidiantruhe
tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
item.ironchest:IRONGOLD.name=Eisen-zu-Goldtruhen-Upgrade tile.ironchest.chest.iron.name=Eisentruhe
item.ironchest:GOLDDIAMOND.name=Gold-zu-Diamanttruhen-Upgrade tile.ironchest.chest.gold.name=Goldtruhe
item.ironchest:COPPERSILVER.name=Kupfer-zu-Silbertruhen-Upgrade tile.ironchest.chest.diamond.name=Diamanttruhe
item.ironchest:SILVERGOLD.name=Silber-zu-Goldtruhen-Upgrade tile.ironchest.chest.copper.name=Kupfertruhe
item.ironchest:COPPERIRON.name=Kupfer-zu-Eisentruhen-Upgrade tile.ironchest.chest.silver.name=Silbertruhe
item.ironchest:DIAMONDCRYSTAL.name=Diamant-zu-Kristalltruhen-Upgrade tile.ironchest.chest.crystal.name=Kristalltruhe
item.ironchest:WOODIRON.name=Holz-zu-Eisentruhen-Upgrade tile.ironchest.chest.obsidian.name=Obsidiantruhe
item.ironchest:WOODCOPPER.name=Holz-zu-Kupfertruhen-Upgrade tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Diamant-zu-Obsidiantruhen-Upgrade
book.ironchest:dirtchest9000.title=Wie du deine neue DirtChest 9000 nutzt! item.ironchest.chest.iron_gold.name=Eisen-zu-Goldtruhen-Upgrade
book.ironchest:dirtchest9000.page1=Willkommen zu Ihrer neuen DirtChest 9000! Wir hoffen, dass Sie viele freudige Jahre genießen werden, wenn Sie Ihre Erd-Stacks in unserem nützlichen Speichergerät lagern. item.ironchest.chest.gold_diamond.name=Gold-zu-Diamanttruhen-Upgrade
book.ironchest:dirtchest9000.page2=Nutzung: Werfen Sie einfach den Erd-Stack Ihrer Wahl in den äußerst rezeptiven Slot und genießen Sie die Annehmlichkeit, diese Erde für Sie verfügbar zu haben, jedes mal, wenn Sie diese Truhe passieren! item.ironchest.chest.copper_silver.name=Kupfer-zu-Silbertruhen-Upgrade
book.ironchest:dirtchest9000.page3=Wir hoffen, Sie haben das Durchgehen dieser Bedienungsanleitung genossen, und hoffen, dass sie sich weiterhin entscheiden werden, in Zukunft unsere Produkte zu nutzen! Mit freundlichen Grüßen, Die DirtChest 9000 manual writers incorporated. item.ironchest.chest.silver_gold.name=Silber-zu-Goldtruhen-Upgrade
book.ironchest:dirtchest9000.page4=Garantie: Dieses Produkt hat keine Garantie jeglicher Sorte. Ihre Erde könnte nicht gespeichert werden, er könnte langsam in die Umwelt gesaugt werden, oder stattdessen könnte das Produkt gar nichts machen. item.ironchest.chest.copper_iron.name=Kupfer-zu-Eisentruhen-Upgrade
book.ironchest:dirtchest9000.page5=DirtChest 9000 ist freundlich zur Umwelt. Bitte entsorgen Sie diesen Guide verantwortungsbewusst, und tun sie nicht, was Sie immer tun und schmeißen ihn in irgendwelche Lava. Wir würden sehr traurig sein. item.ironchest.chest.diamond_crystal.name=Diamant-zu-Kristalltruhen-Upgrade
item.ironchest.chest.wood_iron.name=Holz-zu-Eisentruhen-Upgrade
item.ironchest.chest.wood_copper.name=Holz-zu-Kupfertruhen-Upgrade
item.ironchest.chest.diamond_obsidian.name=Diamant-zu-Obsidiantruhen-Upgrade
book.ironchest.dirtchest9000.title=Wie du deine neue DirtChest 9000 nutzt!
book.ironchest.dirtchest9000.page1=Willkommen zu Ihrer neuen DirtChest 9000! Wir hoffen, dass Sie viele freudige Jahre genießen werden, wenn Sie Ihre Erd-Stacks in unserem nützlichen Speichergerät lagern.
book.ironchest.dirtchest9000.page2=Nutzung: Werfen Sie einfach den Erd-Stack Ihrer Wahl in den äußerst rezeptiven Slot und genießen Sie die Annehmlichkeit, diese Erde für Sie verfügbar zu haben, jedes mal, wenn Sie diese Truhe passieren!
book.ironchest.dirtchest9000.page3=Wir hoffen, Sie haben das Durchgehen dieser Bedienungsanleitung genossen, und hoffen, dass sie sich weiterhin entscheiden werden, in Zukunft unsere Produkte zu nutzen! Mit freundlichen Grüßen, Die DirtChest 9000 manual writers incorporated.
book.ironchest.dirtchest9000.page4=Garantie: Dieses Produkt hat keine Garantie jeglicher Sorte. Ihre Erde könnte nicht gespeichert werden, er könnte langsam in die Umwelt gesaugt werden, oder stattdessen könnte das Produkt gar nichts machen.
book.ironchest.dirtchest9000.page5=DirtChest 9000 ist freundlich zur Umwelt. Bitte entsorgen Sie diesen Guide verantwortungsbewusst, und tun sie nicht, was Sie immer tun und schmeißen ihn in irgendwelche Lava. Wir würden sehr traurig sein.

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Σιδερένιο Σεντούκι ################
tile.ironchest:GOLD.name=Χρυσό Σεντούκι # Chests #
tile.ironchest:DIAMOND.name=Διαμαντένιο Σεντούκι ################
tile.ironchest:COPPER.name=Χάλκινο Σεντούκι
tile.ironchest:SILVER.name=Ασημένιο Σεντούκι
tile.ironchest:CRYSTAL.name=Κρυστάλλινο Σεντούκι
tile.ironchest:OBSIDIAN.name=Σεντούκι Οψιδιανού
item.ironchest:IRONGOLD.name=Αναβάθμιση από Σιδερένιο σε Χρυσό Σεντούκι tile.ironchest.chest.iron.name=Σιδερένιο Σεντούκι
item.ironchest:GOLDDIAMOND.name=Αναβάθμιση από Χρυσό σε Διαμαντένιο Σεντούκι tile.ironchest.chest.gold.name=Χρυσό Σεντούκι
item.ironchest:COPPERSILVER.name=Αναβάθμιση από Χάλκινο σε Ασημένιο Σεντούκι tile.ironchest.chest.diamond.name=Διαμαντένιο Σεντούκι
item.ironchest:SILVERGOLD.name=Αναβάθμιση από Ασημένιο σε Χρυσό Σεντούκι tile.ironchest.chest.copper.name=Χάλκινο Σεντούκι
item.ironchest:COPPERIRON.name=Αναβάθμιση από Χάλκινο σε Σιδερένιο Σεντούκι tile.ironchest.chest.silver.name=Ασημένιο Σεντούκι
item.ironchest:DIAMONDCRYSTAL.name=Αναβάθμιση από Διαμαντένιο σε Κρυστάλλινο Σεντούκι tile.ironchest.chest.crystal.name=Κρυστάλλινο Σεντούκι
item.ironchest:WOODIRON.name=Αναβάθμιση από Ξύλινο σε Σιδερένιο Σεντούκι tile.ironchest.chest.obsidian.name=Σεντούκι Οψιδιανού
item.ironchest:WOODCOPPER.name=Αναβάθμιση από Ξύλινο σε Χάλκινο Σεντούκι
item.ironchest:DIAMONDOBSIDIAN.name=Αναβάθμιση από Διαμαντένιο σε Σεντούκι Οψιδιανού item.ironchest.chest.iron_gold.name=Αναβάθμιση από Σιδερένιο σε Χρυσό Σεντούκι
item.ironchest.chest.gold_diamond.name=Αναβάθμιση από Χρυσό σε Διαμαντένιο Σεντούκι
item.ironchest.chest.copper_silver.name=Αναβάθμιση από Χάλκινο σε Ασημένιο Σεντούκι
item.ironchest.chest.silver_gold.name=Αναβάθμιση από Ασημένιο σε Χρυσό Σεντούκι
item.ironchest.chest.copper_iron.name=Αναβάθμιση από Χάλκινο σε Σιδερένιο Σεντούκι
item.ironchest.chest.diamond_crystal.name=Αναβάθμιση από Διαμαντένιο σε Κρυστάλλινο Σεντούκι
item.ironchest.chest.wood_iron.name=Αναβάθμιση από Ξύλινο σε Σιδερένιο Σεντούκι
item.ironchest.chest.wood_copper.name=Αναβάθμιση από Ξύλινο σε Χάλκινο Σεντούκι
item.ironchest.chest.diamond_obsidian.name=Αναβάθμιση από Διαμαντένιο σε Σεντούκι Οψιδιανού

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Steel Coffer ################
tile.ironchest:GOLD.name=Gold Coffer # Chests #
tile.ironchest:DIAMOND.name=Diamond Coffer ################
tile.ironchest:COPPER.name=Copper Coffer
tile.ironchest:SILVER.name=Silver Coffer
tile.ironchest:CRYSTAL.name=Shinin' Coffer
tile.ironchest:OBSIDIAN.name=Coffer o' tears
tile.ironchest:DIRTCHEST9000.name=FilthCoffer 9000!
item.ironchest:IRONGOLD.name=Steel to Gold Coffer Upgradin' tile.ironchest.chest.iron.name=Steel Coffer
item.ironchest:GOLDDIAMOND.name=Gold to Diamond Coffer Upgradin' tile.ironchest.chest.gold.name=Gold Coffer
item.ironchest:COPPERSILVER.name=Copper to Silver Coffer Upgradin' tile.ironchest.chest.diamond.name=Diamond Coffer
item.ironchest:SILVERGOLD.name=Silver to Gold Coffer Upgradin' tile.ironchest.chest.copper.name=Copper Coffer
item.ironchest:COPPERIRON.name=Copper to Steel Coffer Upgradin' tile.ironchest.chest.silver.name=Silver Coffer
item.ironchest:DIAMONDCRYSTAL.name=Diamond to Shinin' Coffer Upgradin' tile.ironchest.chest.crystal.name=Shinin' Coffer
item.ironchest:WOODIRON.name=Timber to Steel Coffer Upgradin' tile.ironchest.chest.obsidian.name=Coffer o' tears
item.ironchest:WOODCOPPER.name=Wood to Copper Coffer Upgradin' tile.ironchest.chest.dirtchest9000.name=FilthCoffer 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Diamond to Coffer o' Tears Upgradin'
book.ironchest:dirtchest9000.title=How to use yer FilthCoffer 9000! item.ironchest.chest.iron_gold.name=Steel to Gold Coffer Upgradin'
book.ironchest:dirtchest9000.page1=Welcome to yer new FilthCoffer 9000! We hope ye will enjoy many happy years of storing yer filth wit yer coffer . item.ironchest.chest.gold_diamond.name=Gold to Diamond Coffer Upgradin'
book.ironchest:dirtchest9000.page2=Usage: simply put yer filth in yer slot and yer got yerself some filth any time ye need it! item.ironchest.chest.copper_silver.name=Copper to Silver Coffer Upgradin'
book.ironchest:dirtchest9000.page3=We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated. item.ironchest.chest.silver_gold.name=Silver to Gold Coffer Upgradin'
book.ironchest:dirtchest9000.page4=Warranty: We can't keep yer filth from pirates. Yer filth may not be stored, it may slowly return to yer world, or it may stay in yer coffer. item.ironchest.chest.copper_iron.name=Copper to Steel Coffer Upgradin'
book.ironchest:dirtchest9000.page5=FilthCoffer 9000 is kind to yer voyage. Throw yer paper in a coffer near by wit yer booty, and don't just chuck it into some molten rock. We wouldn't be the happiest o' pirates. item.ironchest.chest.diamond_crystal.name=Diamond to Shinin' Coffer Upgradin'
item.ironchest.chest.wood_iron.name=Timber to Steel Coffer Upgradin'
item.ironchest.chest.wood_copper.name=Wood to Copper Coffer Upgradin'
item.ironchest.chest.diamond_obsidian.name=Diamond to Coffer o' Tears Upgradin'
book.ironchest.dirtchest9000.title=How to use yer FilthCoffer 9000!
book.ironchest.dirtchest9000.page1=Welcome to yer new FilthCoffer 9000! We hope ye will enjoy many happy years of storing yer filth wit yer coffer .
book.ironchest.dirtchest9000.page2=Usage: simply put yer filth in yer slot and yer got yerself some filth any time ye need it!
book.ironchest.dirtchest9000.page3=We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated.
book.ironchest.dirtchest9000.page4=Warranty: We can't keep yer filth from pirates. Yer filth may not be stored, it may slowly return to yer world, or it may stay in yer coffer.
book.ironchest.dirtchest9000.page5=FilthCoffer 9000 is kind to yer voyage. Throw yer paper in a coffer near by wit yer booty, and don't just chuck it into some molten rock. We wouldn't be the happiest o' pirates.

View File

@ -1,25 +1,177 @@
tile.ironchest:IRON.name=Iron Chest ################
tile.ironchest:GOLD.name=Gold Chest # Chests #
tile.ironchest:DIAMOND.name=Diamond Chest ################
tile.ironchest:COPPER.name=Copper Chest
tile.ironchest:SILVER.name=Silver Chest
tile.ironchest:CRYSTAL.name=Crystal Chest
tile.ironchest:OBSIDIAN.name=Obsidian Chest
tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
item.ironchest:IRONGOLD.name=Iron to Gold Chest Upgrade tile.ironchest.chest.iron.name=Iron Chest
item.ironchest:GOLDDIAMOND.name=Gold to Diamond Chest Upgrade tile.ironchest.chest.gold.name=Gold Chest
item.ironchest:COPPERSILVER.name=Copper to Silver Chest Upgrade tile.ironchest.chest.diamond.name=Diamond Chest
item.ironchest:SILVERGOLD.name=Silver to Gold Chest Upgrade tile.ironchest.chest.copper.name=Copper Chest
item.ironchest:COPPERIRON.name=Copper to Iron Chest Upgrade tile.ironchest.chest.silver.name=Silver Chest
item.ironchest:DIAMONDCRYSTAL.name=Diamond to Crystal Chest Upgrade tile.ironchest.chest.crystal.name=Crystal Chest
item.ironchest:WOODIRON.name=Wood to Iron Chest Upgrade tile.ironchest.chest.obsidian.name=Obsidian Chest
item.ironchest:WOODCOPPER.name=Wood to Copper Chest Upgrade tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Diamond to Obsidian Chest Upgrade
book.ironchest:dirtchest9000.title=How to use your DirtChest 9000! item.ironchest.chest.iron_gold.name=Iron to Gold Chest Upgrade
book.ironchest:dirtchest9000.page1="Welcome to your new DirtChest 9000! We hope you will enjoy many happy years of storing your stack of dirt in our storage utility." item.ironchest.chest.gold_diamond.name=Gold to Diamond Chest Upgrade
book.ironchest:dirtchest9000.page2="Usage: simply insert the stack of dirt of your choice into the highly receptive slot and enjoy the great convenience of having that dirt available to you, any time you pass by this chest!" item.ironchest.chest.copper_silver.name=Copper to Silver Chest Upgrade
book.ironchest:dirtchest9000.page3="We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated." item.ironchest.chest.silver_gold.name=Silver to Gold Chest Upgrade
book.ironchest:dirtchest9000.page4="Warranty: This product has no warranty of any kind. Your dirt may not be stored, it may slowly leech into the environment, or alternatively, it may not do anything at all." item.ironchest.chest.copper_iron.name=Copper to Iron Chest Upgrade
book.ironchest:dirtchest9000.page5="DirtChest 9000 is kind to the environment. Please dispose of this guide book responsibly, and do not whatever you do just chuck it into some lava. We would be very sad." item.ironchest.chest.diamond_crystal.name=Diamond to Crystal Chest Upgrade
item.ironchest.chest.wood_iron.name=Wood to Iron Chest Upgrade
item.ironchest.chest.wood_copper.name=Wood to Copper Chest Upgrade
item.ironchest.chest.diamond_obsidian.name=Diamond to Obsidian Chest Upgrade
book.ironchest.dirtchest9000.title=How to use your DirtChest 9000!
book.ironchest.dirtchest9000.page1="Welcome to your new DirtChest 9000! We hope you will enjoy many happy years of storing your stack of dirt in our storage utility."
book.ironchest.dirtchest9000.page2="Usage: simply insert the stack of dirt of your choice into the highly receptive slot and enjoy the great convenience of having that dirt available to you, any time you pass by this chest!"
book.ironchest.dirtchest9000.page3="We hope you have enjoyed reviewing this instruction manual, and hope you will consider using our products in future! Kind regards, The DirtChest 9000 manual writers incorporated."
book.ironchest.dirtchest9000.page4="Warranty: This product has no warranty of any kind. Your dirt may not be stored, it may slowly leech into the environment, or alternatively, it may not do anything at all."
book.ironchest.dirtchest9000.page5="DirtChest 9000 is kind to the environment. Please dispose of this guide book responsibly, and do not whatever you do just chuck it into some lava. We would be very sad."
#######################
# Shulker Boxes #
#######################
tile.ironchest.shulker_box.iron.white.name=White Iron Shulker Box
tile.ironchest.shulker_box.iron.orange.name=Orange Iron Shulker Box
tile.ironchest.shulker_box.iron.magenta.name=Magenta Iron Shulker Box
tile.ironchest.shulker_box.iron.light_blue.name=Light Blue Iron Shulker Box
tile.ironchest.shulker_box.iron.yellow.name=Yellow Iron Shulker Box
tile.ironchest.shulker_box.iron.lime.name=Lime Iron Shulker Box
tile.ironchest.shulker_box.iron.pink.name=Pink Iron Shulker Box
tile.ironchest.shulker_box.iron.gray.name=Gray Iron Shulker Box
tile.ironchest.shulker_box.iron.silver.name=Silver Iron Shulker Box
tile.ironchest.shulker_box.iron.cyan.name=Cyan Iron Shulker Box
tile.ironchest.shulker_box.iron.purple.name=Purple Iron Shulker Box
tile.ironchest.shulker_box.iron.blue.name=Blue Iron Shulker Box
tile.ironchest.shulker_box.iron.brown.name=Brown Iron Shulker Box
tile.ironchest.shulker_box.iron.green.name=Green Iron Shulker Box
tile.ironchest.shulker_box.iron.red.name=Red Iron Shulker Box
tile.ironchest.shulker_box.iron.black.name=Black Iron Shulker Box
tile.ironchest.shulker_box.gold.white.name=White Gold Shulker Box
tile.ironchest.shulker_box.gold.orange.name=Orange Gold Shulker Box
tile.ironchest.shulker_box.gold.magenta.name=Magenta Gold Shulker Box
tile.ironchest.shulker_box.gold.light_blue.name=Light Blue Gold Shulker Box
tile.ironchest.shulker_box.gold.yellow.name=Yellow Gold Shulker Box
tile.ironchest.shulker_box.gold.lime.name=Lime Gold Shulker Box
tile.ironchest.shulker_box.gold.pink.name=Pink Gold Shulker Box
tile.ironchest.shulker_box.gold.gray.name=Gray Gold Shulker Box
tile.ironchest.shulker_box.gold.silver.name=Silver Gold Shulker Box
tile.ironchest.shulker_box.gold.cyan.name=Cyan Gold Shulker Box
tile.ironchest.shulker_box.gold.purple.name=Purple Gold Shulker Box
tile.ironchest.shulker_box.gold.blue.name=Blue Gold Shulker Box
tile.ironchest.shulker_box.gold.brown.name=Brown Gold Shulker Box
tile.ironchest.shulker_box.gold.green.name=Green Gold Shulker Box
tile.ironchest.shulker_box.gold.red.name=Red Gold Shulker Box
tile.ironchest.shulker_box.gold.black.name=Black Gold Shulker Box
tile.ironchest.shulker_box.diamond.white.name=White Diamond Shulker Box
tile.ironchest.shulker_box.diamond.orange.name=Orange Diamond Shulker Box
tile.ironchest.shulker_box.diamond.magenta.name=Magenta Diamond Shulker Box
tile.ironchest.shulker_box.diamond.light_blue.name=Light Blue Diamond Shulker Box
tile.ironchest.shulker_box.diamond.yellow.name=Yellow Diamond Shulker Box
tile.ironchest.shulker_box.diamond.lime.name=Lime Diamond Shulker Box
tile.ironchest.shulker_box.diamond.pink.name=Pink Diamond Shulker Box
tile.ironchest.shulker_box.diamond.gray.name=Gray Diamond Shulker Box
tile.ironchest.shulker_box.diamond.silver.name=Silver Diamond Shulker Box
tile.ironchest.shulker_box.diamond.cyan.name=Cyan Diamond Shulker Box
tile.ironchest.shulker_box.diamond.purple.name=Purple Diamond Shulker Box
tile.ironchest.shulker_box.diamond.blue.name=Blue Diamond Shulker Box
tile.ironchest.shulker_box.diamond.brown.name=Brown Diamond Shulker Box
tile.ironchest.shulker_box.diamond.green.name=Green Diamond Shulker Box
tile.ironchest.shulker_box.diamond.red.name=Red Diamond Shulker Box
tile.ironchest.shulker_box.diamond.black.name=Black Diamond Shulker Box
tile.ironchest.shulker_box.copper.white.name=White Copper Shulker Box
tile.ironchest.shulker_box.copper.orange.name=Orange Copper Shulker Box
tile.ironchest.shulker_box.copper.magenta.name=Magenta Copper Shulker Box
tile.ironchest.shulker_box.copper.light_blue.name=Light Blue Copper Shulker Box
tile.ironchest.shulker_box.copper.yellow.name=Yellow Copper Shulker Box
tile.ironchest.shulker_box.copper.lime.name=Lime Copper Shulker Box
tile.ironchest.shulker_box.copper.pink.name=Pink Copper Shulker Box
tile.ironchest.shulker_box.copper.gray.name=Gray Copper Shulker Box
tile.ironchest.shulker_box.copper.silver.name=Silver Copper Shulker Box
tile.ironchest.shulker_box.copper.cyan.name=Cyan Copper Shulker Box
tile.ironchest.shulker_box.copper.purple.name=Purple Copper Shulker Box
tile.ironchest.shulker_box.copper.blue.name=Blue Copper Shulker Box
tile.ironchest.shulker_box.copper.brown.name=Brown Copper Shulker Box
tile.ironchest.shulker_box.copper.green.name=Green Copper Shulker Box
tile.ironchest.shulker_box.copper.red.name=Red Copper Shulker Box
tile.ironchest.shulker_box.copper.black.name=Black Copper Shulker Box
tile.ironchest.shulker_box.silver.white.name=White Silver Shulker Box
tile.ironchest.shulker_box.silver.orange.name=Orange Silver Shulker Box
tile.ironchest.shulker_box.silver.magenta.name=Magenta Silver Shulker Box
tile.ironchest.shulker_box.silver.light_blue.name=Light Blue Silver Shulker Box
tile.ironchest.shulker_box.silver.yellow.name=Yellow Silver Shulker Box
tile.ironchest.shulker_box.silver.lime.name=Lime Silver Shulker Box
tile.ironchest.shulker_box.silver.pink.name=Pink Silver Shulker Box
tile.ironchest.shulker_box.silver.gray.name=Gray Silver Shulker Box
tile.ironchest.shulker_box.silver.silver.name=Silver Silver Shulker Box
tile.ironchest.shulker_box.silver.cyan.name=Cyan Silver Shulker Box
tile.ironchest.shulker_box.silver.purple.name=Purple Silver Shulker Box
tile.ironchest.shulker_box.silver.blue.name=Blue Silver Shulker Box
tile.ironchest.shulker_box.silver.brown.name=Brown Silver Shulker Box
tile.ironchest.shulker_box.silver.green.name=Green Silver Shulker Box
tile.ironchest.shulker_box.silver.red.name=Red Silver Shulker Box
tile.ironchest.shulker_box.silver.black.name=Black Silver Shulker Box
tile.ironchest.shulker_box.crystal.white.name=White Crystal Shulker Box
tile.ironchest.shulker_box.crystal.orange.name=Orange Crystal Shulker Box
tile.ironchest.shulker_box.crystal.magenta.name=Magenta Crystal Shulker Box
tile.ironchest.shulker_box.crystal.light_blue.name=Light Blue Crystal Shulker Box
tile.ironchest.shulker_box.crystal.yellow.name=Yellow Crystal Shulker Box
tile.ironchest.shulker_box.crystal.lime.name=Lime Crystal Shulker Box
tile.ironchest.shulker_box.crystal.pink.name=Pink Crystal Shulker Box
tile.ironchest.shulker_box.crystal.gray.name=Gray Crystal Shulker Box
tile.ironchest.shulker_box.crystal.silver.name=Silver Crystal Shulker Box
tile.ironchest.shulker_box.crystal.cyan.name=Cyan Crystal Shulker Box
tile.ironchest.shulker_box.crystal.purple.name=Purple Crystal Shulker Box
tile.ironchest.shulker_box.crystal.blue.name=Blue Crystal Shulker Box
tile.ironchest.shulker_box.crystal.brown.name=Brown Crystal Shulker Box
tile.ironchest.shulker_box.crystal.green.name=Green Crystal Shulker Box
tile.ironchest.shulker_box.crystal.red.name=Red Crystal Shulker Box
tile.ironchest.shulker_box.crystal.black.name=Black Crystal Shulker Box
tile.ironchest.shulker_box.obsidian.white.name=White Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.orange.name=Orange Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.magenta.name=Magenta Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.light_blue.name=Light Blue Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.yellow.name=Yellow Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.lime.name=Lime Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.pink.name=Pink Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.gray.name=Gray Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.silver.name=Silver Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.cyan.name=Cyan Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.purple.name=Purple Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.blue.name=Blue Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.brown.name=Brown Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.green.name=Green Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.red.name=Red Obsidian Shulker Box
tile.ironchest.shulker_box.obsidian.black.name=Black Obsidian Shulker Box
item.ironchest.shulker_box.iron_gold.name=Iron to Gold Shulker Box Upgrade
item.ironchest.shulker_box.iron_gold.tooltip=Used to upgrade a Iron Shulker Box to a Gold Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.gold_diamond.name=Gold to Diamond Shulker Box Upgrade
item.ironchest.shulker_box.gold_diamond.tooltip=Used to upgrade a Gold Shulker Box to a Diamond Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.copper_silver.name=Copper to Silver Shulker Box Upgrade
item.ironchest.shulker_box.copper_silver.tooltip=Used to upgrade a Copper Shulker Box to a Silver Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.silver_gold.name=Silver to Gold Shulker Box Upgrade
item.ironchest.shulker_box.silver_gold.tooltip=Used to upgrade a Silver Shulker Box to a Gold Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.copper_iron.name=Copper to Iron Shulker Box Upgrade
item.ironchest.shulker_box.copper_iron.tooltip=Used to upgrade a Copper Shulker Box to a Iron Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.diamond_crystal.name=Diamond to Crystal Shulker Box Upgrade
item.ironchest.shulker_box.diamond_crystal.tooltip=Used to upgrade a Diamond Shulker Box to a Crystal Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.vanilla_iron.name=Vanilla to Iron Shulker Box Upgrade
item.ironchest.shulker_box.vanilla_iron.tooltip=Used to upgrade a Vanilla Shulker Box to a Iron Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.vanilla_copper.name=Vanilla to Copper Shulker Box Upgrade
item.ironchest.shulker_box.vanilla_copper.tooltip=Used to upgrade a Vanilla Shulker Box to a Copper Shulker Box\nThe color of the Shulker Box will stay the same.
item.ironchest.shulker_box.diamond_obsidian.name=Diamond to Obsidian Shulker Box Upgrade
item.ironchest.shulker_box.diamond_obsidian.tooltip=Used to upgrade a Diamond Shulker Box to a Obsidian Shulker Box\nThe color of the Shulker Box will stay the same.
##############
# GUIs #
##############
itemGroup.IronChest=Iron Chests

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Cofre de Hierro ################
tile.ironchest:GOLD.name=Cofre de Oro # Chests #
tile.ironchest:DIAMOND.name=Cofre de Diamante ################
tile.ironchest:COPPER.name=Cofre de Cobre
tile.ironchest:SILVER.name=Cofre de Plata
tile.ironchest:CRYSTAL.name=Cofre de Cristal
tile.ironchest:OBSIDIAN.name=Cofre de Obsidiana
item.ironchest:IRONGOLD.name=Mejora de Cofre de Hierro a Oro tile.ironchest.chest.iron.name=Cofre de Hierro
item.ironchest:GOLDDIAMOND.name=Mejora de Cofre de Oro a Diamante tile.ironchest.chest.gold.name=Cofre de Oro
item.ironchest:COPPERSILVER.name=Mejora de Cofre de Cobre a Plata tile.ironchest.chest.diamond.name=Cofre de Diamante
item.ironchest:SILVERGOLD.name=Mejora de Cofre de Plata a Oro tile.ironchest.chest.copper.name=Cofre de Cobre
item.ironchest:COPPERIRON.name=Mejora de Cofre de Cobre a Hierro tile.ironchest.chest.silver.name=Cofre de Plata
item.ironchest:DIAMONDCRYSTAL.name=Mejora de Cofre de Diamante a Cristal tile.ironchest.chest.crystal.name=Cofre de Cristal
item.ironchest:WOODIRON.name=Mejora de Cofre de Madera a Hierro tile.ironchest.chest.obsidian.name=Cofre de Obsidiana
item.ironchest:WOODCOPPER.name=Mejora de Cofre de Madera a Cobre
item.ironchest:DIAMONDOBSIDIAN.name=Mejora de Cofre de Diamante a Obsidiana item.ironchest.chest.iron_gold.name=Mejora de Cofre de Hierro a Oro
item.ironchest.chest.gold_diamond.name=Mejora de Cofre de Oro a Diamante
item.ironchest.chest.copper_silver.name=Mejora de Cofre de Cobre a Plata
item.ironchest.chest.silver_gold.name=Mejora de Cofre de Plata a Oro
item.ironchest.chest.copper_iron.name=Mejora de Cofre de Cobre a Hierro
item.ironchest.chest.diamond_crystal.name=Mejora de Cofre de Diamante a Cristal
item.ironchest.chest.wood_iron.name=Mejora de Cofre de Madera a Hierro
item.ironchest.chest.wood_copper.name=Mejora de Cofre de Madera a Cobre
item.ironchest.chest.diamond_obsidian.name=Mejora de Cofre de Diamante a Obsidiana

View File

@ -1,18 +1,22 @@
tile.ironchest:IRON.name=Raudkirst ################
tile.ironchest:GOLD.name=Kuldkirst # Chests #
tile.ironchest:DIAMOND.name=Teemantkirst ################
tile.ironchest:COPPER.name=Vaskkirst
tile.ironchest:SILVER.name=Hõbekirst
tile.ironchest:CRYSTAL.name=Kristallkirst
tile.ironchest:OBSIDIAN.name=Obsidiaankirst
tile.ironchest:DIRTCHEST9000.name=Muldkirst 9000!
item.ironchest:IRONGOLD.name=Raudkirst kuld kirstuks tile.ironchest.chest.iron.name=Raudkirst
item.ironchest:GOLDDIAMOND.name=Kuldkirst teemandist kirstuks tile.ironchest.chest.gold.name=Kuldkirst
item.ironchest:COPPERSILVER.name=Vaskkirst hõbedast kirstuks tile.ironchest.chest.diamond.name=Teemantkirst
item.ironchest:SILVERGOLD.name=Hõbekirst kullast kirstuks tile.ironchest.chest.copper.name=Vaskkirst
item.ironchest:COPPERIRON.name=Vaskkirst rauast kirstuks tile.ironchest.chest.silver.name=Hõbekirst
item.ironchest:DIAMONDCRYSTAL.name=Teemantkirst kristallist kirstuks tile.ironchest.chest.crystal.name=Kristallkirst
item.ironchest:WOODIRON.name=Puukirst rauast kirstuks tile.ironchest.chest.obsidian.name=Obsidiaankirst
item.ironchest:WOODCOPPER.name=Puukirst vasest kirstuks tile.ironchest.chest.dirtchest9000.name=Muldkirst 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Teemantkirst obsidiaanist kirstuks
item.ironchest.chest.iron_gold.name=Raudkirst kuld kirstuks
item.ironchest.chest.gold_diamond.name=Kuldkirst teemandist kirstuks
item.ironchest.chest.copper_silver.name=Vaskkirst hõbedast kirstuks
item.ironchest.chest.silver_gold.name=Hõbekirst kullast kirstuks
item.ironchest.chest.copper_iron.name=Vaskkirst rauast kirstuks
item.ironchest.chest.diamond_crystal.name=Teemantkirst kristallist kirstuks
item.ironchest.chest.wood_iron.name=Puukirst rauast kirstuks
item.ironchest.chest.wood_copper.name=Puukirst vasest kirstuks
item.ironchest.chest.diamond_obsidian.name=Teemantkirst obsidiaanist kirstuks

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Coffre en fer ################
tile.ironchest:GOLD.name=Coffre en or # Chests #
tile.ironchest:DIAMOND.name=Coffre en diamant ################
tile.ironchest:COPPER.name=Coffre en cuivre
tile.ironchest:SILVER.name=Coffre en argent
tile.ironchest:CRYSTAL.name=Coffre en cristal
tile.ironchest:OBSIDIAN.name=Coffre en obsidienne
tile.ironchest:DIRTCHEST9000.name=DirtChest 9000 !
item.ironchest:IRONGOLD.name=Upgrade de coffre en fer à l'or tile.ironchest.chest.iron.name=Coffre en fer
item.ironchest:GOLDDIAMOND.name=Upgrade de coffre en or au diamant tile.ironchest.chest.gold.name=Coffre en or
item.ironchest:COPPERSILVER.name=Upgrade de coffre en cuivre à l'argent tile.ironchest.chest.diamond.name=Coffre en diamant
item.ironchest:SILVERGOLD.name=Upgrade de coffre en argent à l'or tile.ironchest.chest.copper.name=Coffre en cuivre
item.ironchest:COPPERIRON.name=Upgrade de coffre en cuivre au fer tile.ironchest.chest.silver.name=Coffre en argent
item.ironchest:DIAMONDCRYSTAL.name=Upgrade de coffre en diamant au cristal tile.ironchest.chest.crystal.name=Coffre en cristal
item.ironchest:WOODIRON.name=Upgrade de coffre en bois au fer tile.ironchest.chest.obsidian.name=Coffre en obsidienne
item.ironchest:WOODCOPPER.name=Upgrade de coffre en bois au cuivre tile.ironchest.chest.dirtchest9000.name=DirtChest 9000 !
item.ironchest:DIAMONDOBSIDIAN.name=Upgrade de coffre en diamant à l'obsidienne
book.ironchest:dirtchest9000.title=Comment utiliser votre DirtChest 9000 ! item.ironchest.chest.iron_gold.name=Upgrade de coffre en fer à l'or
book.ironchest:dirtchest9000.page1=Bienvenue à votre nouveau DirtChest 9000 ! Nous espérons que vous apprécierez les innombrables années heureuses à emmagasiner votre stack de terre dans notre utilitaire de stockage. item.ironchest.chest.gold_diamond.name=Upgrade de coffre en or au diamant
book.ironchest:dirtchest9000.page2=Utilisation : insérez tout simplement le stack de terre de votre choix dans la case hautement réceptive et appréciez l'immense commodité d'avoir cette terre disponible à portée de la main, à tout moment où vous passez devant ce coffre ! item.ironchest.chest.copper_silver.name=Upgrade de coffre en cuivre à l'argent
book.ironchest:dirtchest9000.page3=Nous espérons que vous avez apprécié faire la critique de ce manuel d'instruction, et espérons que vous allez considérer utiliser nos produits dans le futur ! Nos meilleures salutations, les rédacteurs du manuel DirtChest 9000 inc. item.ironchest.chest.silver_gold.name=Upgrade de coffre en argent à l'or
book.ironchest:dirtchest9000.page4=Garantie : ce produit n'a aucune garantie quelconque. Votre terre peut ne pas être stockée, elle peut se fondre lentement dans l'environnement, ou encore, elle peut ne rien faire du tout. item.ironchest.chest.copper_iron.name=Upgrade de coffre en cuivre au fer
book.ironchest:dirtchest9000.page5=DirtChest 9000 respecte l'environnement. Veuillez disposer de ce guide de manière responsable, et quoique vous fassiez, ne le balancez juste pas dans de la lave. Nous en serions attristés. item.ironchest.chest.diamond_crystal.name=Upgrade de coffre en diamant au cristal
item.ironchest.chest.wood_iron.name=Upgrade de coffre en bois au fer
item.ironchest.chest.wood_copper.name=Upgrade de coffre en bois au cuivre
item.ironchest.chest.diamond_obsidian.name=Upgrade de coffre en diamant à l'obsidienne
book.ironchest.dirtchest9000.title=Comment utiliser votre DirtChest 9000 !
book.ironchest.dirtchest9000.page1=Bienvenue à votre nouveau DirtChest 9000 ! Nous espérons que vous apprécierez les innombrables années heureuses à emmagasiner votre stack de terre dans notre utilitaire de stockage.
book.ironchest.dirtchest9000.page2=Utilisation : insérez tout simplement le stack de terre de votre choix dans la case hautement réceptive et appréciez l'immense commodité d'avoir cette terre disponible à portée de la main, à tout moment où vous passez devant ce coffre !
book.ironchest.dirtchest9000.page3=Nous espérons que vous avez apprécié faire la critique de ce manuel d'instruction, et espérons que vous allez considérer utiliser nos produits dans le futur ! Nos meilleures salutations, les rédacteurs du manuel DirtChest 9000 inc.
book.ironchest.dirtchest9000.page4=Garantie : ce produit n'a aucune garantie quelconque. Votre terre peut ne pas être stockée, elle peut se fondre lentement dans l'environnement, ou encore, elle peut ne rien faire du tout.
book.ironchest.dirtchest9000.page5=DirtChest 9000 respecte l'environnement. Veuillez disposer de ce guide de manière responsable, et quoique vous fassiez, ne le balancez juste pas dans de la lave. Nous en serions attristés.

View File

@ -1,19 +1,21 @@
#fr_FR translated by robin4002 ################
# Chests #
################
tile.ironchest:IRON.name=Coffre en Fer tile.ironchest.chest.iron.name=Coffre en Fer
tile.ironchest:GOLD.name=Coffre en Or tile.ironchest.chest.gold.name=Coffre en Or
tile.ironchest:DIAMOND.name=Coffre en Diamant tile.ironchest.chest.diamond.name=Coffre en Diamant
tile.ironchest:COPPER.name=Coffre en Cuivre tile.ironchest.chest.copper.name=Coffre en Cuivre
tile.ironchest:SILVER.name=Coffre en Argent tile.ironchest.chest.silver.name=Coffre en Argent
tile.ironchest:CRYSTAL.name=Coffre en Cristal tile.ironchest.chest.crystal.name=Coffre en Cristal
tile.ironchest:OBSIDIAN.name=Coffre en Obsidienne tile.ironchest.chest.obsidian.name=Coffre en Obsidienne
item.ironchest:IRONGOLD.name=Amélioration de coffre en fer à or item.ironchest.chest.iron_gold.name=Amélioration de coffre en fer à or
item.ironchest:GOLDDIAMOND.name=Amélioration de coffre en or à diamant item.ironchest.chest.gold_diamond.name=Amélioration de coffre en or à diamant
item.ironchest:COPPERSILVER.name=Amélioration de coffre en cuivre à argent item.ironchest.chest.copper_silver.name=Amélioration de coffre en cuivre à argent
item.ironchest:SILVERGOLD.name=Amélioration de coffre en argent à or item.ironchest.chest.silver_gold.name=Amélioration de coffre en argent à or
item.ironchest:COPPERIRON.name=Amélioration de coffre en cuivre à fer item.ironchest.chest.copper_iron.name=Amélioration de coffre en cuivre à fer
item.ironchest:DIAMONDCRYSTAL.name=Amélioration de coffre en diamant à crital item.ironchest.chest.diamond_crystal.name=Amélioration de coffre en diamant à crital
item.ironchest:WOODIRON.name=Amélioration de coffre en bois à fer item.ironchest.chest.wood_iron.name=Amélioration de coffre en bois à fer
item.ironchest:WOODCOPPER.name=Amélioration de coffre en bois à cuivre item.ironchest.chest.wood_copper.name=Amélioration de coffre en bois à cuivre
item.ironchest:DIAMONDOBSIDIAN.name=Amélioration de coffre en diamant à obsidienne item.ironchest.chest.diamond_obsidian.name=Amélioration de coffre en diamant à obsidienne

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Vas láda ################
tile.ironchest:GOLD.name=Arany láda # Chests #
tile.ironchest:DIAMOND.name=Gyémánt láda ################
tile.ironchest:COPPER.name=Réz láda
tile.ironchest:SILVER.name=Ezüst láda
tile.ironchest:CRYSTAL.name=Kristály láda
tile.ironchest:OBSIDIAN.name=Obszidián láda
tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
item.ironchest:IRONGOLD.name=Vasról arany ládára bővítő tile.ironchest.chest.iron.name=Vas láda
item.ironchest:GOLDDIAMOND.name=Aranyról gyémánt ládára bővítő tile.ironchest.chest.gold.name=Arany láda
item.ironchest:COPPERSILVER.name=Rézről ezüst ládára bővítő tile.ironchest.chest.diamond.name=Gyémánt láda
item.ironchest:SILVERGOLD.name=Ezüstről arany ládára bővítő tile.ironchest.chest.copper.name=Réz láda
item.ironchest:COPPERIRON.name=Részről vas ládára bővítő tile.ironchest.chest.silver.name=Ezüst láda
item.ironchest:DIAMONDCRYSTAL.name=Gyémántról kristály ládára bővítő tile.ironchest.chest.crystal.name=Kristály láda
item.ironchest:WOODIRON.name=Normálról (fa) vas ládára bővítő tile.ironchest.chest.obsidian.name=Obszidián láda
item.ironchest:WOODCOPPER.name=Normálról (fa) réz ládára bővítő tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Gyémántról obszidián ládára bővítő
book.ironchest:dirtchest9000.title=Hogyan használd a DirtChest 9000-et! item.ironchest.chest.iron_gold.name=Vasról arany ládára bővítő
book.ironchest:dirtchest9000.page1=Üdvözöl az új DirtChest 9000! Reméljük sok boldog évig élvezni fogod egy halom föld tárólásának eme vadiúj módját. item.ironchest.chest.gold_diamond.name=Aranyról gyémánt ládára bővítő
book.ironchest:dirtchest9000.page2=Használat: egyszerűen pakolj bele egy halom földet eme különlegesen érzékeny tárolóegységbe és élvezd a kényelmet, hogy egy halom föld mindig rendelkezésedre fog állni, bármikor nyitod is ki ezt a ládát. item.ironchest.chest.copper_silver.name=Rézről ezüst ládára bővítő
book.ironchest:dirtchest9000.page3=Reméljük, hogy élvezted eme kézikönyv olvasgatását, és megfontolod más termékünk használatát is a jövöben. Üdvözlettel: A DirtChest 9000 kézikönyv írói. item.ironchest.chest.silver_gold.name=Ezüstről arany ládára bővítő
book.ironchest:dirtchest9000.page4=Garancia: Ez a termék nem rendelkezik semmiféle garanciával. A belepakolt föld lehet, hogy nem is kerül tárolásra, elszivárog a környezetbe, vagy az is lehetséges hogy nem történik vele semmi. item.ironchest.chest.copper_iron.name=Részről vas ládára bővítő
book.ironchest:dirtchest9000.page5=A DirtChest 9000 környezetbarát termék. Kérjül fokozottan ügyelj erre a kézikönyv megsemmisitésekor, és semmiképpen se dobd lávába. Akkor ugyanis nagyon szomorúak leszünk. item.ironchest.chest.diamond_crystal.name=Gyémántról kristály ládára bővítő
item.ironchest.chest.wood_iron.name=Normálról (fa) vas ládára bővítő
item.ironchest.chest.wood_copper.name=Normálról (fa) réz ládára bővítő
item.ironchest.chest.diamond_obsidian.name=Gyémántról obszidián ládára bővítő
book.ironchest.dirtchest9000.title=Hogyan használd a DirtChest 9000-et!
book.ironchest.dirtchest9000.page1=Üdvözöl az új DirtChest 9000! Reméljük sok boldog évig élvezni fogod egy halom föld tárólásának eme vadiúj módját.
book.ironchest.dirtchest9000.page2=Használat: egyszerűen pakolj bele egy halom földet eme különlegesen érzékeny tárolóegységbe és élvezd a kényelmet, hogy egy halom föld mindig rendelkezésedre fog állni, bármikor nyitod is ki ezt a ládát.
book.ironchest.dirtchest9000.page3=Reméljük, hogy élvezted eme kézikönyv olvasgatását, és megfontolod más termékünk használatát is a jövöben. Üdvözlettel: A DirtChest 9000 kézikönyv írói.
book.ironchest.dirtchest9000.page4=Garancia: Ez a termék nem rendelkezik semmiféle garanciával. A belepakolt föld lehet, hogy nem is kerül tárolásra, elszivárog a környezetbe, vagy az is lehetséges hogy nem történik vele semmi.
book.ironchest.dirtchest9000.page5=A DirtChest 9000 környezetbarát termék. Kérjül fokozottan ügyelj erre a kézikönyv megsemmisitésekor, és semmiképpen se dobd lávába. Akkor ugyanis nagyon szomorúak leszünk.

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Baule di ferro ################
tile.ironchest:GOLD.name=Baule d'oro # Chests #
tile.ironchest:DIAMOND.name=Baule di diamante ################
tile.ironchest:COPPER.name=Baule di rame
tile.ironchest:SILVER.name=Baule d'argento
tile.ironchest:CRYSTAL.name=Baule di cristallo
tile.ironchest:OBSIDIAN.name=Baule di ossidiana
tile.ironchest:DIRTCHEST9000.name=DirtChest 9000!
item.ironchest:IRONGOLD.name=Potenziamento da ferro a oro tile.ironchest.chest.iron.name=Baule di ferro
item.ironchest:GOLDDIAMOND.name=Potenziamento da oro a diamante tile.ironchest.chest.gold.name=Baule d'oro
item.ironchest:COPPERSILVER.name=Potenziamento da rame a argento tile.ironchest.chest.diamond.name=Baule di diamante
item.ironchest:SILVERGOLD.name=Potenziamento da argento a oro tile.ironchest.chest.copper.name=Baule di rame
item.ironchest:COPPERIRON.name=Potenziamento da rame a ferro tile.ironchest.chest.silver.name=Baule d'argento
item.ironchest:DIAMONDCRYSTAL.name=Potenziamento da diamante a cristallo tile.ironchest.chest.crystal.name=Baule di cristallo
item.ironchest:WOODIRON.name=Potenziamento da legno a ferro tile.ironchest.chest.obsidian.name=Baule di ossidiana
item.ironchest:WOODCOPPER.name=Potenziamento da legno a rame tile.ironchest.chest.dirtchest9000.name=DirtChest 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Potenziamento da diamante a ossidiana
book.ironchest:dirtchest9000.title=Come usare la tua DirtChest 9000! item.ironchest.chest.iron_gold.name=Potenziamento da ferro a oro
book.ironchest:dirtchest9000.page1=Benvenuto alla tua nuova DirtChest 9000! Speriamo che possiate godere di molti anni felici in cui imagazzinate grandi quantità di terra nei nostri contenitori. item.ironchest.chest.gold_diamond.name=Potenziamento da oro a diamante
book.ironchest:dirtchest9000.page2=Uso: inserisci uno stack di terra nello slot e goditi la grande convenienza di avere della terra a tua disposizione ogni volta che passi vicino alla cassa! item.ironchest.chest.copper_silver.name=Potenziamento da rame a argento
book.ironchest:dirtchest9000.page3=Speriamo che questo manuale vi sia stato utile, e speriamo che prenderete in considerazione usare i nostri prodotti in futuro ! I migliori saluti, i scrittori del manuale per la DirtChest 9000. item.ironchest.chest.silver_gold.name=Potenziamento da argento a oro
book.ironchest:dirtchest9000.page4=Garanzia: Questo prodotto non ha nessuna garanzia di alcun tipo. La tua terra potrebbe non essere imagazzinata, potrebbe lentamente fuoriuscire nell'ambiente, oppure, non farà niente. item.ironchest.chest.copper_iron.name=Potenziamento da rame a ferro
book.ironchest:dirtchest9000.page5=La DirtChest 9000 è amico dell'ambiente. Per favore conservate questo libro in un modo responsabile, e non buttatelo nella lava come un oggetto qualsiasi. Saremmo veramente tristi. item.ironchest.chest.diamond_crystal.name=Potenziamento da diamante a cristallo
item.ironchest.chest.wood_iron.name=Potenziamento da legno a ferro
item.ironchest.chest.wood_copper.name=Potenziamento da legno a rame
item.ironchest.chest.diamond_obsidian.name=Potenziamento da diamante a ossidiana
book.ironchest.dirtchest9000.title=Come usare la tua DirtChest 9000!
book.ironchest.dirtchest9000.page1=Benvenuto alla tua nuova DirtChest 9000! Speriamo che possiate godere di molti anni felici in cui imagazzinate grandi quantità di terra nei nostri contenitori.
book.ironchest.dirtchest9000.page2=Uso: inserisci uno stack di terra nello slot e goditi la grande convenienza di avere della terra a tua disposizione ogni volta che passi vicino alla cassa!
book.ironchest.dirtchest9000.page3=Speriamo che questo manuale vi sia stato utile, e speriamo che prenderete in considerazione usare i nostri prodotti in futuro ! I migliori saluti, i scrittori del manuale per la DirtChest 9000.
book.ironchest.dirtchest9000.page4=Garanzia: Questo prodotto non ha nessuna garanzia di alcun tipo. La tua terra potrebbe non essere imagazzinata, potrebbe lentamente fuoriuscire nell'ambiente, oppure, non farà niente.
book.ironchest.dirtchest9000.page5=La DirtChest 9000 è amico dell'ambiente. Per favore conservate questo libro in un modo responsabile, e non buttatelo nella lava come un oggetto qualsiasi. Saremmo veramente tristi.

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=철 상자 ################
tile.ironchest:GOLD.name=금 상자 # Chests #
tile.ironchest:DIAMOND.name=다이아몬드 상자 ################
tile.ironchest:COPPER.name=구리 상자
tile.ironchest:SILVER.name=은 상자
tile.ironchest:CRYSTAL.name=수정 상자
tile.ironchest:OBSIDIAN.name=흑요석 상자
tile.ironchest:DIRTCHEST9000.name=흙 상자 9000!
item.ironchest:IRONGOLD.name=철 상자를 금 상자로 업그레이드 tile.ironchest.chest.iron.name=철 상자
item.ironchest:GOLDDIAMOND.name=금 상자를 다이아몬드 상자로 업그레이드 tile.ironchest.chest.gold.name=금 상자
item.ironchest:COPPERSILVER.name=구리 상자를 은 상자로 업그레이드 tile.ironchest.chest.diamond.name=다이아몬드 상자
item.ironchest:SILVERGOLD.name=은 상자를 금 상자로 업그레이드 tile.ironchest.chest.copper.name=구리 상자
item.ironchest:COPPERIRON.name=구리 상자를 철 상자로 업그레이드 tile.ironchest.chest.silver.name=은 상자
item.ironchest:DIAMONDCRYSTAL.name=다이아몬드 상자를 수정 상자로 업그레이드 tile.ironchest.chest.crystal.name=수정 상자
item.ironchest:WOODIRON.name=나무 상자를 철 상자로 업그레이드 tile.ironchest.chest.obsidian.name=흑요석 상자
item.ironchest:WOODCOPPER.name=나무 상자를 구리 상자로 업그레이드 tile.ironchest.chest.dirtchest9000.name=흙 상자 9000!
item.ironchest:DIAMONDOBSIDIAN.name=다이아몬드 상자를 흑요석 상자로 업그레이드
book.ironchest:dirtchest9000.title=흙 상자 9000을 사용하는 방법! item.ironchest.chest.iron_gold.name=철 상자를 금 상자로 업그레이드
book.ironchest:dirtchest9000.page1=새로운 흙 상자 9000을 사용하게 되신 것을 환영합니다! 우리는 당신이 이 저장 도구에서 흙들을 많은 해 동안 행복하게 저장하기를 기원합니다. item.ironchest.chest.gold_diamond.name=금 상자를 다이아몬드 상자로 업그레이드
item.ironchest.chest.copper_silver.name=구리 상자를 은 상자로 업그레이드
item.ironchest.chest.silver_gold.name=은 상자를 금 상자로 업그레이드
item.ironchest.chest.copper_iron.name=구리 상자를 철 상자로 업그레이드
item.ironchest.chest.diamond_crystal.name=다이아몬드 상자를 수정 상자로 업그레이드
item.ironchest.chest.wood_iron.name=나무 상자를 철 상자로 업그레이드
item.ironchest.chest.wood_copper.name=나무 상자를 구리 상자로 업그레이드
item.ironchest.chest.diamond_obsidian.name=다이아몬드 상자를 흑요석 상자로 업그레이드
book.ironchest.dirtchest9000.title=흙 상자 9000을 사용하는 방법!
book.ironchest.dirtchest9000.page1=새로운 흙 상자 9000을 사용하게 되신 것을 환영합니다! 우리는 당신이 이 저장 도구에서 흙들을 많은 해 동안 행복하게 저장하기를 기원합니다.
사용법: 단순히 흙 뭉치들을 아이템 슬롯에 넣고 이 상자를 지나갈 때마다 언제나 당신에게 제공되어지는 흙들의 편리함을 누리세요! 사용법: 단순히 흙 뭉치들을 아이템 슬롯에 넣고 이 상자를 지나갈 때마다 언제나 당신에게 제공되어지는 흙들의 편리함을 누리세요!
book.ironchest:dirtchest9000.page3=우리는 당신이 이 사용설명서를 즐겁게 읽었고, 나중에 이 제품을 사용하기를 바랍니다! 흙 상자 9000 매뉴얼 book.ironchest.dirtchest9000.page3=우리는 당신이 이 사용설명서를 즐겁게 읽었고, 나중에 이 제품을 사용하기를 바랍니다! 흙 상자 9000 매뉴얼
book.ironchest:dirtchest9000.page4=주의: 이 제품에는 어떤 종류의 보증도 하지 않습니다 당신의 흙들은 저장되지 않을 수도 있습니다. 그러면 이 흙 상자는 천천히 환경 속으로 돌아가거나, 혹은 아무것도 하지 않을 것입니다. book.ironchest.dirtchest9000.page4=주의: 이 제품에는 어떤 종류의 보증도 하지 않습니다 당신의 흙들은 저장되지 않을 수도 있습니다. 그러면 이 흙 상자는 천천히 환경 속으로 돌아가거나, 혹은 아무것도 하지 않을 것입니다.
book.ironchest:dirtchest9000.page5=흙 상자 9000은 환경 친화적입니다. 가이드북의 처분에는 책임이 따릅니다, 그러니 어떠한 경우라도 용암에 버리지 마세요. 우리는 매우 슬플 것입니다. book.ironchest.dirtchest9000.page5=흙 상자 9000은 환경 친화적입니다. 가이드북의 처분에는 책임이 따릅니다, 그러니 어떠한 경우라도 용암에 버리지 마세요. 우리는 매우 슬플 것입니다.

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Jernkiste ################
tile.ironchest:GOLD.name=Gullkiste # Chests #
tile.ironchest:DIAMOND.name=Diamantkiste ################
tile.ironchest:COPPER.name=Kobberkiste
tile.ironchest:SILVER.name=Sølvkiste
tile.ironchest:CRYSTAL.name=Krystallkiste
tile.ironchest:OBSIDIAN.name=Obsidiankiste
tile.ironchest:DIRTCHEST9000.name=JordKiste 9000!
item.ironchest:IRONGOLD.name=Jern til Gull Kisteoppgradering tile.ironchest.chest.iron.name=Jernkiste
item.ironchest:GOLDDIAMOND.name=Gull til Diamant Kisteoppgradering tile.ironchest.chest.gold.name=Gullkiste
item.ironchest:COPPERSILVER.name=Kobber til Sølv Kisteoppgradering tile.ironchest.chest.diamond.name=Diamantkiste
item.ironchest:SILVERGOLD.name=Sølv til Gull Kisteoppgradering tile.ironchest.chest.copper.name=Kobberkiste
item.ironchest:COPPERIRON.name=Kobber til Jern Kisteoppgradering tile.ironchest.chest.silver.name=Sølvkiste
item.ironchest:DIAMONDCRYSTAL.name=Diamant til Krystall Kisteoppgradering tile.ironchest.chest.crystal.name=Krystallkiste
item.ironchest:WOODIRON.name=Tre til Jern Kisteoppgradering tile.ironchest.chest.obsidian.name=Obsidiankiste
item.ironchest:WOODCOPPER.name=Tre til Kobber Kisteoppgradering tile.ironchest.chest.dirtchest9000.name=JordKiste 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Diamant til Obsidian Kisteoppgradering
book.ironchest:dirtchest9000.title=Hvordan bruker din JordKiste 9000! item.ironchest.chest.iron_gold.name=Jern til Gull Kisteoppgradering
book.ironchest:dirtchest9000.page1=Velkommen til din nye JordKiste9000! Vi håper du vil nyte mange lykkelige år med lagring av din stabel av jord i vå lager verktøy. item.ironchest.chest.gold_diamond.name=Gull til Diamant Kisteoppgradering
book.ironchest:dirtchest9000.page2=Bruk: bare å sette bunken med jord av ditt valg i den svært mottakelige sporet og nyte den store fordelen med åa den jorden tilgjengelig for deg, nådu passerer denne kisten! item.ironchest.chest.copper_silver.name=Kobber til Sølv Kisteoppgradering
book.ironchest:dirtchest9000.page3=Vi håper du har hatt en god fornøyelse gjennom denne bruksanvisningen, og hår du vil vurdere å bruke vå produkter i fremtiden! Vennlig hilsen, JordKiste9000 manual forfattere innarbeidet. item.ironchest.chest.silver_gold.name=Sølv til Gull Kisteoppgradering
book.ironchest:dirtchest9000.page4=Garanti: Dette produktet har ingen garantier av noe slag. Din jord kan ikke lagres, det kan sakte lekke ut i miljøet, eller alternativt, kan det ikke gjøre noe i det hele tatt. item.ironchest.chest.copper_iron.name=Kobber til Jern Kisteoppgradering
book.ironchest:dirtchest9000.page5=JordKiste 9000 er snill mot miljøet. Vennligst ta hånd om denne veileder boken ansvarlig, og hva du enn gjør ikke kast den inn i noe lav. Vi ville bli veldig trist. item.ironchest.chest.diamond_crystal.name=Diamant til Krystall Kisteoppgradering
item.ironchest.chest.wood_iron.name=Tre til Jern Kisteoppgradering
item.ironchest.chest.wood_copper.name=Tre til Kobber Kisteoppgradering
item.ironchest.chest.diamond_obsidian.name=Diamant til Obsidian Kisteoppgradering
book.ironchest.dirtchest9000.title=Hvordan bruker din JordKiste 9000!
book.ironchest.dirtchest9000.page1=Velkommen til din nye JordKiste9000! Vi håper du vil nyte mange lykkelige år med lagring av din stabel av jord i vå lager verktøy.
book.ironchest.dirtchest9000.page2=Bruk: bare å sette bunken med jord av ditt valg i den svært mottakelige sporet og nyte den store fordelen med åa den jorden tilgjengelig for deg, nådu passerer denne kisten!
book.ironchest.dirtchest9000.page3=Vi håper du har hatt en god fornøyelse gjennom denne bruksanvisningen, og hår du vil vurdere å bruke vå produkter i fremtiden! Vennlig hilsen, JordKiste9000 manual forfattere innarbeidet.
book.ironchest.dirtchest9000.page4=Garanti: Dette produktet har ingen garantier av noe slag. Din jord kan ikke lagres, det kan sakte lekke ut i miljøet, eller alternativt, kan det ikke gjøre noe i det hele tatt.
book.ironchest.dirtchest9000.page5=JordKiste 9000 er snill mot miljøet. Vennligst ta hånd om denne veileder boken ansvarlig, og hva du enn gjør ikke kast den inn i noe lav. Vi ville bli veldig trist.

View File

@ -1,25 +1,25 @@
tile.ironchest:IRON.name=Ijzeren Kist tile.ironchest.chest.iron.name=Ijzeren Kist
tile.ironchest:GOLD.name=Gouden Kist tile.ironchest.chest.gold.name=Gouden Kist
tile.ironchest:DIAMOND.name=Diamanten Kist tile.ironchest.chest.diamond.name=Diamanten Kist
tile.ironchest:COPPER.name=Koperen Kist tile.ironchest.chest.copper.name=Koperen Kist
tile.ironchest:SILVER.name=Zilveren Kist tile.ironchest.chest.silver.name=Zilveren Kist
tile.ironchest:CRYSTAL.name=Kristallen Kist tile.ironchest.chest.crystal.name=Kristallen Kist
tile.ironchest:OBSIDIAN.name=Obsidiaanen Kist tile.ironchest.chest.obsidian.name=Obsidiaanen Kist
tile.ironchest:DIRTCHEST9000.name=Aarden Kist 9000! tile.ironchest.chest.dirtchest9000.name=Aarden Kist 9000!
item.ironchest:IRONGOLD.name=Ijzeren naar Gouden Kist Transformatie item.ironchest.chest.iron_gold.name=Ijzeren naar Gouden Kist Transformatie
item.ironchest:GOLDDIAMOND.name=Gouden naar Diamanten Kist Transformatie item.ironchest.chest.gold_diamond.name=Gouden naar Diamanten Kist Transformatie
item.ironchest:COPPERSILVER.name=Koperen naar Zilveren Kist Transformatie item.ironchest.chest.copper_silver.name=Koperen naar Zilveren Kist Transformatie
item.ironchest:SILVERGOLD.name=Zilveren naar Gouden Kist Transformatie item.ironchest.chest.silver_gold.name=Zilveren naar Gouden Kist Transformatie
item.ironchest:COPPERIRON.name=Koperen naar Ijzeren Kist Transformatie item.ironchest.chest.copper_iron.name=Koperen naar Ijzeren Kist Transformatie
item.ironchest:DIAMONDCRYSTAL.name=Diamanten naar Kristallen Kist Transformatie item.ironchest.chest.diamond_crystal.name=Diamanten naar Kristallen Kist Transformatie
item.ironchest:WOODIRON.name=Houten naar Ijzeren Kist Transformatie item.ironchest.chest.wood_iron.name=Houten naar Ijzeren Kist Transformatie
item.ironchest:WOODCOPPER.name=Houten naar Koperen Kist Transformatie item.ironchest.chest.wood_copper.name=Houten naar Koperen Kist Transformatie
item.ironchest:DIAMONDOBSIDIAN.name=Diamanten naar Obsidiaanen Kist Transformatie item.ironchest.chest.diamond_obsidian.name=Diamanten naar Obsidiaanen Kist Transformatie
book.ironchest:dirtchest9000.title=Hoe gebruik je uw Aarden Kist 9000! book.ironchest.dirtchest9000.title=Hoe gebruik je uw Aarden Kist 9000!
book.ironchest:dirtchest9000.page1=Welkom voor uw nieuwe Aarden Kist 9000! We hopen dat je veel geluk zal beleven om uw hoop aarde te bewaren in onze stokeer faciliteit. book.ironchest.dirtchest9000.page1=Welkom voor uw nieuwe Aarden Kist 9000! We hopen dat je veel geluk zal beleven om uw hoop aarde te bewaren in onze stokeer faciliteit.
book.ironchest:dirtchest9000.page2=Gebruik: Plaats simpelweg uw hoop aarde naar uw keuze in de zeer ontvankelijke gleuf en geniet van de geriefelijkheid om dat hoop aarde altijd beschikbaar tot u te hebben, wanneer dan ook! book.ironchest.dirtchest9000.page2=Gebruik: Plaats simpelweg uw hoop aarde naar uw keuze in de zeer ontvankelijke gleuf en geniet van de geriefelijkheid om dat hoop aarde altijd beschikbaar tot u te hebben, wanneer dan ook!
book.ironchest:dirtchest9000.page3=We hopen dat u heeft genoten om deze handleiding te lezen en we hopen dat u overweegt om onze producten in de toekomst te gebruiken! Met vriendelijke groeten, De Aarden Kist 9000 Handleiding Auteurs. book.ironchest.dirtchest9000.page3=We hopen dat u heeft genoten om deze handleiding te lezen en we hopen dat u overweegt om onze producten in de toekomst te gebruiken! Met vriendelijke groeten, De Aarden Kist 9000 Handleiding Auteurs.
book.ironchest:dirtchest9000.page4=Garantie: Deze product biedt geen enkele garantie. Uw aarde kan mogenlijk niet gestockeerd worden, het kan langzaam verdampen of het kan ook helemaal niks doen. book.ironchest.dirtchest9000.page4=Garantie: Deze product biedt geen enkele garantie. Uw aarde kan mogenlijk niet gestockeerd worden, het kan langzaam verdampen of het kan ook helemaal niks doen.
book.ironchest:dirtchest9000.page5=Aarden Kist 9000 is mileuvriendelijk. Gelieve deze handleiding verantwoordlijk te ontdoen en gooi het niet zomaar in wat lava. We zouden zeer verdrietig zijn. book.ironchest.dirtchest9000.page5=Aarden Kist 9000 is mileuvriendelijk. Gelieve deze handleiding verantwoordlijk te ontdoen en gooi het niet zomaar in wat lava. We zouden zeer verdrietig zijn.

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Żelazna skrzynia ################
tile.ironchest:GOLD.name=Złota skrzynia # Chests #
tile.ironchest:DIAMOND.name=Diamentowa skrzynia ################
tile.ironchest:COPPER.name=Miedziana skrzynia
tile.ironchest:SILVER.name=Srebrna skrzynia
tile.ironchest:CRYSTAL.name=Kryształowa skrzynia
tile.ironchest:OBSIDIAN.name=Obsydianowa skrzynia
item.ironchest:IRONGOLD.name=Ulepszenie żelaznej skrzyni na złotą tile.ironchest.chest.iron.name=Żelazna skrzynia
item.ironchest:GOLDDIAMOND.name=Ulepszenie złotej skrzyni na diamentową tile.ironchest.chest.gold.name=Złota skrzynia
item.ironchest:COPPERSILVER.name=Ulepszenie miedzianej skrzyni na srebrną tile.ironchest.chest.diamond.name=Diamentowa skrzynia
item.ironchest:SILVERGOLD.name=Ulepszenie srebrnej skrzyni na złotą tile.ironchest.chest.copper.name=Miedziana skrzynia
item.ironchest:COPPERIRON.name=Ulepszenie miedzianej skrzyni na żelazną tile.ironchest.chest.silver.name=Srebrna skrzynia
item.ironchest:DIAMONDCRYSTAL.name=Ulepszenie diamentowej skrzyni na kryształową tile.ironchest.chest.crystal.name=Kryształowa skrzynia
item.ironchest:WOODIRON.name=Ulepszenie drewnianej skrzyni na żelazną tile.ironchest.chest.obsidian.name=Obsydianowa skrzynia
item.ironchest:WOODCOPPER.name=Ulepszenie drewnianej skrzyni na miedzianą
item.ironchest:DIAMONDOBSIDIAN.name=Ulepszenie diamentowej skrzyni na obsydianową item.ironchest.chest.iron_gold.name=Ulepszenie żelaznej skrzyni na złotą
item.ironchest.chest.gold_diamond.name=Ulepszenie złotej skrzyni na diamentową
item.ironchest.chest.copper_silver.name=Ulepszenie miedzianej skrzyni na srebrną
item.ironchest.chest.silver_gold.name=Ulepszenie srebrnej skrzyni na złotą
item.ironchest.chest.copper_iron.name=Ulepszenie miedzianej skrzyni na żelazną
item.ironchest.chest.diamond_crystal.name=Ulepszenie diamentowej skrzyni na kryształową
item.ironchest.chest.wood_iron.name=Ulepszenie drewnianej skrzyni na żelazną
item.ironchest.chest.wood_copper.name=Ulepszenie drewnianej skrzyni na miedzianą
item.ironchest.chest.diamond_obsidian.name=Ulepszenie diamentowej skrzyni na obsydianową

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Baú de Ferro ################
tile.ironchest:GOLD.name=Baú de Ouro # Chests #
tile.ironchest:DIAMOND.name=Baú de Diamante ################
tile.ironchest:COPPER.name=Baú de Cobre
tile.ironchest:SILVER.name=Baú de Prata
tile.ironchest:CRYSTAL.name=Baú de Cristal
tile.ironchest:OBSIDIAN.name=Baú de Obsidiana
tile.ironchest:DIRTCHEST9000.name=BaúDeSujeira 9000!
item.ironchest:IRONGOLD.name=Aprimoramento de Baú de Ferro para Ouro tile.ironchest.chest.iron.name=Baú de Ferro
item.ironchest:GOLDDIAMOND.name=Aprimoramento de Baú de Ouro para Diamante tile.ironchest.chest.gold.name=Baú de Ouro
item.ironchest:COPPERSILVER.name=Aprimoramento de Baú de Cobre para Prata tile.ironchest.chest.diamond.name=Baú de Diamante
item.ironchest:SILVERGOLD.name=Aprimoramento de Baú de Prata para Ouro tile.ironchest.chest.copper.name=Baú de Cobre
item.ironchest:COPPERIRON.name=Aprimoramento de Baú de Cobre para Ferro tile.ironchest.chest.silver.name=Baú de Prata
item.ironchest:DIAMONDCRYSTAL.name=Aprimoramento de Baú de Diamante para Cristal tile.ironchest.chest.crystal.name=Baú de Cristal
item.ironchest:WOODIRON.name=Aprimoramento de Baú de Madeira para Ferro tile.ironchest.chest.obsidian.name=Baú de Obsidiana
item.ironchest:WOODCOPPER.name=Aprimoramento de Baú de Madeira para Cobre tile.ironchest.chest.dirtchest9000.name=BaúDeSujeira 9000!
item.ironchest:DIAMONDOBSIDIAN.name=Aprimoramento de Baú de Diamante para Obsidiana
book.ironchest:dirtchest9000.title=Como utilizar seu BaúDeSujeira 9000! item.ironchest.chest.iron_gold.name=Aprimoramento de Baú de Ferro para Ouro
book.ironchest:dirtchest9000.page1=Bem-vindo ao seu novo BaúDeSujeira 9000! Esperamos que desfrute de muitos anos felizes de armazenagem de sua pilha de sujeira em nosso utilitário de armazenamento. item.ironchest.chest.gold_diamond.name=Aprimoramento de Baú de Ouro para Diamante
book.ironchest:dirtchest9000.page2=Uso: basta inserir o monte de sujeira de sua escolha no slot altamente receptivo e apreciar a grande conveniência de ter essa sujeira disponíveis para você, a qualquer momento que você passar pelo baú! item.ironchest.chest.copper_silver.name=Aprimoramento de Baú de Cobre para Prata
book.ironchest:dirtchest9000.page3=Esperamos que tenham gostado de rever este manual de instruções, e espero que você considere o uso de nossos produtos no futuro! Atenciosamente, manual do BaúDeSujeira 9000 escritores incorporados. item.ironchest.chest.silver_gold.name=Aprimoramento de Baú de Prata para Ouro
book.ironchest:dirtchest9000.page4=Garantia: Este produto não tem qualquer tipo de garantia. Sua sujeira pode não ser armazenada, pode vazar lentamente para o ambiente, ou alternativamente, pode não fazer absolutamente nada. item.ironchest.chest.copper_iron.name=Aprimoramento de Baú de Cobre para Ferro
book.ironchest:dirtchest9000.page5=BaúDeSujeira 9000 é bom para o meio ambiente. Elimine este guia de forma responsável, e não o que você faz apenas lançando-o em alguma lava. Ficaríamos muito triste. item.ironchest.chest.diamond_crystal.name=Aprimoramento de Baú de Diamante para Cristal
item.ironchest.chest.wood_iron.name=Aprimoramento de Baú de Madeira para Ferro
item.ironchest.chest.wood_copper.name=Aprimoramento de Baú de Madeira para Cobre
item.ironchest.chest.diamond_obsidian.name=Aprimoramento de Baú de Diamante para Obsidiana
book.ironchest.dirtchest9000.title=Como utilizar seu BaúDeSujeira 9000!
book.ironchest.dirtchest9000.page1=Bem-vindo ao seu novo BaúDeSujeira 9000! Esperamos que desfrute de muitos anos felizes de armazenagem de sua pilha de sujeira em nosso utilitário de armazenamento.
book.ironchest.dirtchest9000.page2=Uso: basta inserir o monte de sujeira de sua escolha no slot altamente receptivo e apreciar a grande conveniência de ter essa sujeira disponíveis para você, a qualquer momento que você passar pelo baú!
book.ironchest.dirtchest9000.page3=Esperamos que tenham gostado de rever este manual de instruções, e espero que você considere o uso de nossos produtos no futuro! Atenciosamente, manual do BaúDeSujeira 9000 escritores incorporados.
book.ironchest.dirtchest9000.page4=Garantia: Este produto não tem qualquer tipo de garantia. Sua sujeira pode não ser armazenada, pode vazar lentamente para o ambiente, ou alternativamente, pode não fazer absolutamente nada.
book.ironchest.dirtchest9000.page5=BaúDeSujeira 9000 é bom para o meio ambiente. Elimine este guia de forma responsável, e não o que você faz apenas lançando-o em alguma lava. Ficaríamos muito triste.

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Baú de Ferro ################
tile.ironchest:GOLD.name=Baú de Ouro # Chests #
tile.ironchest:DIAMOND.name=Baú de Diamante ################
tile.ironchest:COPPER.name=Baú de Cobre
tile.ironchest:SILVER.name=Baú de Prata
tile.ironchest:CRYSTAL.name=Baú de Cristal
tile.ironchest:OBSIDIAN.name=Baú de Obsidiana
item.ironchest:IRONGOLD.name=Melhoria de Baú de Ferro para Ouro tile.ironchest.chest.iron.name=Baú de Ferro
item.ironchest:GOLDDIAMOND.name=Melhoria de Baú de Ouro para Diamante tile.ironchest.chest.gold.name=Baú de Ouro
item.ironchest:COPPERSILVER.name=Melhoria de Baú de Cobre para Prata tile.ironchest.chest.diamond.name=Baú de Diamante
item.ironchest:SILVERGOLD.name=Melhoria de Baú de Prata para Ouro tile.ironchest.chest.copper.name=Baú de Cobre
item.ironchest:COPPERIRON.name=Melhoria de Baú de Cobre para Ferro tile.ironchest.chest.silver.name=Baú de Prata
item.ironchest:DIAMONDCRYSTAL.name=Melhoria de Baú de Diamante para Cristal tile.ironchest.chest.crystal.name=Baú de Cristal
item.ironchest:WOODIRON.name=Melhoria de Baú de Madeira para Ferro tile.ironchest.chest.obsidian.name=Baú de Obsidiana
item.ironchest:WOODCOPPER.name=Melhoria de Baú de Madeira para Cobre
item.ironchest:DIAMONDOBSIDIAN.name=Melhoria de Baú de Diamante para Obsidiana item.ironchest.chest.iron_gold.name=Melhoria de Baú de Ferro para Ouro
item.ironchest.chest.gold_diamond.name=Melhoria de Baú de Ouro para Diamante
item.ironchest.chest.copper_silver.name=Melhoria de Baú de Cobre para Prata
item.ironchest.chest.silver_gold.name=Melhoria de Baú de Prata para Ouro
item.ironchest.chest.copper_iron.name=Melhoria de Baú de Cobre para Ferro
item.ironchest.chest.diamond_crystal.name=Melhoria de Baú de Diamante para Cristal
item.ironchest.chest.wood_iron.name=Melhoria de Baú de Madeira para Ferro
item.ironchest.chest.wood_copper.name=Melhoria de Baú de Madeira para Cobre
item.ironchest.chest.diamond_obsidian.name=Melhoria de Baú de Diamante para Obsidiana

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Железный сундук ################
tile.ironchest:GOLD.name=Золотой сундук # Chests #
tile.ironchest:DIAMOND.name=Алмазный сундук ################
tile.ironchest:COPPER.name=Медный сундук
tile.ironchest:SILVER.name=Серебряный сундук
tile.ironchest:CRYSTAL.name=Кристальный сундук
tile.ironchest:OBSIDIAN.name=Обсидиановый сундук
item.ironchest:IRONGOLD.name=Улучшение из железного в золотой сундук tile.ironchest.chest.iron.name=Железный сундук
item.ironchest:GOLDDIAMOND.name=Улучшение из золотого в алмазный сундук tile.ironchest.chest.gold.name=Золотой сундук
item.ironchest:COPPERSILVER.name=Улучшение из медного в серебряный сундук tile.ironchest.chest.diamond.name=Алмазный сундук
item.ironchest:SILVERGOLD.name=Улучшение из серебряного в золотой сундук tile.ironchest.chest.copper.name=Медный сундук
item.ironchest:COPPERIRON.name=Улучшение из медного в железный сундук tile.ironchest.chest.silver.name=Серебряный сундук
item.ironchest:DIAMONDCRYSTAL.name=Улучшение из алмазного в кристальный сундук tile.ironchest.chest.crystal.name=Кристальный сундук
item.ironchest:WOODIRON.name=Улучшение из деревянного в железный сундук tile.ironchest.chest.obsidian.name=Обсидиановый сундук
item.ironchest:WOODCOPPER.name=Улучшение из деревянного в медный сундук
item.ironchest:DIAMONDOBSIDIAN.name=Улучшение из алмазного в обсидиановый сундук item.ironchest.chest.iron_gold.name=Улучшение из железного в золотой сундук
item.ironchest.chest.gold_diamond.name=Улучшение из золотого в алмазный сундук
item.ironchest.chest.copper_silver.name=Улучшение из медного в серебряный сундук
item.ironchest.chest.silver_gold.name=Улучшение из серебряного в золотой сундук
item.ironchest.chest.copper_iron.name=Улучшение из медного в железный сундук
item.ironchest.chest.diamond_crystal.name=Улучшение из алмазного в кристальный сундук
item.ironchest.chest.wood_iron.name=Улучшение из деревянного в железный сундук
item.ironchest.chest.wood_copper.name=Улучшение из деревянного в медный сундук
item.ironchest.chest.diamond_obsidian.name=Улучшение из алмазного в обсидиановый сундук

View File

@ -1,17 +1,21 @@
tile.ironchest:IRON.name=Järnkista ################
tile.ironchest:GOLD.name=Guldkista # Chests #
tile.ironchest:DIAMOND.name=Diamantkista ################
tile.ironchest:COPPER.name=Kopparkista
tile.ironchest:SILVER.name=Silverkista
tile.ironchest:CRYSTAL.name=Kristallkista
tile.ironchest:OBSIDIAN.name=Obsidiankista
item.ironchest:IRONGOLD.name=Järn till Guld Kistuppgradering tile.ironchest.chest.iron.name=Järnkista
item.ironchest:GOLDDIAMOND.name=Guld till Diamant Kistuppgradering tile.ironchest.chest.gold.name=Guldkista
item.ironchest:COPPERSILVER.name=Koppar till Silver Kistuppgradering tile.ironchest.chest.diamond.name=Diamantkista
item.ironchest:SILVERGOLD.name=Silver till Guld Kistuppgradering tile.ironchest.chest.copper.name=Kopparkista
item.ironchest:COPPERIRON.name=Koppar till Järn Kistuppgradering tile.ironchest.chest.silver.name=Silverkista
item.ironchest:DIAMONDCRYSTAL.name=Diamant till Kristal Kistuppgradering tile.ironchest.chest.crystal.name=Kristallkista
item.ironchest:WOODIRON.name=Trä till Järn Kistuppgradering tile.ironchest.chest.obsidian.name=Obsidiankista
item.ironchest:WOODCOPPER.name=Trä till Koppar Kistuppgradering
item.ironchest:DIAMONDOBSIDIAN.name=Diamant till Obsidian Kistuppgradering item.ironchest.chest.iron_gold.name=Järn till Guld Kistuppgradering
item.ironchest.chest.gold_diamond.name=Guld till Diamant Kistuppgradering
item.ironchest.chest.copper_silver.name=Koppar till Silver Kistuppgradering
item.ironchest.chest.silver_gold.name=Silver till Guld Kistuppgradering
item.ironchest.chest.copper_iron.name=Koppar till Järn Kistuppgradering
item.ironchest.chest.diamond_crystal.name=Diamant till Kristal Kistuppgradering
item.ironchest.chest.wood_iron.name=Trä till Järn Kistuppgradering
item.ironchest.chest.wood_copper.name=Trä till Koppar Kistuppgradering
item.ironchest.chest.diamond_obsidian.name=Diamant till Obsidian Kistuppgradering

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=Demir Sandık ################
tile.ironchest:GOLD.name=Altın Sandık # Chests #
tile.ironchest:DIAMOND.name=Elmas Sandık ################
tile.ironchest:COPPER.name=Bakır Sandık
tile.ironchest:SILVER.name=Gümüş Sandık
tile.ironchest:CRYSTAL.name=Kristal Sandık
tile.ironchest:OBSIDIAN.name=Obsidyen Sandık
tile.ironchest:DIRTCHEST9000.name=Toprak Sandık-9000!
item.ironchest:IRONGOLD.name=Demir Sandığı Altın Sandığa Yükselt tile.ironchest.chest.iron.name=Demir Sandık
item.ironchest:GOLDDIAMOND.name=Altın Sandığı Elmas Sandığa Yükselt tile.ironchest.chest.gold.name=Altın Sandık
item.ironchest:COPPERSILVER.name=Bakır Sandığı Gümüş Sandığa Yükselt tile.ironchest.chest.diamond.name=Elmas Sandık
item.ironchest:SILVERGOLD.name=Gümüş Sandığı Altın Sandığa Yükselt tile.ironchest.chest.copper.name=Bakır Sandık
item.ironchest:COPPERIRON.name=Bakır Sandığı Demir Sandığa Yükselt tile.ironchest.chest.silver.name=Gümüş Sandık
item.ironchest:DIAMONDCRYSTAL.name=Elmas Sandığı Kristal Sandığa Yükselt tile.ironchest.chest.crystal.name=Kristal Sandık
item.ironchest:WOODIRON.name=Tahta Sandığı Demir Sandığa Yükselt tile.ironchest.chest.obsidian.name=Obsidyen Sandık
item.ironchest:WOODCOPPER.name=Tahta Sandığı Bakır Sandığa Yükselt tile.ironchest.chest.dirtchest9000.name=Toprak Sandık-9000!
item.ironchest:DIAMONDOBSIDIAN.name=Elmas Sandığı Obsidyen Sandığa Yükselt
book.ironchest:dirtchest9000.title=Toprak Sandık-9000 Kullanım Kılavuzu item.ironchest.chest.iron_gold.name=Demir Sandığı Altın Sandığa Yükselt
book.ironchest:dirtchest9000.page1=Yeni sandık olan Toprak Sandık-9000 yaptığınız için teşekkürler.Bu sandık ile topraklarınızı depolayabilirsiniz. item.ironchest.chest.gold_diamond.name=Altın Sandığı Elmas Sandığa Yükselt
book.ironchest:dirtchest9000.page2=Kullanımı: 64 adet toprak alarak içine koyunuz. Böylece sadece toprak depolanır. item.ironchest.chest.copper_silver.name=Bakır Sandığı Gümüş Sandığa Yükselt
book.ironchest:dirtchest9000.page3=Biz bu kılavuzu gözden keyif aldık umuyoruz, ve gelecekte ürünlerimizi kullanmayı düşünün umuyoruz! Saygılarımızla, dahil DirtChest 9000 manuel yazar. item.ironchest.chest.silver_gold.name=Gümüş Sandığı Altın Sandığa Yükselt
book.ironchest:dirtchest9000.page4=Garanti: Bu ürün herhangi bir garanti vardır. Sizin kir depolanabilir değil, yavaş yavaş çevreye sülük olabilir, ya da alternatif olarak, hiç bir şey yapamazsınız. item.ironchest.chest.copper_iron.name=Bakır Sandığı Demir Sandığa Yükselt
book.ironchest:dirtchest9000.page5=Toprak Sandık-9000 çevreye türüdür. Sorumlu bu rehber kitap imha edin ve ne olursa olsun sadece bazı lav içine ayna yok yok. Bizim için çok üzücü olacaktır. item.ironchest.chest.diamond_crystal.name=Elmas Sandığı Kristal Sandığa Yükselt
item.ironchest.chest.wood_iron.name=Tahta Sandığı Demir Sandığa Yükselt
item.ironchest.chest.wood_copper.name=Tahta Sandığı Bakır Sandığa Yükselt
item.ironchest.chest.diamond_obsidian.name=Elmas Sandığı Obsidyen Sandığa Yükselt
book.ironchest.dirtchest9000.title=Toprak Sandık-9000 Kullanım Kılavuzu
book.ironchest.dirtchest9000.page1=Yeni sandık olan Toprak Sandık-9000 yaptığınız için teşekkürler.Bu sandık ile topraklarınızı depolayabilirsiniz.
book.ironchest.dirtchest9000.page2=Kullanımı: 64 adet toprak alarak içine koyunuz. Böylece sadece toprak depolanır.
book.ironchest.dirtchest9000.page3=Biz bu kılavuzu gözden keyif aldık umuyoruz, ve gelecekte ürünlerimizi kullanmayı düşünün umuyoruz! Saygılarımızla, dahil DirtChest 9000 manuel yazar.
book.ironchest.dirtchest9000.page4=Garanti: Bu ürün herhangi bir garanti vardır. Sizin kir depolanabilir değil, yavaş yavaş çevreye sülük olabilir, ya da alternatif olarak, hiç bir şey yapamazsınız.
book.ironchest.dirtchest9000.page5=Toprak Sandık-9000 çevreye türüdür. Sorumlu bu rehber kitap imha edin ve ne olursa olsun sadece bazı lav içine ayna yok yok. Bizim için çok üzücü olacaktır.

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=铁箱子 ################
tile.ironchest:GOLD.name=金箱子 # Chests #
tile.ironchest:DIAMOND.name=钻石箱子 ################
tile.ironchest:COPPER.name=铜箱子
tile.ironchest:SILVER.name=银箱子
tile.ironchest:CRYSTAL.name=水晶箱子
tile.ironchest:OBSIDIAN.name=黑曜石箱子
tile.ironchest:DIRTCHEST9000.name=泥箱子9000!
item.ironchest:IRONGOLD.name=升级:铁>金 tile.ironchest.chest.iron.name=铁箱子
item.ironchest:GOLDDIAMOND.name=升级:金>钻石 tile.ironchest.chest.gold.name=金箱子
item.ironchest:COPPERSILVER.name=升级:铜>银 tile.ironchest.chest.diamond.name=钻石箱子
item.ironchest:SILVERGOLD.name=升级:银>金 tile.ironchest.chest.copper.name=铜箱子
item.ironchest:COPPERIRON.name=升级:铜>铁 tile.ironchest.chest.silver.name=银箱子
item.ironchest:DIAMONDCRYSTAL.name=升级:钻石>水晶 tile.ironchest.chest.crystal.name=水晶箱子
item.ironchest:WOODIRON.name=升级:木>铁 tile.ironchest.chest.obsidian.name=黑曜石箱子
item.ironchest:WOODCOPPER.name=升级:木>铜 tile.ironchest.chest.dirtchest9000.name=泥箱子9000!
item.ironchest:DIAMONDOBSIDIAN.name=升级:钻石>黑曜石
book.ironchest:dirtchest9000.title=傻瓜也一定会用的泥箱子9000! item.ironchest.chest.iron_gold.name=升级:铁>金
book.ironchest:dirtchest9000.page1=欢迎使用这台全新的泥箱子9000!希望你能愉快地常年使用我们的设备来储存(大量)泥土(大雾)。 item.ironchest.chest.gold_diamond.name=升级:金>钻石
book.ironchest:dirtchest9000.page2=使用方法: 把一组泥土丢进去就行了。每次您经过的时候都可以打开它(很方便地)取出来用。 item.ironchest.chest.copper_silver.name=升级:铜>银
book.ironchest:dirtchest9000.page3=希望您阅读本手册愉快并选择使用我们的产品。作为泥箱子9000手册作者我谨向您致以诚挚问候。 item.ironchest.chest.silver_gold.name=升级:银>金
book.ironchest:dirtchest9000.page4=质量保障: 恕本产品不提供任何质量保障。您的泥土或者能安全存储其内,或者会逐渐流失到环境中,或者什么也不会发生。(读者:我了个去!) item.ironchest.chest.copper_iron.name=升级:铜>铁
book.ironchest:dirtchest9000.page5=泥箱子9000十分环保。请小心收藏好本手册如果您随手丢进岩浆的话我们可会伤心的。 item.ironchest.chest.diamond_crystal.name=升级:钻石>水晶
item.ironchest.chest.wood_iron.name=升级:木>铁
item.ironchest.chest.wood_copper.name=升级:木>铜
item.ironchest.chest.diamond_obsidian.name=升级:钻石>黑曜石
book.ironchest.dirtchest9000.title=傻瓜也一定会用的泥箱子9000!
book.ironchest.dirtchest9000.page1=欢迎使用这台全新的泥箱子9000!希望你能愉快地常年使用我们的设备来储存(大量)泥土(大雾)。
book.ironchest.dirtchest9000.page2=使用方法: 把一组泥土丢进去就行了。每次您经过的时候都可以打开它(很方便地)取出来用。
book.ironchest.dirtchest9000.page3=希望您阅读本手册愉快并选择使用我们的产品。作为泥箱子9000手册作者我谨向您致以诚挚问候。
book.ironchest.dirtchest9000.page4=质量保障: 恕本产品不提供任何质量保障。您的泥土或者能安全存储其内,或者会逐渐流失到环境中,或者什么也不会发生。(读者:我了个去!)
book.ironchest.dirtchest9000.page5=泥箱子9000十分环保。请小心收藏好本手册如果您随手丢进岩浆的话我们可会伤心的。

View File

@ -1,25 +1,29 @@
tile.ironchest:IRON.name=鐵箱 ################
tile.ironchest:GOLD.name=黃金箱 # Chests #
tile.ironchest:DIAMOND.name=鑽石箱 ################
tile.ironchest:COPPER.name=銅箱
tile.ironchest:SILVER.name=銀箱
tile.ironchest:CRYSTAL.name=水晶箱
tile.ironchest:OBSIDIAN.name=黑曜石箱
tile.ironchest:DIRTCHEST9000.name=泥土箱9000!
item.ironchest:IRONGOLD.name=鐵箱升級成金箱 tile.ironchest.chest.iron.name=鐵箱
item.ironchest:GOLDDIAMOND.name=金箱升級成鑽石箱 tile.ironchest.chest.gold.name=黃金箱
item.ironchest:COPPERSILVER.name=銅箱升級成銀箱 tile.ironchest.chest.diamond.name=鑽石箱
item.ironchest:SILVERGOLD.name=銀箱升級成金箱 tile.ironchest.chest.copper.name=銅箱
item.ironchest:COPPERIRON.name=銅箱升級成鐵箱 tile.ironchest.chest.silver.name=銀箱
item.ironchest:DIAMONDCRYSTAL.name=鑽石箱升級成水晶箱 tile.ironchest.chest.crystal.name=水晶箱
item.ironchest:WOODIRON.name=木箱升級成鐵箱 tile.ironchest.chest.obsidian.name=黑曜石箱
item.ironchest:WOODCOPPER.name=木箱升級成銅箱 tile.ironchest.chest.dirtchest9000.name=泥土箱9000!
item.ironchest:DIAMONDOBSIDIAN.name=鑽石箱升級成黑曜石箱
book.ironchest:dirtchest9000.title=笨蛋也一定會用的泥土箱9000! item.ironchest.chest.iron_gold.name=鐵箱升級成金箱
book.ironchest:dirtchest9000.page1=歡迎使用這台全新的泥土箱9000!希望你能愉快地常年使用我們的設備來儲存泥土。 item.ironchest.chest.gold_diamond.name=金箱升級成鑽石箱
book.ironchest:dirtchest9000.page2=使用方法:把一組泥土丟進去就行了。每次您經過的時候都可以打開它很方便地取出來用。 item.ironchest.chest.copper_silver.name=銅箱升級成銀箱
book.ironchest:dirtchest9000.page3=希望您閱讀本手冊愉快並選擇使用我們的產品。作為泥土箱9000手冊作者我謹向您致以誠摯問候。 item.ironchest.chest.silver_gold.name=銀箱升級成金箱
book.ironchest:dirtchest9000.page4=質量保障:恕本產品不提供任何質量保障。您的泥土或許能安全存儲其內,或許會逐漸流失到環境中,或者什麼也不會發生。 item.ironchest.chest.copper_iron.name=銅箱升級成鐵箱
book.ironchest:dirtchest9000.page5=泥土箱9000十分環保。請小心收藏好本手冊如果您隨手丟進岩漿的話我們可會傷心的。 item.ironchest.chest.diamond_crystal.name=鑽石箱升級成水晶箱
item.ironchest.chest.wood_iron.name=木箱升級成鐵箱
item.ironchest.chest.wood_copper.name=木箱升級成銅箱
item.ironchest.chest.diamond_obsidian.name=鑽石箱升級成黑曜石箱
book.ironchest.dirtchest9000.title=笨蛋也一定會用的泥土箱9000!
book.ironchest.dirtchest9000.page1=歡迎使用這台全新的泥土箱9000!希望你能愉快地常年使用我們的設備來儲存泥土。
book.ironchest.dirtchest9000.page2=使用方法:把一組泥土丟進去就行了。每次您經過的時候都可以打開它很方便地取出來用。
book.ironchest.dirtchest9000.page3=希望您閱讀本手冊愉快並選擇使用我們的產品。作為泥土箱9000手冊作者我謹向您致以誠摯問候。
book.ironchest.dirtchest9000.page4=質量保障:恕本產品不提供任何質量保障。您的泥土或許能安全存儲其內,或許會逐漸流失到環境中,或者什麼也不會發生。
book.ironchest.dirtchest9000.page5=泥土箱9000十分環保。請小心收藏好本手冊如果您隨手丟進岩漿的話我們可會傷心的。

View File

@ -1,7 +1,7 @@
{ {
"parent": "block/block", "parent": "block/block",
"textures": { "textures": {
"texture": "ironchest:model/copper_chest" "texture": "ironchest:model/chest/copper_chest"
}, },
"elements": [ "elements": [
{ "from": [ 1, 0, 1 ], { "from": [ 1, 0, 1 ],

View File

@ -0,0 +1,152 @@
{
"parent": "block/block",
"textures": {
"texture": "ironchest:model/shulker/purple/shulker_purple_copper"
},
"elements": [
{ "from": [ 1, 0, 0 ],
"to": [ 15, 4, 1 ],
"faces": {
"north": { "uv": [ 0.25, 12, 3.75, 13 ], "texture": "#texture" }
}
},
{ "from": [ 4, 4, 0 ],
"to": [ 12, 8, 1 ],
"faces": {
"north": { "uv": [ 1, 11, 3, 12 ], "texture": "#texture" }
}
},
{ "from": [ 1, 4, 0 ],
"to": [ 4, 8, 1 ],
"faces": {
"north": { "uv": [ 3, 6, 3.75, 7 ], "texture": "#texture" }
}
},
{ "from": [ 12, 4, 0 ],
"to": [ 15, 8, 1 ],
"faces": {
"north": { "uv": [ 0.25, 6, 1, 7 ], "texture": "#texture" }
}
},
{ "from": [ 1, 8, 0 ],
"to": [ 15, 16, 1 ],
"faces": {
"north": { "uv": [ 0.25, 4, 3.75, 6 ], "texture": "#texture" }
}
},
{ "from": [ 15, 0, 0 ],
"to": [ 16, 4, 16 ],
"faces": {
"north": { "uv": [ 0, 12, 0.25, 13 ], "texture": "#texture" },
"east": { "uv": [ 4, 12, 8, 13 ], "texture": "#texture" },
"south": { "uv": [ 11.75, 12, 12, 13 ], "texture": "#texture" }
}
},
{ "from": [ 15, 4, 4 ],
"to": [ 16, 8, 12 ],
"faces": {
"east": { "uv": [ 5, 11, 7, 12 ], "texture": "#texture" }
}
},
{ "from": [ 15, 4, 0 ],
"to": [ 16, 8, 4 ],
"faces": {
"north": { "uv": [ 0, 6, 0.25, 7 ], "texture": "#texture" },
"east": { "uv": [ 7, 6, 8, 7 ], "texture": "#texture" }
}
},
{ "from": [ 15, 4, 12 ],
"to": [ 16, 8, 16 ],
"faces": {
"east": { "uv": [ 4, 6, 5, 7 ], "texture": "#texture" },
"south": { "uv": [ 11.75, 6, 12, 7 ], "texture": "#texture" }
}
},
{ "from": [ 15, 8, 0 ],
"to": [ 16, 16, 16 ],
"faces": {
"north": { "uv": [ 0, 4, 0.25, 6 ], "texture": "#texture" },
"east": { "uv": [ 4, 4, 8, 6 ], "texture": "#texture" },
"south": { "uv": [ 11.75, 4, 12, 6 ], "texture": "#texture" }
}
},
{ "from": [ 1, 0, 15 ],
"to": [ 15, 4, 16 ],
"faces": {
"south": { "uv": [ 8.25, 12, 11.75, 13 ], "texture": "#texture" }
}
},
{ "from": [ 4, 4, 15 ],
"to": [ 12, 8, 16 ],
"faces": {
"south": { "uv": [ 9, 11, 11, 12 ], "texture": "#texture" }
}
},
{ "from": [ 12, 4, 15 ],
"to": [ 15, 8, 16 ],
"faces": {
"south": { "uv": [ 11, 6, 11.75, 7 ], "texture": "#texture" }
}
},
{ "from": [ 1, 4, 15 ],
"to": [ 4, 8, 16 ],
"faces": {
"south": { "uv": [ 8.25, 6, 9, 7 ], "texture": "#texture" }
}
},
{ "from": [ 1, 8, 15 ],
"to": [ 15, 16, 16 ],
"faces": {
"south": { "uv": [ 8.25, 4, 11.75, 6 ], "texture": "#texture" }
}
},
{ "from": [ 0, 0, 0 ],
"to": [ 1, 4, 16 ],
"faces": {
"north": { "uv": [ 3.75, 12, 4, 13 ], "texture": "#texture" },
"south": { "uv": [ 8, 12, 8.25, 13 ], "texture": "#texture" },
"west": { "uv": [ 12, 12, 16, 13 ], "texture": "#texture" }
}
},
{ "from": [ 0, 4, 4 ],
"to": [ 1, 8, 12 ],
"faces": {
"west": { "uv": [ 13, 11, 15, 12 ], "texture": "#texture" }
}
},
{ "from": [ 0, 4, 12 ],
"to": [ 1, 8, 16 ],
"faces": {
"south": { "uv": [ 8, 6, 8.25, 7 ], "texture": "#texture" },
"west": { "uv": [ 15, 6, 16, 7 ], "texture": "#texture" }
}
},
{ "from": [ 0, 4, 0 ],
"to": [ 1, 8, 4 ],
"faces": {
"north": { "uv": [ 3.75, 6, 4, 7 ], "texture": "#texture" },
"west": { "uv": [ 12, 6, 13, 7 ], "texture": "#texture" }
}
},
{ "from": [ 0, 8, 0 ],
"to": [ 1, 16, 16 ],
"faces": {
"north": { "uv": [ 3.75, 4, 4, 6 ], "texture": "#texture" },
"south": { "uv": [ 8, 4, 8.25, 6 ], "texture": "#texture" },
"west": { "uv": [ 12, 4, 16, 6 ], "texture": "#texture" }
}
},
{ "from": [ 0, 16, 0 ],
"to": [ 16, 16, 16 ],
"faces": {
"up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture" }
}
},
{ "from": [ 0, 0, 0 ],
"to": [ 16, 0, 16 ],
"faces": {
"down": { "uv": [ 8, 7, 12, 11 ], "texture": "#texture" }
}
}
]
}

Some files were not shown because too many files have changed in this diff Show More