From 46f8519829a44d9cbaa3cfa5723a15f461dbda69 Mon Sep 17 00:00:00 2001 From: Cricket Date: Tue, 27 Jan 2015 09:56:28 -0500 Subject: [PATCH 01/85] WIP --- .../java/com/cricketcraft/chisel/Chisel.java | 29 +++-- .../chisel/block/BlockSnakestoneObsidian.java | 7 +- .../chisel/client/GeneralChiselClient.java | 29 ++--- .../chisel/client/player/PlayerSpecials.java | 38 +++++++ .../chisel/entity/fx/EntityCricketFX.java | 106 ++++++++++++++++++ .../chisel/proxy/ClientProxy.java | 28 ++--- 6 files changed, 182 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java create mode 100644 src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java diff --git a/src/main/java/com/cricketcraft/chisel/Chisel.java b/src/main/java/com/cricketcraft/chisel/Chisel.java index 0aad18e9..9cea1a51 100644 --- a/src/main/java/com/cricketcraft/chisel/Chisel.java +++ b/src/main/java/com/cricketcraft/chisel/Chisel.java @@ -1,16 +1,7 @@ package com.cricketcraft.chisel; -import java.io.File; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.config.Configuration; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import com.cricketcraft.chisel.block.BlockCarvable; +import com.cricketcraft.chisel.client.player.PlayerSpecials; import com.cricketcraft.chisel.compat.Compatibility; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.init.ChiselBlocks; @@ -21,7 +12,6 @@ import com.cricketcraft.chisel.network.PacketHandler; import com.cricketcraft.chisel.proxy.CommonProxy; import com.cricketcraft.chisel.utils.General; import com.cricketcraft.chisel.world.GeneratorChisel; - import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; @@ -29,16 +19,20 @@ import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLInterModComms; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent; +import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry.Type; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.File; @Mod(modid = Chisel.MOD_ID, name = Chisel.MOD_NAME, version = Chisel.VERSION, guiFactory = "com.cricketcraft.chisel.client.gui.GuiFactory", dependencies = "after:ForgeMultipart;after:Thaumcraft;after:appliedenergistics2;after:Railcraft;after:AWWayofTime;after:TwilightForest") public class Chisel { @@ -137,6 +131,9 @@ public class Chisel { MinecraftForge.EVENT_BUS.register(this); FMLCommonHandler.instance().bus().register(instance); + FMLCommonHandler.instance().bus().register(new PlayerSpecials()); + + FMLInterModComms.sendMessage("Waila", "register", "com.cricketcraft.chisel.compat.WailaCompat.register"); } diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockSnakestoneObsidian.java b/src/main/java/com/cricketcraft/chisel/block/BlockSnakestoneObsidian.java index 84310e2b..0ea09f4d 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockSnakestoneObsidian.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockSnakestoneObsidian.java @@ -1,16 +1,15 @@ package com.cricketcraft.chisel.block; -import java.util.Random; - +import com.cricketcraft.chisel.client.GeneralChiselClient; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import com.cricketcraft.chisel.client.GeneralChiselClient; +import java.util.Random; public class BlockSnakestoneObsidian extends BlockSnakestone { - public IIcon[] particles = new IIcon[8]; + public static IIcon[] particles = new IIcon[8]; public BlockSnakestoneObsidian(String iconPrefix) { super(iconPrefix); diff --git a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java index 14f72411..cf9d103d 100644 --- a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java +++ b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java @@ -1,7 +1,14 @@ package com.cricketcraft.chisel.client; -import java.util.Random; - +import com.cricketcraft.chisel.block.BlockGrimstone; +import com.cricketcraft.chisel.block.BlockHolystone; +import com.cricketcraft.chisel.block.BlockLavastone; +import com.cricketcraft.chisel.block.BlockSnakestoneObsidian; +import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; +import com.cricketcraft.chisel.carving.Carving; +import com.cricketcraft.chisel.config.Configurations; +import com.cricketcraft.chisel.entity.fx.*; +import com.cricketcraft.chisel.utils.GeneralClient; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -12,18 +19,7 @@ import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import com.cricketcraft.chisel.block.BlockGrimstone; -import com.cricketcraft.chisel.block.BlockHolystone; -import com.cricketcraft.chisel.block.BlockLavastone; -import com.cricketcraft.chisel.block.BlockSnakestoneObsidian; -import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; -import com.cricketcraft.chisel.carving.Carving; -import com.cricketcraft.chisel.config.Configurations; -import com.cricketcraft.chisel.entity.fx.EntityBallOMossFX; -import com.cricketcraft.chisel.entity.fx.EntityGrimstoneFX; -import com.cricketcraft.chisel.entity.fx.EntityHolystoneFX; -import com.cricketcraft.chisel.entity.fx.EntitySnakestoneObsidianFX; -import com.cricketcraft.chisel.utils.GeneralClient; +import java.util.Random; public class GeneralChiselClient { @@ -171,6 +167,11 @@ public class GeneralChiselClient { } } + public static void spawnCricketFX(World world, double x, double y, double z) { + EntityCricketFX cricket = new EntityCricketFX(world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(cricket); + } + public static void spawnBallOMossFX(World world, double x, double y, double z) { if (Configurations.particlesTickrate == 0 || tick++ % Configurations.particlesTickrate == 0) { EntityBallOMossFX res = new EntityBallOMossFX(world, x, y, z); diff --git a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java new file mode 100644 index 00000000..da7cf4c3 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java @@ -0,0 +1,38 @@ +package com.cricketcraft.chisel.client.player; + +import com.cricketcraft.chisel.client.GeneralChiselClient; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelRenderer; +import net.minecraftforge.client.event.RenderPlayerEvent; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class PlayerSpecials { + + public PlayerSpecials() { + FMLCommonHandler.instance().bus().register(this); + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void renderCricket(RenderPlayerEvent event) { + if (!"TheCricket26".equals(event.entityPlayer.getDisplayName())) { + return; + } + if (event.entityPlayer.isInvisible()) { + return; + } + + ModelRenderer body = null; + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glPushMatrix(); + + GeneralChiselClient.spawnCricketFX(event.entityPlayer.getEntityWorld(), event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java b/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java new file mode 100644 index 00000000..f8e9a177 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java @@ -0,0 +1,106 @@ +package com.cricketcraft.chisel.entity.fx; + +import com.cricketcraft.chisel.Chisel; +import com.cricketcraft.chisel.utils.General; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityCricketFX extends EntityFX { + + private double tx, ty, tz, speed; + + public EntityCricketFX(World world, double x, double y, double z) { + super(world, x + 1, y + 1, z + 1); + particleScale = 0.5F + 0.5F * General.rand.nextFloat(); + speed = 0.04 + 0.04 * General.rand.nextDouble(); + + particleMaxAge = (int) (Math.random() * 10.0D) + 40; + + tx = x + General.rand.nextDouble(); + ty = y + General.rand.nextDouble(); + tz = z + General.rand.nextDouble(); + + switch (General.rand.nextInt(6)) { + case 0: + tx = x; + break; + case 1: + tx = x + 1; + break; + case 2: + ty = y; + break; + case 3: + ty = y + 1; + break; + case 4: + tz = z; + break; + case 5: + tz = z + 1; + break; + } + + double dx = (tx - posX) * 3; + double dy = (ty - posY) * 3; + double dz = (tz - posZ) * 3; + + setPosition(posX + dx, posY + dy + 8, posZ + dz); + prevPosX = posX; + prevPosY = posY; + prevPosZ = posZ; + + noClip = true; + } + + @Override + public int getFXLayer() { + return 1; + } + + @Override + public void renderParticle(Tessellator tessellator, float partialTick, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) { + super.renderParticle(tessellator, partialTick, rotX, rotXZ, rotZ, rotYZ, rotXY); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Chisel.MOD_ID + ":/assets/chisel/blocks/snakestone/obsidian/particles/" + General.rand.nextInt(8) + ".png")); + if (particleAge++ >= particleMaxAge) { + setDead(); + return; + } + + double dx = tx - posX; + double dy = ty - posY; + double dz = tz - posZ; + + double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + + if (distance == 0) { + setDead(); + return; + } + + if (distance < 0.4) { + particleAlpha = (float) (distance / 0.4); + } else if (particleAge < 20) { + particleAlpha = 1.0F * particleAge / 20; + } else { + particleAlpha = 1.0F; + } + + if (distance < speed) { + speed = distance; + } + + prevPosX = posX; + prevPosY = posY; + prevPosZ = posZ; + + double px = posX + dx / distance * speed; + double py = posY + dy / distance * speed; + double pz = posZ + dz / distance * speed; + + setPosition(px, py, pz); + } +} diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index 9a57427d..d634fd6d 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -1,27 +1,8 @@ package com.cricketcraft.chisel.proxy; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.RenderSnowball; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; - import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; import com.cricketcraft.chisel.block.tileentity.TileEntityPresent; -import com.cricketcraft.chisel.client.render.BlockAdvancedMarbleRenderer; -import com.cricketcraft.chisel.client.render.BlockCTMNoLightRenderer; -import com.cricketcraft.chisel.client.render.BlockCarpetRenderer; -import com.cricketcraft.chisel.client.render.BlockEldritchRenderer; -import com.cricketcraft.chisel.client.render.BlockGlowRenderer; -import com.cricketcraft.chisel.client.render.BlockLayeredRenderer; -import com.cricketcraft.chisel.client.render.BlockMarblePaneRenderer; -import com.cricketcraft.chisel.client.render.BlockMarblePillarRenderer; -import com.cricketcraft.chisel.client.render.BlockMarbleStairsRenderer; -import com.cricketcraft.chisel.client.render.BlockRoadLineRenderer; -import com.cricketcraft.chisel.client.render.BlockSnakeStoneRenderer; -import com.cricketcraft.chisel.client.render.BlockTexturedOreRenderer; -import com.cricketcraft.chisel.client.render.RenderStandardBlockNoSunlight; +import com.cricketcraft.chisel.client.render.*; import com.cricketcraft.chisel.client.render.item.ItemChiselRenderer; import com.cricketcraft.chisel.client.render.item.ItemPresentRenderer; import com.cricketcraft.chisel.client.render.tile.RenderAutoChisel; @@ -31,9 +12,14 @@ import com.cricketcraft.chisel.entity.EntityCloudInABottle; import com.cricketcraft.chisel.entity.EntitySmashingRock; import com.cricketcraft.chisel.init.ChiselBlocks; import com.cricketcraft.chisel.init.ChiselItems; - import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.RenderSnowball; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxy extends CommonProxy { From e3e752901854db122b7f335dd127e34f102038a9 Mon Sep 17 00:00:00 2001 From: Cricket Date: Thu, 19 Feb 2015 17:13:16 -0500 Subject: [PATCH 02/85] Dev stuff is complete --- .../com/cricketcraft/chisel/Features.java | 527 +++++------------- .../chisel/client/GeneralChiselClient.java | 13 +- .../chisel/client/player/PlayerSpecials.java | 80 ++- .../chisel/config/Configurations.java | 24 +- .../chisel/entity/fx/EntityCricketFX.java | 106 ---- .../cricketcraft/chisel/init/ChiselItems.java | 2 +- .../chisel/item/chisel/ItemChisel.java | 32 +- .../chisel/proxy/ClientProxy.java | 4 + .../resources/assets/chisel/lang/en_US.lang | 1 + 9 files changed, 259 insertions(+), 530 deletions(-) delete mode 100644 src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index ab5452fe..09f51489 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -40,9 +40,7 @@ import static com.cricketcraft.chisel.utils.General.sGNames; public enum Features { AE_CERTUS_QUARTZ("appliedenergistics2") { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartz"), 0, 0); Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartzPillar"), 0, 1); Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartzChiseled"), 0, 2); @@ -51,9 +49,7 @@ public enum Features { }, AE_SKY_STONE("appliedenergistics2") { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 1, 0); Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 2, 1); Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 3, 2); @@ -62,9 +58,7 @@ public enum Features { }, AMBER("Thaumcraft") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable amber = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("amber", GameRegistry.findBlock("Thaumcraft", "blockCosmeticOpaque"), 0, 0); Carving.chisel.addVariation("amber", GameRegistry.findBlock("Thaumcraft", "blockCosmeticOpaque"), 1, 1); @@ -74,9 +68,7 @@ public enum Features { }, ANDESITE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable andesite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); andesite.carverHelper.setChiselBlockName("andesite"); andesite.carverHelper.addVariation("tile.andesite.0.desc", 0, "andesite/andesite"); @@ -88,9 +80,7 @@ public enum Features { }, ANTIBLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable antiBlock = (BlockCarvable) new BlockCarvableAntiBlock().setCreativeTab(ChiselTabs.tabOtherChiselBlocks); antiBlock.carverHelper.setChiselBlockName("Anti Block"); antiBlock.carverHelper.forbidChiseling = true; @@ -103,8 +93,7 @@ public enum Features { OreDictionary.registerOre("antiBlock", antiBlock); } - @Override - void addRecipes() { + @Override void addRecipes() { if (meta == 0) { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.antiBlock, 8, 15), "SSS", "SGS", "SSS", 'S', "stone", 'G', "dustGlowstone")); } @@ -112,16 +101,13 @@ public enum Features { 'd', dyeOres[meta], 'B', new ItemStack(ChiselBlocks.antiBlock, 1, OreDictionary.WILDCARD_VALUE))); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } }, ARCANE("Thaumcraft") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable arcane = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("arcane", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 6, 0); Carving.chisel.addVariation("arcane", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 7, 1); @@ -139,30 +125,24 @@ public enum Features { }, AUTO_CHISEL { - - @Override - void addBlocks() { + @Override void addBlocks() { Block autoChisel = new BlockAutoChisel().setBlockTextureName(Chisel.MOD_ID + ":autoChisel/autoChisel").setCreativeTab(ChiselTabs.tabChisel).setBlockName("autoChisel"); GameRegistry.registerBlock(autoChisel, "autoChisel"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.autoChisel, 1), new Object[] { "XXX", " Y ", "YYY", Character.valueOf('X'), Blocks.stone_slab, Character.valueOf('Y'), "ingotIron" })); } }, AUTO_CHISEL_UPGRADES(AUTO_CHISEL) { - - @Override - void addItems() { + @Override void addItems() { ItemUpgrade upgrade = (ItemUpgrade) new ItemUpgrade("upgrade").setCreativeTab(ChiselTabs.tabChisel); GameRegistry.registerItem(upgrade, "upgrade"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.upgrade, 1, 0), new Object[] { "IEI", "EUE", "RRR", 'I', "ingotIron", 'E', Items.emerald, 'R', Items.redstone, 'U', Items.sugar })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.upgrade, 1, 1), new Object[] { "IEI", "EUE", "RRR", 'I', "ingotIron", 'E', Items.emerald, 'R', Items.redstone, 'U', @@ -173,24 +153,19 @@ public enum Features { }, BALL_OF_MOSS { - - @Override - void addItems() { + @Override void addItems() { ItemBallOMoss ballomoss = (ItemBallOMoss) new ItemBallOMoss().setTextureName("Chisel:ballomoss").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntityBallOMoss.class, "BallOMoss", 2, Chisel.instance, 40, 1, true); GameRegistry.registerItem(ballomoss, "ballomoss"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselItems.ballomoss, 1), "XYX", "YXY", "XYX", 'X', Blocks.vine, 'Y', Items.stick); } }, BLOOD_RUNE("AWWayofTime") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable bloodRune = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("bloodRune", GameRegistry.findBlock("AWWayofTime", "AlchemicalWizardrybloodRune"), 0, 0); bloodRune.carverHelper.addVariation("tile.bloodRune.0.desc", 0, "bloodMagic/bloodRuneArranged"); @@ -205,9 +180,7 @@ public enum Features { }, BLOOD_BLOCK("AWWayofTime") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable bloodBrick = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("bloodBrick", GameRegistry.findBlock("AWWayofTime", "largeBloodStoneBrick"), 0, 0); Carving.chisel.addVariation("bloodBrick", GameRegistry.findBlock("AWWayofTime", "bloodStoneBrick"), 0, 1); @@ -217,9 +190,7 @@ public enum Features { }, BOOKSHELF { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable bookshelf = (BlockCarvable) new BlockCarvableBookshelf().setHardness(1.5F).setCreativeTab(ChiselTabs.tabWoodChiselBlocks).setStepSound(Block.soundTypeWood); Carving.chisel.addVariation("bookshelf", Blocks.bookshelf, 0, 0); bookshelf.carverHelper.addVariation("tile.bookshelf.1.desc", 1, "bookshelf/rainbow"); @@ -237,9 +208,7 @@ public enum Features { }, BRICK_CUSTOM { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable brickCustom = (BlockCarvable) new BlockCarvable(Material.rock).setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); Carving.chisel.addVariation("brickCustom", Blocks.brick_block, 0, 0); brickCustom.carverHelper.addVariation("tile.brickCustom.1.desc", 1, "brickCustom/large"); @@ -255,9 +224,7 @@ public enum Features { }, CARPET { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable carpet_block = (BlockCarvable) new BlockCarvable(Material.cloth).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeCloth); carpet_block.carverHelper.setChiselBlockName("Carpet Block"); @@ -282,21 +249,17 @@ public enum Features { OreDictionary.registerOre("blockCarpet", carpet_block); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.carpet_block, 8, meta), "YYY", "YXY", "YYY", 'X', new ItemStack(Items.string, 1), 'Y', new ItemStack(Blocks.wool, 1, meta)); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } }, CARPET_FLOOR { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockMarbleCarpet carpet = (BlockMarbleCarpet) new BlockMarbleCarpet(Material.cloth).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeCloth); carpet.carverHelper.setChiselBlockName("Carpet"); @@ -331,43 +294,40 @@ public enum Features { OreDictionary.registerOre("carpet", carpet); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.carpet, 3, meta), "XX", 'X', new ItemStack(ChiselBlocks.carpet_block, 1, meta)); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } }, CHISEL { - - @Override - void addItems() { + @Override void addItems() { ItemChisel chisel = (ItemChisel) new ItemChisel(ChiselType.IRON).setCreativeTab(ChiselTabs.tabChisel); ItemChisel diamondChisel = (ItemChisel) new ItemChisel(ChiselType.DIAMOND).setCreativeTab(ChiselTabs.tabChisel); + ItemChisel obsidianChisel = (ItemChisel) new ItemChisel(ChiselType.OBSIDIAN).setCreativeTab(ChiselTabs.tabChisel); GameRegistry.registerItem(chisel, "chisel"); GameRegistry.registerItem(diamondChisel, "diamondChisel"); + GameRegistry.registerItem(obsidianChisel, "obsidianChisel"); } - @Override - void addRecipes() { + @Override void addRecipes() { if (Configurations.chiselRecipe) { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.chisel), " YY", " YY", "X ", 'X', "stickWood", 'Y', "ingotIron")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.diamondChisel), " YY", " YY", "x ", 'x', "stickWood", 'Y', "gemDiamond")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.obsidianChisel), " YY", " YY", "x ", 'x', "stickWood", 'Y', Blocks.obsidian)); } else { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.chisel), " Y", "X ", 'X', "stickWood", 'Y', "ingotIron")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.diamondChisel), " Y", "X ", 'X', "stickWood", 'Y', "gemDiamond")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.obsidianChisel), " Y", "X ", 'X', "stickWood", 'Y', Blocks.obsidian)); } } }, CLOUD { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable cloud = (BlockCloud) new BlockCloud().setHardness(0.2F).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setLightOpacity(3).setStepSound(Block.soundTypeCloth); cloud.carverHelper.addVariation("tile.cloud.0.desc", 0, "cloud/cloud"); cloud.carverHelper.addVariation("tile.cloud.1.desc", 1, "cloud/large"); @@ -379,23 +339,19 @@ public enum Features { Carving.chisel.registerOre("cloud", "cloud"); } - @Override - void addItems() { + @Override void addItems() { ItemCloudInABottle itemCloudInABottle = (ItemCloudInABottle) new ItemCloudInABottle().setTextureName("Chisel:cloudinabottle-x").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntityCloudInABottle.class, "CloudInABottle", 1, Chisel.instance, 40, 1, true); GameRegistry.registerItem(itemCloudInABottle, "cloudinabottle"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselItems.cloudinabottle, 1), "X X", "XYX", " X ", 'X', Blocks.glass, 'Y', Items.quartz); } }, COBBLESTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable cobblestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("cobblestone", Blocks.cobblestone, 0, 0); @@ -420,9 +376,7 @@ public enum Features { }, COBBLESTONE_MOSSY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable mossy_cobblestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); @@ -448,9 +402,7 @@ public enum Features { }, CONCRETE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable concrete = (BlockConcrete) new BlockConcrete().setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(0.5F); concrete.carverHelper.addVariation("tile.concrete.0.desc", 0, "concrete/default"); concrete.carverHelper.addVariation("tile.concrete.1.desc", 1, "concrete/block"); @@ -468,8 +420,7 @@ public enum Features { Carving.chisel.registerOre("concrete", "concrete"); } - @Override - void addRecipes() { + @Override void addRecipes() { Block concreteRecipeBlock = Block.getBlockFromName(Configurations.config.get("tweaks", "concrete recipe block", "gravel", "Unlocalized name of the block that, when burned, will produce concrete (examples: lightgem, stone)").getString()); if (concreteRecipeBlock == null) @@ -479,20 +430,15 @@ public enum Features { } }, - COPPER - { - - @Override - void addBlocks() { + COPPER { + @Override void addBlocks() { Carving.chisel.addGroup(new CarvingGroup("copperblock")); Carving.chisel.registerOre("copperblock", "blockCopper"); } }, DIAMOND_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable diamond_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("diamond_block", Blocks.diamond_block, 0, 0); @@ -514,9 +460,7 @@ public enum Features { }, DIORITE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable diorite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); diorite.carverHelper.setChiselBlockName("diorite"); diorite.carverHelper.addVariation("tile.diorite.0.desc", 0, "diorite/diorite"); @@ -528,9 +472,7 @@ public enum Features { }, DIRT { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable dirt = (BlockCarvable) new BlockCarvable(Material.ground).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setStepSound(Block.soundTypeGravel) .setBlockName("dirt.default"); Carving.chisel.addVariation("dirt", Blocks.dirt, 0, 0); @@ -557,9 +499,7 @@ public enum Features { }, EMERALD_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable emerald_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("emerald_block", Blocks.emerald_block, 0, 0); @@ -580,9 +520,7 @@ public enum Features { }, FACTORY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable factoryblock = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundMetalFootstep); factoryblock.carverHelper.setChiselBlockName("factoryblock"); @@ -606,17 +544,14 @@ public enum Features { Carving.chisel.registerOre("factoryblock", "factoryblock"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.factoryblock, Configurations.factoryBlockAmount, 0), new Object[] { "*X*", "X X", "*X*", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.iron_ingot, 1) }); } }, FANTASY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable fantasyblock = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); fantasyblock.carverHelper.setChiselBlockName("Fantasy Block"); fantasyblock.carverHelper.addVariation("tile.fantasyblock.0.desc", 0, "fantasy/brick"); @@ -659,18 +594,15 @@ public enum Features { Carving.chisel.registerOre("fantasyblock2", "fantasy2"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.fantasyblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.gold_nugget, 1)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.fantasyblock2, 8, 0), "***", "*X*", "***", '*', new ItemStack(ChiselBlocks.fantasyblock, 1), 'X', "dyeWhite")); } }, FUTURA { - // TODO Overlay is WIP - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable futura = (BlockCarvable) new BlockCarvable(Material.rock/* * , "futura/screenOverlay-ctm" */).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); @@ -682,16 +614,13 @@ public enum Features { Carving.chisel.registerOre("futura", "futura"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.futura, 8, 0), "SBS", "BGB", "SBS", 'S', "stone", 'G', "dustRedstone", 'B', new ItemStack(Blocks.stonebrick, 1))); } }, GLASS { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvableGlass glass = (BlockCarvableGlass) new BlockCarvableGlass().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F).setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glass", Blocks.glass, 0, 0); glass.carverHelper.addVariation("tile.glass.1.desc", 1, "glass/terrain-glassbubble"); @@ -715,9 +644,7 @@ public enum Features { }, GLASS_PANE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePane glass_pane = (BlockCarvablePane) new BlockCarvablePane(Material.glass, false).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glass_pane", Blocks.glass_pane, 0, 0); @@ -735,9 +662,7 @@ public enum Features { }, GLASS_STAINED { - - @Override - void addBlocks() { + @Override void addBlocks() { for (int i = 0; i < 16; i++) { final String blockName = "stained_glass_" + sGNames[i].replaceAll(" ", "").toLowerCase(); String oreName = "stainedGlass" + sGNames[i].replaceAll(" ", ""); @@ -765,9 +690,7 @@ public enum Features { }, GLASS_STAINED_PANE { - - @Override - void addBlocks() { + @Override void addBlocks() { for (int i = 0; i < 16; i++) { final String blockName = "stained_glass_pane_" + sGNames[i].replaceAll(" ", "").toLowerCase(); String oreName = "stainedGlassPane" + sGNames[i].replaceAll(" ", ""); @@ -799,9 +722,7 @@ public enum Features { }, GLOWSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvableGlowstone glowstone = (BlockCarvableGlowstone) new BlockCarvableGlowstone().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F).setLightLevel(1.0F) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glowstone", Blocks.glowstone, 0, 0); @@ -826,9 +747,7 @@ public enum Features { }, GOLD_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable gold_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(3F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("gold_block", Blocks.gold_block, 0, 0); gold_block.carverHelper.addVariation("tile.gold.1.desc", 1, "gold/terrain-gold-largeingot"); @@ -851,9 +770,7 @@ public enum Features { }, GRANITE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable granite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); granite.carverHelper.setChiselBlockName("granite"); granite.carverHelper.addVariation("tile.granite.0.desc", 0, "granite/granite"); @@ -865,9 +782,7 @@ public enum Features { }, GRIMSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable grimstone = (BlockGrimstone) new BlockGrimstone(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); grimstone.carverHelper.addVariation("tile.grimstone.0.desc", 0, "grimstone/grimstone"); grimstone.carverHelper.addVariation("tile.grimstone.1.desc", 1, "grimstone/smooth"); @@ -888,16 +803,13 @@ public enum Features { Carving.chisel.registerOre("grimstone", "grimstone"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.grimstone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.coal, 1)); } }, HEX_PLATING { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable hexPlating = (BlockCarvable) new BlockCarvableGlow("hexPlating/hexAnim").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10.0F); for (int i = 0; i < 16; i++) { hexPlating.carverHelper.addVariation("tile.hexPlating." + ItemDye.field_150921_b[i] + ".desc", i, "hexPlating/hexBase"); @@ -906,16 +818,13 @@ public enum Features { Carving.chisel.registerOre("hexPlating", "hexPlating"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.hexPlating, 8, 0), "XXX", "XYX", "XXX", 'X', "stone", 'Y', "blockCoal")); } }, HOLYSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable holystone = (BlockHolystone) new BlockHolystone(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundHolystoneFootstep); holystone.carverHelper.addVariation("tile.holystone.0.desc", 0, "holystone/holystone"); @@ -937,16 +846,13 @@ public enum Features { Carving.chisel.registerOre("holystone", "holystone"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.holystone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.feather, 1)); } }, ICE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvableIce ice = (BlockCarvableIce) new BlockCarvableIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3).setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("ice", Blocks.ice, 0, 0); ice.carverHelper.addVariation("tile.ice.1.desc", 1, "ice/a1-ice-light"); @@ -968,16 +874,13 @@ public enum Features { Carving.chisel.registerOre("ice", "ice"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.ice, 4, 1), "XX", "XX", 'X', new ItemStack(ChiselBlocks.ice_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, ICE_PILLAR(ICE) { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvableIcePillar ice_pillar = (BlockCarvableIcePillar) new BlockCarvableIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) .setStepSound(Block.soundTypeGlass); ice_pillar.carverHelper.setChiselBlockName("Ice Pillar"); @@ -991,16 +894,13 @@ public enum Features { ice_pillar.carverHelper.registerAll(ice_pillar, "ice_pillar"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.ice_pillar, 6, 1), "XX", "XX", "XX", 'X', new ItemStack(ChiselBlocks.ice, 1, OreDictionary.WILDCARD_VALUE)); } }, ICE_STAIRS(ICE) { - - @Override - void addBlocks() { + @Override void addBlocks() { CarvableStairsMaker makerIceStairs = new CarvableStairsMaker(Blocks.ice); makerIceStairs.carverHelper.setChiselBlockName("Ice Stairs"); makerIceStairs.carverHelper.addVariation("tile.iceStairs.0.desc", 0, Blocks.ice); @@ -1031,9 +931,7 @@ public enum Features { }, IRON_BARS { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePane iron_bars = (BlockCarvablePane) new BlockCarvablePane(Material.iron, true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("iron_bars", Blocks.iron_bars, 0, 0); @@ -1052,9 +950,7 @@ public enum Features { }, IRON_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable iron_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(5F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("iron_block", Blocks.iron_block, 0, 0); @@ -1079,9 +975,7 @@ public enum Features { }, JACKOLANTERN { - - @Override - void addBlocks() { + @Override void addBlocks() { for (int metadata = 0; metadata < 16; metadata++) { jackolantern[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("litpumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setLightLevel(1.0f); @@ -1095,9 +989,7 @@ public enum Features { }, LABORATORY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable laboratoryblock = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundMetalFootstep); laboratoryblock.carverHelper.setChiselBlockName("laboratoryblock"); @@ -1121,16 +1013,13 @@ public enum Features { Carving.chisel.registerOre("laboratoryblock", "laboratoryblock"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.laboratoryblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.quartz, 1)); } }, LAPIS_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable lapis_block = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(3F).setResistance(5F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("lapis_block", Blocks.lapis_block, 0, 0); @@ -1148,9 +1037,7 @@ public enum Features { }, LAVASTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockLavastone lavastone = (BlockLavastone) new BlockLavastone(Material.rock, "lava_flow").setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); lavastone.carverHelper.addVariation("tile.lavastone.0.desc", 0, "lavastone/cobble"); lavastone.carverHelper.addVariation("tile.lavastone.1.desc", 1, "lavastone/black"); @@ -1165,16 +1052,13 @@ public enum Features { Carving.chisel.registerOre("lavastone", "lavastone"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.lavastone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.lava_bucket, 1)); } }, LEAVES { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockLeaf leaves = (BlockLeaf) new BlockLeaf(Material.leaves).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.2F).setStepSound(Block.soundTypeGrass); Carving.chisel.addGroup(new CarvingGroup("leaves") { @@ -1222,9 +1106,7 @@ public enum Features { }, LIMESTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable limestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); limestone.carverHelper.setChiselBlockName("Limestone"); @@ -1292,16 +1174,13 @@ public enum Features { Carving.chisel.registerOre("limestone_stairs", "limestone_stairs"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.limestone_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.limestone, 1, OreDictionary.WILDCARD_VALUE)); } }, MARBLE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable marble = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); marble.carverHelper.setChiselBlockName("Marble"); @@ -1369,17 +1248,14 @@ public enum Features { makerMarbleStairs.create("marble_stairs", ChiselBlocks.marbleStairs); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.marble, 1, OreDictionary.WILDCARD_VALUE)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble, 4), "XX", "XX", 'X', new ItemStack(ChiselBlocks.marble_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, MARBLE_PILLAR(MARBLE) { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable marble_pillar; if (Configurations.oldPillars) { @@ -1467,17 +1343,14 @@ public enum Features { registerSlabTop(marble_pillar_slab, marble_pillar_slab.top); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_pillar, 6), "XX", "XX", "XX", 'X', new ItemStack(ChiselBlocks.marble, 1, OreDictionary.WILDCARD_VALUE)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_pillar_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.marble_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, NETHER_BRICK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable nether_brick = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("nether_brick", Blocks.nether_brick, 0, 0); @@ -1504,9 +1377,7 @@ public enum Features { }, NETHER_RACK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable netherrack = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(0.4F).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("netherrack", Blocks.netherrack, 0, 0); @@ -1530,9 +1401,7 @@ public enum Features { }, OBSIDIAN { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable obsidian = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(50.0F).setResistance(2000.0F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("obsidian", Blocks.obsidian, 0, 0); @@ -1557,9 +1426,7 @@ public enum Features { }, PACKEDICE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePackedIce packedice = (BlockCarvablePackedIce) new BlockCarvablePackedIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("packedice", Blocks.packed_ice, 0, 0); @@ -1584,9 +1451,7 @@ public enum Features { }, PACKEDICE_PILLAR { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePackedIcePillar packedice_pillar = (BlockCarvablePackedIcePillar) new BlockCarvablePackedIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks) .setHardness(0.5F).setLightOpacity(3).setStepSound(Block.soundTypeGlass); packedice_pillar.carverHelper.setChiselBlockName("Packed Ice Pillar"); @@ -1602,9 +1467,7 @@ public enum Features { }, PACKEDICE_STAIRS { - - @Override - void addBlocks() { + @Override void addBlocks() { CarvableStairsMaker makerPackedIceStairs = new CarvableStairsMaker(Blocks.packed_ice); makerPackedIceStairs.carverHelper.setChiselBlockName("Packed Ice Stairs"); makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.0.desc", 0, Blocks.packed_ice); @@ -1635,9 +1498,7 @@ public enum Features { }, PAPER_WALL { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePane paperwall = (BlockCarvablePane) new BlockCarvablePane(Material.ground, true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setResistance(0.5F); paperwall.carverHelper.setChiselBlockName("Paper Wall"); paperwall.carverHelper.addVariation("tile.paperwall.0.desc", 0, "paper/box"); @@ -1669,17 +1530,14 @@ public enum Features { Carving.chisel.registerOre("paperwall_block", "paperwall_block"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.paperwall, 8), "ppp", "psp", "ppp", ('p'), Items.paper, ('s'), "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.paperwall_block, 4), "pp", "pp", ('p'), ChiselBlocks.paperwall)); } }, PRESENT { - - @Override - void addBlocks() { + @Override void addBlocks() { for (int x = 0; x < 16; x++) { present[x] = (BlockPresent) new BlockPresent(x).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2.0F).setResistance(10.0F).setBlockName("present"); GameRegistry.registerBlock(present[x], "chest" + x); @@ -1688,21 +1546,17 @@ public enum Features { Carving.chisel.registerOre("present", "chest"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ChiselBlocks.present[meta]), new ItemStack(Blocks.chest, 1), dyeOres[meta])); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } }, PUMPKIN { - - @Override - void addBlocks() { + @Override void addBlocks() { for (int metadata = 0; metadata < 16; metadata++) { pumpkin[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(false).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("pumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks); @@ -1714,21 +1568,17 @@ public enum Features { Carving.chisel.registerOre("pumpkin", "pumpkin"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addShapelessRecipe(new ItemStack(ChiselBlocks.jackolantern[meta]), new ItemStack(ChiselBlocks.pumpkin[meta], 1), new ItemStack(Item.getItemFromBlock(Blocks.torch), 1)); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } }, QUARTZ { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("quartz", Blocks.quartz_block, 0, 0); Carving.chisel.addVariation("quartz", Blocks.quartz_block, 1, 0); Carving.chisel.addVariation("quartz", Blocks.quartz_block, 2, 0); @@ -1742,9 +1592,7 @@ public enum Features { RAILCRAFT("Railcraft"), RC_ABYSSAL_BLOCK(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCAbyssalBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.abyssal"), 0, 0); Carving.chisel.addVariation("RCAbyssalBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.abyssal"), 1, 1); Carving.chisel.addVariation("RCAbyssalBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.abyssal"), 2, 2); @@ -1752,12 +1600,12 @@ public enum Features { Carving.chisel.addVariation("RCAbyssalBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.abyssal"), 4, 4); Carving.chisel.addVariation("RCAbyssalBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.abyssal"), 5, 5); Carving.chisel.registerOre("RCAbyssalBlock", "RCAbyssalBlock"); - }; + } + + ; }, RC_BLEACHED_BONE(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCBleachedBone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bleachedbone"), 0, 0); Carving.chisel.addVariation("RCBleachedBone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bleachedbone"), 1, 1); Carving.chisel.addVariation("RCBleachedBone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bleachedbone"), 2, 2); @@ -1769,9 +1617,7 @@ public enum Features { }, RC_BLOOD_STAINED(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCBloodStained", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bloodstained"), 0, 0); Carving.chisel.addVariation("RCBloodStained", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bloodstained"), 1, 1); Carving.chisel.addVariation("RCBloodStained", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.bloodstained"), 2, 2); @@ -1783,9 +1629,7 @@ public enum Features { }, RC_FROST_BOUND_BLOCK(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCFrostBoundBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.frostbound"), 0, 0); Carving.chisel.addVariation("RCFrostBoundBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.frostbound"), 1, 1); Carving.chisel.addVariation("RCFrostBoundBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.frostbound"), 2, 2); @@ -1797,9 +1641,7 @@ public enum Features { }, RC_INFERNAL_STONE(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCInfernalStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.infernal"), 0, 0); Carving.chisel.addVariation("RCInfernalStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.infernal"), 1, 1); Carving.chisel.addVariation("RCInfernalStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.infernal"), 2, 2); @@ -1811,9 +1653,7 @@ public enum Features { }, RC_QUARRIED_BLOCK(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCQuarriedBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.quarried"), 0, 0); Carving.chisel.addVariation("RCQuarriedBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.quarried"), 1, 1); Carving.chisel.addVariation("RCQuarriedBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.quarried"), 2, 2); @@ -1821,13 +1661,13 @@ public enum Features { Carving.chisel.addVariation("RCQuarriedBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.quarried"), 4, 4); Carving.chisel.addVariation("RCQuarriedBlock", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.quarried"), 5, 5); Carving.chisel.registerOre("RCQuarriedBlock", "RCQuarriedBlock"); - }; + } + + ; }, RC_SANDY_STONE(RAILCRAFT.getRequiredMod(), RAILCRAFT) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("RCSandyStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.sandy"), 0, 0); Carving.chisel.addVariation("RCSandyStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.sandy"), 1, 1); Carving.chisel.addVariation("RCSandyStone", GameRegistry.findBlock("Railcraft", "tile.railcraft.brick.sandy"), 2, 2); @@ -1839,9 +1679,7 @@ public enum Features { }, REDSTONE_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable redstone_block = (BlockCarvablePowered) (new BlockCarvablePowered(Material.iron)).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("redstone_block", Blocks.redstone_block, 0, 0); @@ -1866,9 +1704,7 @@ public enum Features { }, ROAD_LINE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockRoadLine road_line = (BlockRoadLine) new BlockRoadLine().setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.01F) .setBlockName("roadLine"); road_line.carverHelper.addVariation("tile.roadLine.0.desc", 0, "line-marking/white-center"); @@ -1879,16 +1715,13 @@ public enum Features { Carving.chisel.registerOre("road_line", "roadLine"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.road_line, 8, 0), "wrw", "wrw", "wrw", ('w'), "dyeWhite", ('r'), Items.redstone)); } }, SANDSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable sandstone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone).setHardness(0.8F); Carving.chisel.addVariation("sandstone", Blocks.sandstone, 0, 0); Carving.chisel.addVariation("sandstone", Blocks.sandstone, 1, 1); @@ -1910,8 +1743,7 @@ public enum Features { Carving.chisel.registerOre("sandstone", "sandstone"); } - @Override - void addRecipes() { + @Override void addRecipes() { if (meta == 0) { // The following recipe is due to bugs with Chisel 1.5.1 to // 1.5.6a @@ -1924,9 +1756,7 @@ public enum Features { }, SANDSTONE_SCRIBBLES { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable sandstone_scribbles = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone).setHardness(0.8F); sandstone_scribbles.carverHelper.addVariation("tile.sandstoneScribbles.desc", 0, "sandstone-scribbles/scribbles-0"); sandstone_scribbles.carverHelper.addVariation("tile.sandstoneScribbles.desc", 1, "sandstone-scribbles/scribbles-1"); @@ -1948,32 +1778,26 @@ public enum Features { Carving.chisel.registerOre("sandstone_scribbles", "sandstone_scribbles"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.sandstone_scribbles, 1), "X", 'X', new ItemStack(ChiselBlocks.sandstone, 1, 8)); } }, SMASHING_ROCK { - - @Override - void addItems() { + @Override void addItems() { ItemSmashingRock smashingrock = (ItemSmashingRock) new ItemSmashingRock().setTextureName("Chisel:smashingrock").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntitySmashingRock.class, "SmashingRock", 3, Chisel.instance, 40, 1, true); GameRegistry.registerItem(smashingrock, "smashingrock"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addShapelessRecipe(new ItemStack(ChiselItems.smashingrock, 16), new Object[] { new ItemStack(Items.stone_pickaxe), new ItemStack(Items.glass_bottle, 1), new ItemStack(Items.stone_shovel) }); } }, SNAKE_SANDSTONE(SANDSTONE) { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockSnakestone sand_snakestone = (BlockSnakestone) new BlockSnakestone("Chisel:snakestone/sandsnake/").setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setBlockName("snakestoneSand"); GameRegistry.registerBlock(sand_snakestone, ItemCarvable.class, "sand_snakestone"); // TODO- eat me! @@ -1988,9 +1812,7 @@ public enum Features { }, SNAKESTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockSnakestone stone_snakestone = (BlockSnakestone) new BlockSnakestone("Chisel:snakestone/snake/").setBlockName("snakestoneStone").setCreativeTab(ChiselTabs.tabStoneChiselBlocks); GameRegistry.registerBlock(stone_snakestone, ItemCarvable.class, "stone_snakestone"); // LanguageRegistry.addName(new ItemStack(snakestone, 1, 1), @@ -2004,9 +1826,7 @@ public enum Features { }, SNAKESTONE_OBSIDIAN { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockSnakestoneObsidian obsidian_snakestone = (BlockSnakestoneObsidian) new BlockSnakestoneObsidian("Chisel:snakestone/obsidian/").setBlockName("obsidianSnakestone").setHardness(50.0F) .setResistance(2000.0F); GameRegistry.registerBlock(obsidian_snakestone, ItemCarvable.class, "obsidian_snakestone"); @@ -2018,9 +1838,7 @@ public enum Features { }, STONE_BRICK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable stonebricksmooth = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(1.5F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); if (Configurations.allowSmoothStone) { @@ -2052,9 +1870,7 @@ public enum Features { }, TALLOW("Thaumcraft") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable tallow = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeSnow); Carving.chisel.addVariation("tallow", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 5, 0); tallow.carverHelper.addVariation("tile.tallow.0.desc", 0, "tallow/smooth"); @@ -2065,9 +1881,7 @@ public enum Features { }, TECHNICAL { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable technical = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); technical.carverHelper.addVariation("tile.technical.0.desc", 0, "technical/scaffold"); technical.carverHelper.addVariation("tile.technical.1.desc", 1, "technical/cautiontape"); @@ -2096,8 +1910,7 @@ public enum Features { Carving.chisel.registerOre("technical", "technical"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yxy", "xyx", 'x', "stone", 'y', Items.iron_ingot })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical2, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yzy", "xyx", 'x', "stone", 'y', @@ -2106,9 +1919,7 @@ public enum Features { }, TEMPLE_BLOCK { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable templeblock = (BlockCarvable) new BlockEldritch().setHardness(2.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setResistance(10F) .setStepSound(Chisel.soundTempleFootstep); templeblock.carverHelper.setChiselBlockName("Temple Block"); @@ -2132,16 +1943,13 @@ public enum Features { Carving.chisel.registerOre("templeblock", "templeblock"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.templeblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', dyeOres[4])); } }, TEMPLE_BLOCK_MOSSY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable mossy_templeblock = (BlockCarvable) new BlockEldritch().setHardness(2.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setResistance(10F) .setStepSound(Chisel.soundTempleFootstep); mossy_templeblock.carverHelper.setChiselBlockName("Mossy Temple Block"); @@ -2163,7 +1971,9 @@ public enum Features { mossy_templeblock.carverHelper.addVariation("tile.mossy_templeblock.15.desc", 15, "templemossy/smalltiles-light"); mossy_templeblock.carverHelper.registerAll(mossy_templeblock, "mossy_templeblock"); Carving.chisel.registerOre("mossy_templeblock", "mossy_templeblock"); - }; + } + + ; }, /** @@ -2172,9 +1982,7 @@ public enum Features { TWILGHT_FOREST("TwilightForest"), TF_MAZESTONE(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 0, 0); Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 1, 1); Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 2, 2); @@ -2188,9 +1996,7 @@ public enum Features { }, TF_TOWERSTONE(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 0, 0); Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 1, 1); Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 2, 2); @@ -2200,9 +2006,7 @@ public enum Features { }, TF_UNDER_BRICK(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 0, 0); Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 1, 1); Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 2, 2); @@ -2211,9 +2015,7 @@ public enum Features { }, THAUMIUM("Thaumcraft") { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable thaumium = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("thaumium", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 4, 0); thaumium.carverHelper.addVariation("tile.thaumium.0.desc", 0, "thaumium/ornate"); @@ -2226,9 +2028,7 @@ public enum Features { }, TORCH { - - @Override - void addBlocks() { + @Override void addBlocks() { Carving.chisel.addVariation("torch", Blocks.torch, 0, 0); for (int type = 0; type < 10; type++) { if (type == 8 || type == 9) @@ -2245,9 +2045,7 @@ public enum Features { }, TYRIAN { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable tyrian = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); tyrian.carverHelper.setChiselBlockName("Futuristic Armor Plating Block"); @@ -2272,16 +2070,13 @@ public enum Features { Carving.chisel.registerOre("tyrian", "tyrian"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.tyrian, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.iron_ingot, 1)); } }, VOIDSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable voidstone = (BlockCarvable) new BlockCarvable().setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone) .setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(5.0F).setResistance(10.0F); voidstone.carverHelper.addVariation("tile.voidstone.0.desc", 0, "voidstone/raw"); @@ -2311,8 +2106,7 @@ public enum Features { Carving.chisel.registerOre("voidstone2", "voidstone2"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstone, 8, 0), new Object[] { "oxo", "xyx", "oxo", 'x', new ItemStack(Blocks.stone, 1), 'y', new ItemStack(Items.ender_pearl, 1), 'o', new ItemStack(Blocks.obsidian, 1) }); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstone2, 8, 0), new Object[] { "oxo", "xyx", "oxo", 'x', new ItemStack(Blocks.stone, 1), 'y', new ItemStack(Items.ender_eye, 1), 'o', @@ -2321,9 +2115,7 @@ public enum Features { }, VOIDSTONE_PILLARS(VOIDSTONE) { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvablePillar voidstonePillar = (BlockCarvablePillar) new BlockCarvablePillar(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone); voidstonePillar.carverHelper.addVariation("tile.voidstonePillar.0.desc", 0, "voidstone/pillar"); voidstonePillar.carverHelper.registerAll(voidstonePillar, "voidstonePillar"); @@ -2335,17 +2127,14 @@ public enum Features { Carving.chisel.registerOre("voidstonePillar2", "voidstonePillar2"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstonePillar, 4, 0), "xx", "xx", 'x', new ItemStack(ChiselBlocks.voidstone, 1)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstonePillar2, 4, 0), "xx", "xx", 'x', new ItemStack(ChiselBlocks.voidstone2, 1)); } }, WARNING_SIGN { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvableLayered warningSign = (BlockCarvableLayered) new BlockCarvableLayered(Material.iron, "warning/base").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F) .setResistance(10.0F); warningSign.carverHelper.addVariation("tile.warningSign.0.desc", 0, "warning/rad"); @@ -2367,16 +2156,13 @@ public enum Features { Carving.chisel.registerOre("warningSign", "warningSign"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.warningSign, 4, 0), new Object[] { "xxx", "xyx", "xxx", 'x', "stone", 'y', Items.sign })); } }, WATERSTONE { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockWaterstone waterstone = (BlockWaterstone) new BlockWaterstone(Material.rock, "water_flow").setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F); waterstone.carverHelper.addVariation("tile.waterstone.0.desc", 0, "waterstone/cobble"); waterstone.carverHelper.addVariation("tile.waterstone.1.desc", 1, "waterstone/black"); @@ -2390,16 +2176,13 @@ public enum Features { Carving.chisel.registerOre("waterstone", "blockWaterstone"); } - @Override - void addRecipes() { + @Override void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.waterstone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.water_bucket, 1)); } }, WOOD { - - @Override - void addBlocks() { + @Override void addBlocks() { String[] plank_names = { "oak", "spruce", "birch", "jungle", "acacia", "dark-oak" }; String[] plank_ucnames = { "Oak", "Spruce", "Birch", "Jungle", "Acacia", "Dark Oak" }; for (int i = 0; i < plank_names.length; i++) { @@ -2434,9 +2217,7 @@ public enum Features { }, WOOLEN_CLAY { - - @Override - void addBlocks() { + @Override void addBlocks() { BlockCarvable woolen_clay = (BlockCarvable) new BlockCarvable(Material.clay).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2F).setResistance(10F); woolen_clay.carverHelper.setChiselBlockName("Woolen Clay"); @@ -2447,21 +2228,17 @@ public enum Features { Carving.chisel.registerOre("woolen_clay", "woolen_clay"); } - @Override - void addRecipes() { + @Override void addRecipes() { OreDictionary.registerOre("stainedClay" + sGNames[meta].replaceAll(" ", ""), new ItemStack(Blocks.stained_hardened_clay, 1, meta)); OreDictionary.registerOre("blockWool" + sGNames[meta].replaceAll(" ", ""), new ItemStack(Blocks.wool, 1, meta)); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ChiselBlocks.woolen_clay, 2, meta), new Object[] { "blockWool" + sGNames[meta].replaceAll(" ", ""), "stainedClay" + sGNames[meta].replaceAll(" ", "") })); } - @Override - boolean needsMetaRecipes() { + @Override boolean needsMetaRecipes() { return true; } - }, - - ; + },; private static final String[] dyeOres = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite" }; diff --git a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java index cf9d103d..85ffdbfe 100644 --- a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java +++ b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java @@ -7,7 +7,10 @@ import com.cricketcraft.chisel.block.BlockSnakestoneObsidian; import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.config.Configurations; -import com.cricketcraft.chisel.entity.fx.*; +import com.cricketcraft.chisel.entity.fx.EntityBallOMossFX; +import com.cricketcraft.chisel.entity.fx.EntityGrimstoneFX; +import com.cricketcraft.chisel.entity.fx.EntityHolystoneFX; +import com.cricketcraft.chisel.entity.fx.EntitySnakestoneObsidianFX; import com.cricketcraft.chisel.utils.GeneralClient; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; @@ -167,11 +170,6 @@ public class GeneralChiselClient { } } - public static void spawnCricketFX(World world, double x, double y, double z) { - EntityCricketFX cricket = new EntityCricketFX(world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(cricket); - } - public static void spawnBallOMossFX(World world, double x, double y, double z) { if (Configurations.particlesTickrate == 0 || tick++ % Configurations.particlesTickrate == 0) { EntityBallOMossFX res = new EntityBallOMossFX(world, x, y, z); @@ -260,7 +258,8 @@ public class GeneralChiselClient { public static void spawnAutoChiselFX(TileEntityAutoChisel te, ItemStack base) { if (base != null) { for (int i = 0; i < 10; i++) { - EntityDiggingFX particle = new EntityDiggingFX(te.getWorldObj(), te.xCoord + 0.5, te.yCoord + 0.95, te.zCoord + 0.5, 0, 0, 0, Block.getBlockFromItem(base.getItem()), base.getItemDamage()); + EntityDiggingFX particle = new EntityDiggingFX(te.getWorldObj(), te.xCoord + 0.5, te.yCoord + 0.95, te.zCoord + 0.5, 0, 0, 0, Block.getBlockFromItem(base.getItem()), + base.getItemDamage()); particle.setVelocity((te.getWorldObj().rand.nextDouble() / 4) - 0.125, te.getWorldObj().rand.nextDouble() / 8, (te.getWorldObj().rand.nextDouble() / 4) - 0.125); Minecraft.getMinecraft().effectRenderer.addEffect(particle); } diff --git a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java index da7cf4c3..a5749cb2 100644 --- a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java +++ b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java @@ -1,38 +1,84 @@ package com.cricketcraft.chisel.client.player; -import com.cricketcraft.chisel.client.GeneralChiselClient; -import cpw.mods.fml.common.FMLCommonHandler; +import com.cricketcraft.chisel.init.ChiselItems; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import org.lwjgl.opengl.GL11; +import java.util.ArrayList; +import java.util.List; + @SideOnly(Side.CLIENT) public class PlayerSpecials { + private List names = new ArrayList(); + private boolean resetRender; + public PlayerSpecials() { - FMLCommonHandler.instance().bus().register(this); + names.add("Cricket"); + names.add("Drullkus"); } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void renderCricket(RenderPlayerEvent event) { - if (!"TheCricket26".equals(event.entityPlayer.getDisplayName())) { - return; + public void renderItem(RenderPlayerEvent.Specials.Post event) { + EntityPlayer player = event.entityPlayer; + + for (int x = 0; x < names.size(); x++) { + if (player.getCommandSenderName().equals(names.get(x))) { + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + if (player.isSneaking()) { + GL11.glRotatef(28.64789F, 1.0F, 0.0F, 0.0F); + } + boolean armor = player.getCurrentArmor(1) != null; + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.25F, -0.85F, armor ? 0.2F : 0.28F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glColor3f(1.0F, 1.0F, 1.0F); + int light = 15728880; + int lightmapX = light % 65536; + int lightmapY = light / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY); + + IIcon icon = ChiselItems.obsidianChisel.getIcon(new ItemStack(ChiselItems.obsidianChisel, 1, 0), 1); + ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 1.0F / 16.0F); + GL11.glPopMatrix(); + } } - if (event.entityPlayer.isInvisible()) { - return; + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void renderDev(RenderLivingEvent.Pre event) { + for (int x = 0; x < names.size(); x++) { + if (EnumChatFormatting.getTextWithoutFormattingCodes(event.entity.getCommandSenderName()).equals(names.get(x))) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); + GL11.glEnable(3042); + GL11.glBlendFunc(770, 771); + resetRender = true; + } } + } - ModelRenderer body = null; - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPushMatrix(); - - GeneralChiselClient.spawnCricketFX(event.entityPlayer.getEntityWorld(), event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ); - - GL11.glPopMatrix(); + @SubscribeEvent + public void entityColorRender(RenderLivingEvent.Post event) { + if (this.resetRender) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(3042); + resetRender = false; + } } } diff --git a/src/main/java/com/cricketcraft/chisel/config/Configurations.java b/src/main/java/com/cricketcraft/chisel/config/Configurations.java index 266f9917..75001f50 100644 --- a/src/main/java/com/cricketcraft/chisel/config/Configurations.java +++ b/src/main/java/com/cricketcraft/chisel/config/Configurations.java @@ -1,12 +1,10 @@ package com.cricketcraft.chisel.config; -import java.util.Locale; - +import com.cricketcraft.chisel.Features; import net.minecraftforge.common.config.Configuration; - import org.apache.commons.lang3.StringUtils; -import com.cricketcraft.chisel.Features; +import java.util.Locale; public class Configurations { @@ -39,10 +37,12 @@ public class Configurations { public static boolean allowChiselDamage; public static int ironChiselMaxDamage; public static int diamondChiselMaxDamage; + public static int obsidianChiselMaxDamage; public static boolean ironChiselCanLeftClick; public static boolean ironChiselHasModes; public static int ironChiselAttackDamage; public static int diamondChiselAttackDamage; + public static int obsidianChiselAttackDamage; public static boolean useRoadLineTool; public static String getRoadLineTool; @@ -63,7 +63,8 @@ public class Configurations { chiselRecipe = config.get(category, "chiselAlternateRecipe", false, "Use alternative crafting recipe for the chisel").getBoolean(false); enableFMP = config.get(category, "enableFMP", true, "Do you want to enable FMP").getBoolean(true); chiselStoneToCobbleBricks = config.get(category, "chiselStoneToCobbleBricks", true, "Chisel stone to cobblestone and bricks by left clicking.").getBoolean(false); - chiselBackToVanillaLeaves = config.get(category, "chiselBackToVanillaLeaves", false, "If this is true, you can chisel from the chisel leaves back to vanilla ones. If it is false, you cannot.").getBoolean(false); + chiselBackToVanillaLeaves = config.get(category, "chiselBackToVanillaLeaves", false, "If this is true, you can chisel from the chisel leaves back to vanilla ones. If it is false, you cannot.") + .getBoolean(false); /* worldgen */ category = "worldgen"; @@ -87,10 +88,15 @@ public class Configurations { allowChiselDamage = config.get(category, "allowChiselDamage", true, "Should the chisel be damageable and take damage when it chisels something.").getBoolean(); ironChiselMaxDamage = config.get(category, "ironChiselMaxDamage", 500, "The max damage of the standard iron chisel. Default: 500.").getInt(); diamondChiselMaxDamage = config.get(category, "diamondChiselMaxDamage", 5000, "The max damage of the diamond chisel. Default: 5000").getInt(); + obsidianChiselMaxDamage = config.get(category, "obsidianChiselMaxDamage", 50000, "The max damage of the obsidian chisel. Default: 50000").getInt(); ironChiselCanLeftClick = config.get(category, "ironChiselCanLeftClick", true, "If this is true, the iron chisel can left click chisel blocks. If false, it cannot.").getBoolean(); ironChiselHasModes = config.get(category, "ironChiselHasModes", false, "If this is true, the iron chisel can change its chisel mode just as the diamond chisel can.").getBoolean(); - ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.").getInt(); - diamondChiselAttackDamage = config.get(category, "diamondChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt(); + ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.") + .getInt(); + diamondChiselAttackDamage = config + .get(category, "diamondChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt(); + obsidianChiselAttackDamage = config + .get(category, "obsidianChiselAttackDamage", 4, "The extra attack damage points (in half hearts) that the obsidian chisel inflicts when it is used to attack an entity.").getInt(); /* block */ category = "block"; @@ -110,7 +116,9 @@ public class Configurations { return config.get("features", featureName(feature), true).getBoolean(true) && refreshConfig(); } - /** Makes the old camelCase names from the new CONSTANT_CASE names */ + /** + * Makes the old camelCase names from the new CONSTANT_CASE names + */ public static String featureName(Features feature) { String[] words = feature.name().toLowerCase(Locale.ENGLISH).split("_"); if (words.length == 1) { diff --git a/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java b/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java deleted file mode 100644 index f8e9a177..00000000 --- a/src/main/java/com/cricketcraft/chisel/entity/fx/EntityCricketFX.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.cricketcraft.chisel.entity.fx; - -import com.cricketcraft.chisel.Chisel; -import com.cricketcraft.chisel.utils.General; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; - -public class EntityCricketFX extends EntityFX { - - private double tx, ty, tz, speed; - - public EntityCricketFX(World world, double x, double y, double z) { - super(world, x + 1, y + 1, z + 1); - particleScale = 0.5F + 0.5F * General.rand.nextFloat(); - speed = 0.04 + 0.04 * General.rand.nextDouble(); - - particleMaxAge = (int) (Math.random() * 10.0D) + 40; - - tx = x + General.rand.nextDouble(); - ty = y + General.rand.nextDouble(); - tz = z + General.rand.nextDouble(); - - switch (General.rand.nextInt(6)) { - case 0: - tx = x; - break; - case 1: - tx = x + 1; - break; - case 2: - ty = y; - break; - case 3: - ty = y + 1; - break; - case 4: - tz = z; - break; - case 5: - tz = z + 1; - break; - } - - double dx = (tx - posX) * 3; - double dy = (ty - posY) * 3; - double dz = (tz - posZ) * 3; - - setPosition(posX + dx, posY + dy + 8, posZ + dz); - prevPosX = posX; - prevPosY = posY; - prevPosZ = posZ; - - noClip = true; - } - - @Override - public int getFXLayer() { - return 1; - } - - @Override - public void renderParticle(Tessellator tessellator, float partialTick, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) { - super.renderParticle(tessellator, partialTick, rotX, rotXZ, rotZ, rotYZ, rotXY); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(Chisel.MOD_ID + ":/assets/chisel/blocks/snakestone/obsidian/particles/" + General.rand.nextInt(8) + ".png")); - if (particleAge++ >= particleMaxAge) { - setDead(); - return; - } - - double dx = tx - posX; - double dy = ty - posY; - double dz = tz - posZ; - - double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); - - if (distance == 0) { - setDead(); - return; - } - - if (distance < 0.4) { - particleAlpha = (float) (distance / 0.4); - } else if (particleAge < 20) { - particleAlpha = 1.0F * particleAge / 20; - } else { - particleAlpha = 1.0F; - } - - if (distance < speed) { - speed = distance; - } - - prevPosX = posX; - prevPosY = posY; - prevPosZ = posZ; - - double px = posX + dx / distance * speed; - double py = posY + dy / distance * speed; - double pz = posZ + dz / distance * speed; - - setPosition(px, py, pz); - } -} diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselItems.java b/src/main/java/com/cricketcraft/chisel/init/ChiselItems.java index df71049d..8ca3cf86 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselItems.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselItems.java @@ -6,7 +6,6 @@ import com.cricketcraft.chisel.item.ItemCloudInABottle; import com.cricketcraft.chisel.item.ItemSmashingRock; import com.cricketcraft.chisel.item.ItemUpgrade; import com.cricketcraft.chisel.item.chisel.ItemChisel; - import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder; @ObjectHolder(Chisel.MOD_ID) @@ -14,6 +13,7 @@ public final class ChiselItems { public static final ItemChisel chisel = null; public static final ItemChisel diamondChisel = null; + public static final ItemChisel obsidianChisel = null; public static final ItemCloudInABottle cloudinabottle = null; public static final ItemBallOMoss ballomoss = null; public static final ItemSmashingRock smashingrock = null; diff --git a/src/main/java/com/cricketcraft/chisel/item/chisel/ItemChisel.java b/src/main/java/com/cricketcraft/chisel/item/chisel/ItemChisel.java index 4d9e68aa..fb0ffa38 100644 --- a/src/main/java/com/cricketcraft/chisel/item/chisel/ItemChisel.java +++ b/src/main/java/com/cricketcraft/chisel/item/chisel/ItemChisel.java @@ -1,7 +1,13 @@ package com.cricketcraft.chisel.item.chisel; -import java.util.List; - +import com.cricketcraft.chisel.Chisel; +import com.cricketcraft.chisel.api.IChiselItem; +import com.cricketcraft.chisel.api.carving.ICarvingRegistry; +import com.cricketcraft.chisel.api.carving.ICarvingVariation; +import com.cricketcraft.chisel.carving.Carving; +import com.cricketcraft.chisel.config.Configurations; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; import net.minecraft.entity.EntityLivingBase; @@ -13,20 +19,14 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; -import com.cricketcraft.chisel.Chisel; -import com.cricketcraft.chisel.api.IChiselItem; -import com.cricketcraft.chisel.api.carving.ICarvingRegistry; -import com.cricketcraft.chisel.api.carving.ICarvingVariation; -import com.cricketcraft.chisel.carving.Carving; -import com.cricketcraft.chisel.config.Configurations; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; +import java.util.List; public class ItemChisel extends Item implements IChiselItem { public enum ChiselType { IRON(Configurations.ironChiselMaxDamage, Configurations.ironChiselAttackDamage), - DIAMOND(Configurations.diamondChiselMaxDamage, Configurations.diamondChiselAttackDamage); + DIAMOND(Configurations.diamondChiselMaxDamage, Configurations.diamondChiselAttackDamage), + OBSIDIAN(Configurations.obsidianChiselMaxDamage, Configurations.obsidianChiselAttackDamage); final int maxDamage; final int attackDamage; @@ -71,11 +71,11 @@ public class ItemChisel extends Item implements IChiselItem { String lc2 = I18n.format(base + "lc2"); String modes = I18n.format(base + "modes"); list.add(gui); - if (type == ChiselType.DIAMOND || Configurations.ironChiselCanLeftClick) { + if (type == ChiselType.DIAMOND || type == ChiselType.OBSIDIAN || Configurations.ironChiselCanLeftClick) { list.add(lc1); list.add(lc2); } - if (type == ChiselType.DIAMOND || Configurations.ironChiselHasModes) { + if (type == ChiselType.DIAMOND || type == ChiselType.OBSIDIAN || Configurations.ironChiselHasModes) { list.add(""); list.add(modes); } @@ -99,7 +99,7 @@ public class ItemChisel extends Item implements IChiselItem { stack.damageItem(1, attacker); return super.hitEntity(stack, attacker, target); } - + @Override public boolean canOpenGui(World world, EntityPlayer player, ItemStack chisel) { return true; @@ -117,11 +117,11 @@ public class ItemChisel extends Item implements IChiselItem { @Override public boolean canChiselBlock(World world, EntityPlayer player, int x, int y, int z, Block block, int metadata) { - return type == ChiselType.DIAMOND || Configurations.ironChiselCanLeftClick; + return type == ChiselType.DIAMOND || type == ChiselType.OBSIDIAN || Configurations.ironChiselCanLeftClick; } @Override public boolean hasModes(ItemStack chisel) { - return type == ChiselType.DIAMOND || Configurations.ironChiselHasModes; + return type == ChiselType.DIAMOND || type == ChiselType.OBSIDIAN || Configurations.ironChiselHasModes; } } \ No newline at end of file diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index d634fd6d..e3ea6086 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -2,6 +2,7 @@ package com.cricketcraft.chisel.proxy; import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; import com.cricketcraft.chisel.block.tileentity.TileEntityPresent; +import com.cricketcraft.chisel.client.player.PlayerSpecials; import com.cricketcraft.chisel.client.render.*; import com.cricketcraft.chisel.client.render.item.ItemChiselRenderer; import com.cricketcraft.chisel.client.render.item.ItemPresentRenderer; @@ -20,6 +21,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.common.MinecraftForge; public class ClientProxy extends CommonProxy { @@ -63,6 +65,8 @@ public class ClientProxy extends CommonProxy { MinecraftForgeClient.registerItemRenderer(ChiselItems.chisel, renderer); MinecraftForgeClient.registerItemRenderer(ChiselItems.diamondChisel, renderer); + + MinecraftForge.EVENT_BUS.register(new PlayerSpecials()); } @Override diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index a5c6a5d2..44ce4b45 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -9,6 +9,7 @@ item.chisel.chisel.desc.lc2=Can target a block by leaving it in the inventory item.chisel.chisel.desc.modes=Has multiple modes for chiseling. item.chisel.chisel_diamond.name=Diamond Chisel +item.chisel.chisel_obsidian.name=Obsidian Chisel item.ballMoss.name=Ball O' Moss item.ballMoss.desc=Right-Click to throw. This will turn Cobblestone to Moss Stone on impact. From 72a74f1ff68809eaa5d4b6883741382858ecd707 Mon Sep 17 00:00:00 2001 From: Cricket Date: Thu, 19 Feb 2015 17:14:38 -0500 Subject: [PATCH 03/85] Forgot the texture... --- .../chisel/textures/items/chisel_obsidian.png | Bin 0 -> 300 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/items/chisel_obsidian.png diff --git a/src/main/resources/assets/chisel/textures/items/chisel_obsidian.png b/src/main/resources/assets/chisel/textures/items/chisel_obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0e5092232e1f3a5088287ab940fbe4277af39b GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85o30K$!7fntTONP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM z&os5wC>5w?uBVG*h=u>u-h;f&20X65+FDha(;YTAS~DFtVt&OC`uxPXW%iRM8U|*` z$9eeN<2L-5s~B~;&4joT`e$k{NUd=d z+bFeRQ|(r%7nunQ;}Edl{_ElQWhW;}->rYVH{qsP)I7gnz7zYUDi5Z11WG<} nWeSwckp{9v+6B9u?R~T_a0b*e`es}PI+VfF)z4*}Q$iB}c}ixT literal 0 HcmV?d00001 From 282d4766d891842b0fbda103f0cda24762571399 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Thu, 19 Feb 2015 19:15:11 -0500 Subject: [PATCH 04/85] Undo formatting changes --- .../com/cricketcraft/chisel/Features.java | 466 +++++++++++++----- 1 file changed, 335 insertions(+), 131 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 4be3558b..47831f86 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -40,7 +40,9 @@ import static com.cricketcraft.chisel.utils.General.sGNames; public enum Features { AE_CERTUS_QUARTZ("appliedenergistics2") { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartz"), 0, 0); Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartzPillar"), 0, 1); Carving.chisel.addVariation("AECertusQuartz", GameRegistry.findBlock("appliedenergistics2", "tile.BlockQuartzChiseled"), 0, 2); @@ -49,7 +51,9 @@ public enum Features { }, AE_SKY_STONE("appliedenergistics2") { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 1, 0); Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 2, 1); Carving.chisel.addVariation("AESkyStone", GameRegistry.findBlock("appliedenergistics2", "tile.BlockSkyStone"), 3, 2); @@ -75,7 +79,9 @@ public enum Features { }, AMBER("Thaumcraft") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable amber = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("amber", GameRegistry.findBlock("Thaumcraft", "blockCosmeticOpaque"), 0, 0); Carving.chisel.addVariation("amber", GameRegistry.findBlock("Thaumcraft", "blockCosmeticOpaque"), 1, 1); @@ -85,7 +91,9 @@ public enum Features { }, ANDESITE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable andesite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); andesite.carverHelper.setChiselBlockName("andesite"); andesite.carverHelper.addVariation("tile.andesite.0.desc", 0, "andesite/andesite"); @@ -97,7 +105,9 @@ public enum Features { }, ANTIBLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable antiBlock = (BlockCarvable) new BlockCarvableAntiBlock().setCreativeTab(ChiselTabs.tabOtherChiselBlocks); antiBlock.carverHelper.setChiselBlockName("Anti Block"); if (!Configurations.allowChiselCrossColors) { @@ -112,7 +122,8 @@ public enum Features { OreDictionary.registerOre("antiBlock", antiBlock); } - @Override void addRecipes() { + @Override + void addRecipes() { if (meta == 0) { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.antiBlock, 8, 15), "SSS", "SGS", "SSS", 'S', "stone", 'G', "dustGlowstone")); } @@ -120,13 +131,16 @@ public enum Features { 'd', dyeOres[meta], 'B', new ItemStack(ChiselBlocks.antiBlock, 1, OreDictionary.WILDCARD_VALUE))); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } }, ARCANE("Thaumcraft") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable arcane = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("arcane", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 6, 0); Carving.chisel.addVariation("arcane", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 7, 1); @@ -151,19 +165,23 @@ public enum Features { GameRegistry.registerBlock(autoChisel, "autoChisel"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.autoChisel, 1), new Object[] { "XXX", " Y ", "YYY", Character.valueOf('X'), Blocks.stone_slab, Character.valueOf('Y'), "ingotIron" })); } }, AUTO_CHISEL_UPGRADES(AUTO_CHISEL) { - @Override void addItems() { + + @Override + void addItems() { ItemUpgrade upgrade = (ItemUpgrade) new ItemUpgrade("upgrade").setCreativeTab(ChiselTabs.tabChisel); GameRegistry.registerItem(upgrade, "upgrade"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.upgrade, 1, 0), new Object[] { "IEI", "EUE", "RRR", 'I', "ingotIron", 'E', Items.emerald, 'R', Items.redstone, 'U', Items.sugar })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.upgrade, 1, 1), new Object[] { "IEI", "EUE", "RRR", 'I', "ingotIron", 'E', Items.emerald, 'R', Items.redstone, 'U', @@ -174,19 +192,24 @@ public enum Features { }, BALL_OF_MOSS { - @Override void addItems() { + + @Override + void addItems() { ItemBallOMoss ballomoss = (ItemBallOMoss) new ItemBallOMoss().setTextureName("Chisel:ballomoss").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntityBallOMoss.class, "BallOMoss", 2, Chisel.instance, 40, 1, true); GameRegistry.registerItem(ballomoss, "ballomoss"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselItems.ballomoss, 1), "XYX", "YXY", "XYX", 'X', Blocks.vine, 'Y', Items.stick); } }, BLOOD_RUNE("AWWayofTime") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable bloodRune = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("bloodRune", GameRegistry.findBlock("AWWayofTime", "AlchemicalWizardrybloodRune"), 0, 0); bloodRune.carverHelper.addVariation("tile.bloodRune.0.desc", 0, "bloodMagic/bloodRuneArranged"); @@ -201,7 +224,9 @@ public enum Features { }, BLOOD_BLOCK("AWWayofTime") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable bloodBrick = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("bloodBrick", GameRegistry.findBlock("AWWayofTime", "largeBloodStoneBrick"), 0, 0); Carving.chisel.addVariation("bloodBrick", GameRegistry.findBlock("AWWayofTime", "bloodStoneBrick"), 0, 1); @@ -211,7 +236,9 @@ public enum Features { }, BOOKSHELF { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable bookshelf = (BlockCarvable) new BlockCarvableBookshelf().setHardness(1.5F).setCreativeTab(ChiselTabs.tabWoodChiselBlocks).setStepSound(Block.soundTypeWood); Carving.chisel.addVariation("bookshelf", Blocks.bookshelf, 0, 0); bookshelf.carverHelper.addVariation("tile.bookshelf.1.desc", 1, "bookshelf/rainbow"); @@ -229,7 +256,9 @@ public enum Features { }, BRICK_CUSTOM { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable brickCustom = (BlockCarvable) new BlockCarvable(Material.rock).setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); Carving.chisel.addVariation("brickCustom", Blocks.brick_block, 0, 0); brickCustom.carverHelper.addVariation("tile.brickCustom.1.desc", 1, "brickCustom/large"); @@ -262,7 +291,9 @@ public enum Features { }, CARPET { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable carpet_block = (BlockCarvable) new BlockCarvable(Material.cloth).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeCloth); carpet_block.carverHelper.setChiselBlockName("Carpet Block"); @@ -289,11 +320,13 @@ public enum Features { OreDictionary.registerOre("blockCarpet", carpet_block); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.carpet_block, 8, meta), "YYY", "YXY", "YYY", 'X', new ItemStack(Items.string, 1), 'Y', new ItemStack(Blocks.wool, 1, meta)); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } }, @@ -338,17 +371,21 @@ public enum Features { OreDictionary.registerOre("carpet", carpet); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.carpet, 3, meta), "XX", 'X', new ItemStack(ChiselBlocks.carpet_block, 1, meta)); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } }, CHISEL { - @Override void addItems() { + + @Override + void addItems() { ItemChisel chisel = (ItemChisel) new ItemChisel(ChiselType.IRON).setCreativeTab(ChiselTabs.tabChisel); ItemChisel diamondChisel = (ItemChisel) new ItemChisel(ChiselType.DIAMOND).setCreativeTab(ChiselTabs.tabChisel); ItemChisel obsidianChisel = (ItemChisel) new ItemChisel(ChiselType.OBSIDIAN).setCreativeTab(ChiselTabs.tabChisel); @@ -357,7 +394,8 @@ public enum Features { GameRegistry.registerItem(obsidianChisel, "obsidianChisel"); } - @Override void addRecipes() { + @Override + void addRecipes() { if (Configurations.chiselRecipe) { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.chisel), " YY", " YY", "X ", 'X', "stickWood", 'Y', "ingotIron")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselItems.diamondChisel), " YY", " YY", "x ", 'x', "stickWood", 'Y', "gemDiamond")); @@ -371,7 +409,9 @@ public enum Features { }, CLOUD { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable cloud = (BlockCloud) new BlockCloud().setHardness(0.2F).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setLightOpacity(3).setStepSound(Block.soundTypeCloth); cloud.carverHelper.addVariation("tile.cloud.0.desc", 0, "cloud/cloud"); cloud.carverHelper.addVariation("tile.cloud.1.desc", 1, "cloud/large"); @@ -383,19 +423,23 @@ public enum Features { Carving.chisel.registerOre("cloud", "cloud"); } - @Override void addItems() { + @Override + void addItems() { ItemCloudInABottle itemCloudInABottle = (ItemCloudInABottle) new ItemCloudInABottle().setTextureName("Chisel:cloudinabottle-x").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntityCloudInABottle.class, "CloudInABottle", 1, Chisel.instance, 40, 1, true); GameRegistry.registerItem(itemCloudInABottle, "cloudinabottle"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselItems.cloudinabottle, 1), "X X", "XYX", " X ", 'X', Blocks.glass, 'Y', Items.quartz); } }, COBBLESTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable cobblestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("cobblestone", Blocks.cobblestone, 0, 0); @@ -420,7 +464,9 @@ public enum Features { }, COBBLESTONE_MOSSY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable mossy_cobblestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); @@ -446,7 +492,9 @@ public enum Features { }, CONCRETE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable concrete = (BlockConcrete) new BlockConcrete().setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(0.5F); concrete.carverHelper.addVariation("tile.concrete.0.desc", 0, "concrete/default"); concrete.carverHelper.addVariation("tile.concrete.1.desc", 1, "concrete/block"); @@ -464,7 +512,8 @@ public enum Features { Carving.chisel.registerOre("concrete", "concrete"); } - @Override void addRecipes() { + @Override + void addRecipes() { Block concreteRecipeBlock = Block.getBlockFromName(Configurations.config.get("tweaks", "concrete recipe block", "gravel", "Unlocalized name of the block that, when burned, will produce concrete (examples: lightgem, stone)").getString()); if (concreteRecipeBlock == null) @@ -493,7 +542,9 @@ public enum Features { }, DIAMOND_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable diamond_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("diamond_block", Blocks.diamond_block, 0, 0); @@ -515,7 +566,9 @@ public enum Features { }, DIORITE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable diorite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); diorite.carverHelper.setChiselBlockName("diorite"); diorite.carverHelper.addVariation("tile.diorite.0.desc", 0, "diorite/diorite"); @@ -527,7 +580,9 @@ public enum Features { }, DIRT { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable dirt = (BlockCarvable) new BlockCarvable(Material.ground).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setStepSound(Block.soundTypeGravel) .setBlockName("dirt.default"); Carving.chisel.addVariation("dirt", Blocks.dirt, 0, 0); @@ -554,7 +609,9 @@ public enum Features { }, EMERALD_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable emerald_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("emerald_block", Blocks.emerald_block, 0, 0); @@ -575,7 +632,9 @@ public enum Features { }, FACTORY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable factoryblock = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundMetalFootstep); factoryblock.carverHelper.setChiselBlockName("factoryblock"); @@ -599,14 +658,17 @@ public enum Features { Carving.chisel.registerOre("factoryblock", "factoryblock"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.factoryblock, Configurations.factoryBlockAmount, 0), new Object[] { "*X*", "X X", "*X*", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.iron_ingot, 1) }); } }, FANTASY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable fantasyblock = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); fantasyblock.carverHelper.setChiselBlockName("Fantasy Block"); fantasyblock.carverHelper.addVariation("tile.fantasyblock.0.desc", 0, "fantasy/brick"); @@ -649,15 +711,18 @@ public enum Features { Carving.chisel.registerOre("fantasyblock2", "fantasy2"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.fantasyblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.gold_nugget, 1)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.fantasyblock2, 8, 0), "***", "*X*", "***", '*', new ItemStack(ChiselBlocks.fantasyblock, 1), 'X', "dyeWhite")); } }, FUTURA { + // TODO Overlay is WIP - @Override void addBlocks() { + @Override + void addBlocks() { BlockCarvable futura = (BlockCarvable) new BlockCarvable(Material.rock/* * , "futura/screenOverlay-ctm" */).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); @@ -669,13 +734,16 @@ public enum Features { Carving.chisel.registerOre("futura", "futura"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.futura, 8, 0), "SBS", "BGB", "SBS", 'S', "stone", 'G', "dustRedstone", 'B', new ItemStack(Blocks.stonebrick, 1))); } }, GLASS { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvableGlass glass = (BlockCarvableGlass) new BlockCarvableGlass().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F).setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glass", Blocks.glass, 0, 0); glass.carverHelper.addVariation("tile.glass.1.desc", 1, "glass/terrain-glassbubble"); @@ -699,7 +767,9 @@ public enum Features { }, GLASS_PANE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePane glass_pane = (BlockCarvablePane) new BlockCarvablePane(Material.glass, false).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glass_pane", Blocks.glass_pane, 0, 0); @@ -717,7 +787,9 @@ public enum Features { }, GLASS_STAINED { - @Override void addBlocks() { + + @Override + void addBlocks() { for (int i = 0; i < 16; i++) { final String blockName = "stained_glass_" + sGNames[i].replaceAll(" ", "").toLowerCase(); String oreName = "stainedGlass" + sGNames[i].replaceAll(" ", ""); @@ -745,7 +817,9 @@ public enum Features { }, GLASS_STAINED_PANE { - @Override void addBlocks() { + + @Override + void addBlocks() { for (int i = 0; i < 16; i++) { final String blockName = "stained_glass_pane_" + sGNames[i].replaceAll(" ", "").toLowerCase(); String oreName = "stainedGlassPane" + sGNames[i].replaceAll(" ", ""); @@ -777,7 +851,9 @@ public enum Features { }, GLOWSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvableGlowstone glowstone = (BlockCarvableGlowstone) new BlockCarvableGlowstone().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F).setLightLevel(1.0F) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("glowstone", Blocks.glowstone, 0, 0); @@ -802,7 +878,9 @@ public enum Features { }, GOLD_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable gold_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(3F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("gold_block", Blocks.gold_block, 0, 0); gold_block.carverHelper.addVariation("tile.gold.1.desc", 1, "gold/terrain-gold-largeingot"); @@ -825,7 +903,9 @@ public enum Features { }, GRANITE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable granite = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); granite.carverHelper.setChiselBlockName("granite"); granite.carverHelper.addVariation("tile.granite.0.desc", 0, "granite/granite"); @@ -837,7 +917,9 @@ public enum Features { }, GRIMSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable grimstone = (BlockGrimstone) new BlockGrimstone(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); grimstone.carverHelper.addVariation("tile.grimstone.0.desc", 0, "grimstone/grimstone"); grimstone.carverHelper.addVariation("tile.grimstone.1.desc", 1, "grimstone/smooth"); @@ -858,13 +940,16 @@ public enum Features { Carving.chisel.registerOre("grimstone", "grimstone"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.grimstone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.coal, 1)); } }, HEX_PLATING { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable hexPlating = (BlockCarvable) new BlockCarvableGlow("hexPlating/hexAnim").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10.0F); for (int i = 0; i < 16; i++) { hexPlating.carverHelper.addVariation("tile.hexPlating." + ItemDye.field_150921_b[i] + ".desc", i, "hexPlating/hexBase"); @@ -873,13 +958,16 @@ public enum Features { Carving.chisel.registerOre("hexPlating", "hexPlating"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.hexPlating, 8, 0), "XXX", "XYX", "XXX", 'X', "stone", 'Y', "blockCoal")); } }, HOLYSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable holystone = (BlockHolystone) new BlockHolystone(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundHolystoneFootstep); holystone.carverHelper.addVariation("tile.holystone.0.desc", 0, "holystone/holystone"); @@ -901,13 +989,16 @@ public enum Features { Carving.chisel.registerOre("holystone", "holystone"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.holystone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.feather, 1)); } }, ICE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvableIce ice = (BlockCarvableIce) new BlockCarvableIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3).setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("ice", Blocks.ice, 0, 0); ice.carverHelper.addVariation("tile.ice.1.desc", 1, "ice/a1-ice-light"); @@ -929,13 +1020,16 @@ public enum Features { Carving.chisel.registerOre("ice", "ice"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.ice, 4, 1), "XX", "XX", 'X', new ItemStack(ChiselBlocks.ice_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, ICE_PILLAR(ICE) { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvableIcePillar ice_pillar = (BlockCarvableIcePillar) new BlockCarvableIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) .setStepSound(Block.soundTypeGlass); ice_pillar.carverHelper.setChiselBlockName("Ice Pillar"); @@ -956,7 +1050,9 @@ public enum Features { }, ICE_STAIRS(ICE) { - @Override void addBlocks() { + + @Override + void addBlocks() { CarvableStairsMaker makerIceStairs = new CarvableStairsMaker(Blocks.ice); makerIceStairs.carverHelper.setChiselBlockName("Ice Stairs"); makerIceStairs.carverHelper.addVariation("tile.ice_stairs.0.desc", 0, Blocks.ice); @@ -987,7 +1083,9 @@ public enum Features { }, IRON_BARS { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePane iron_bars = (BlockCarvablePane) new BlockCarvablePane(Material.iron, true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("iron_bars", Blocks.iron_bars, 0, 0); @@ -1006,7 +1104,9 @@ public enum Features { }, IRON_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable iron_block = (BlockBeaconBase) new BlockBeaconBase().setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(5F).setResistance(10F).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("iron_block", Blocks.iron_block, 0, 0); @@ -1031,7 +1131,9 @@ public enum Features { }, JACKOLANTERN { - @Override void addBlocks() { + + @Override + void addBlocks() { for (int metadata = 0; metadata < 16; metadata++) { jackolantern[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("litpumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setLightLevel(1.0f); @@ -1045,7 +1147,9 @@ public enum Features { }, LABORATORY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable laboratoryblock = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Chisel.soundMetalFootstep); laboratoryblock.carverHelper.setChiselBlockName("laboratoryblock"); @@ -1069,13 +1173,16 @@ public enum Features { Carving.chisel.registerOre("laboratoryblock", "laboratoryblock"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.laboratoryblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.quartz, 1)); } }, LAPIS_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable lapis_block = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(3F).setResistance(5F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("lapis_block", Blocks.lapis_block, 0, 0); @@ -1093,7 +1200,9 @@ public enum Features { }, LAVASTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockLavastone lavastone = (BlockLavastone) new BlockLavastone(Material.rock, "lava_flow").setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F); lavastone.carverHelper.addVariation("tile.lavastone.0.desc", 0, "lavastone/cobble"); lavastone.carverHelper.addVariation("tile.lavastone.1.desc", 1, "lavastone/black"); @@ -1108,7 +1217,8 @@ public enum Features { Carving.chisel.registerOre("lavastone", "lavastone"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.lavastone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.lava_bucket, 1)); } }, @@ -1131,7 +1241,9 @@ public enum Features { }, LEAVES { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockLeaf leaves = (BlockLeaf) new BlockLeaf(Material.leaves).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.2F).setStepSound(Block.soundTypeGrass); Carving.chisel.addGroup(new CarvingGroup("leaves") { @@ -1179,7 +1291,9 @@ public enum Features { }, LIMESTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable limestone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); limestone.carverHelper.setChiselBlockName("Limestone"); @@ -1247,13 +1361,16 @@ public enum Features { Carving.chisel.registerOre("limestone_stairs", "limestone_stairs"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.limestone_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.limestone, 1, OreDictionary.WILDCARD_VALUE)); } }, MARBLE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable marble = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F) .setStepSound(Block.soundTypeStone); marble.carverHelper.setChiselBlockName("Marble"); @@ -1321,14 +1438,17 @@ public enum Features { makerMarbleStairs.create("marble_stairs", ChiselBlocks.marbleStairs); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.marble, 1, OreDictionary.WILDCARD_VALUE)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble, 4), "XX", "XX", 'X', new ItemStack(ChiselBlocks.marble_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, MARBLE_PILLAR(MARBLE) { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable marble_pillar; if (Configurations.oldPillars) { @@ -1416,14 +1536,17 @@ public enum Features { registerSlabTop(marble_pillar_slab, marble_pillar_slab.top); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_pillar, 6), "XX", "XX", "XX", 'X', new ItemStack(ChiselBlocks.marble, 1, OreDictionary.WILDCARD_VALUE)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.marble_pillar_slab, 6, 0), "***", '*', new ItemStack(ChiselBlocks.marble_pillar, 1, OreDictionary.WILDCARD_VALUE)); } }, NETHER_BRICK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable nether_brick = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("nether_brick", Blocks.nether_brick, 0, 0); @@ -1450,7 +1573,9 @@ public enum Features { }, NETHER_RACK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable netherrack = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(0.4F).setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("netherrack", Blocks.netherrack, 0, 0); @@ -1474,7 +1599,9 @@ public enum Features { }, OBSIDIAN { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable obsidian = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(50.0F).setResistance(2000.0F) .setStepSound(Block.soundTypeStone); Carving.chisel.addVariation("obsidian", Blocks.obsidian, 0, 0); @@ -1499,7 +1626,9 @@ public enum Features { }, PACKEDICE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePackedIce packedice = (BlockCarvablePackedIce) new BlockCarvablePackedIce().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setLightOpacity(3) .setStepSound(Block.soundTypeGlass); Carving.chisel.addVariation("packedice", Blocks.packed_ice, 0, 0); @@ -1524,7 +1653,9 @@ public enum Features { }, PACKEDICE_PILLAR { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePackedIcePillar packedice_pillar = (BlockCarvablePackedIcePillar) new BlockCarvablePackedIcePillar(Material.ice).setCreativeTab(ChiselTabs.tabOtherChiselBlocks) .setHardness(0.5F).setLightOpacity(3).setStepSound(Block.soundTypeGlass); packedice_pillar.carverHelper.setChiselBlockName("Packed Ice Pillar"); @@ -1540,7 +1671,9 @@ public enum Features { }, PACKEDICE_STAIRS { - @Override void addBlocks() { + + @Override + void addBlocks() { CarvableStairsMaker makerPackedIceStairs = new CarvableStairsMaker(Blocks.packed_ice); makerPackedIceStairs.carverHelper.setChiselBlockName("Packed Ice Stairs"); makerPackedIceStairs.carverHelper.addVariation("tile.packedice_stairs.0.desc", 0, Blocks.packed_ice); @@ -1571,7 +1704,9 @@ public enum Features { }, PAPER_WALL { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePane paperwall = (BlockCarvablePane) new BlockCarvablePane(Material.ground, true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.5F).setResistance(0.5F); paperwall.carverHelper.setChiselBlockName("Paper Wall"); paperwall.carverHelper.addVariation("tile.paperwall.0.desc", 0, "paper/box"); @@ -1603,7 +1738,8 @@ public enum Features { Carving.chisel.registerOre("paperwall_block", "paperwall_block"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.paperwall, 8), "ppp", "psp", "ppp", ('p'), Items.paper, ('s'), "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.paperwall_block, 4), "pp", "pp", ('p'), ChiselBlocks.paperwall)); } @@ -1626,13 +1762,16 @@ public enum Features { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ChiselBlocks.present, 1, meta), new ItemStack(Blocks.chest, 1), dyeOres[meta])); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } }, PUMPKIN { - @Override void addBlocks() { + + @Override + void addBlocks() { for (int metadata = 0; metadata < 16; metadata++) { pumpkin[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(false).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("pumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks); @@ -1644,17 +1783,21 @@ public enum Features { Carving.chisel.registerOre("pumpkin", "pumpkin"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addShapelessRecipe(new ItemStack(ChiselBlocks.jackolantern[meta]), new ItemStack(ChiselBlocks.pumpkin[meta], 1), new ItemStack(Item.getItemFromBlock(Blocks.torch), 1)); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } }, QUARTZ { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("quartz", Blocks.quartz_block, 0, 0); Carving.chisel.addVariation("quartz", Blocks.quartz_block, 1, 0); Carving.chisel.addVariation("quartz", Blocks.quartz_block, 2, 0); @@ -1800,7 +1943,9 @@ public enum Features { }, REDSTONE_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable redstone_block = (BlockCarvablePowered) (new BlockCarvablePowered(Material.iron)).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("redstone_block", Blocks.redstone_block, 0, 0); @@ -1825,7 +1970,9 @@ public enum Features { }, ROAD_LINE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockRoadLine road_line = (BlockRoadLine) new BlockRoadLine().setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.01F) .setBlockName("roadLine"); road_line.carverHelper.addVariation("tile.roadLine.0.desc", 0, "line-marking/white-center"); @@ -1836,13 +1983,16 @@ public enum Features { Carving.chisel.registerOre("road_line", "roadLine"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.road_line, 8, 0), "wrw", "wrw", "wrw", ('w'), "dyeWhite", ('r'), Items.redstone)); } }, SANDSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable sandstone = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone).setHardness(0.8F); Carving.chisel.addVariation("sandstone", Blocks.sandstone, 0, 0); Carving.chisel.addVariation("sandstone", Blocks.sandstone, 1, 1); @@ -1864,7 +2014,8 @@ public enum Features { Carving.chisel.registerOre("sandstone", "sandstone"); } - @Override void addRecipes() { + @Override + void addRecipes() { if (meta == 0) { // The following recipe is due to bugs with Chisel 1.5.1 to // 1.5.6a @@ -1877,7 +2028,9 @@ public enum Features { }, SANDSTONE_SCRIBBLES { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable sandstone_scribbles = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone).setHardness(0.8F); sandstone_scribbles.carverHelper.addVariation("tile.sandstoneScribbles.desc", 0, "sandstone-scribbles/scribbles-0"); sandstone_scribbles.carverHelper.addVariation("tile.sandstoneScribbles.desc", 1, "sandstone-scribbles/scribbles-1"); @@ -1899,7 +2052,8 @@ public enum Features { Carving.chisel.registerOre("sandstone_scribbles", "sandstone_scribbles"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.sandstone_scribbles, 1), "X", 'X', new ItemStack(ChiselBlocks.sandstone, 1, 8)); } }, @@ -1922,13 +2076,16 @@ public enum Features { }, SMASHING_ROCK { - @Override void addItems() { + + @Override + void addItems() { ItemSmashingRock smashingrock = (ItemSmashingRock) new ItemSmashingRock().setTextureName("Chisel:smashingrock").setCreativeTab(ChiselTabs.tabChisel); EntityRegistry.registerModEntity(EntitySmashingRock.class, "SmashingRock", 3, Chisel.instance, 40, 1, true); GameRegistry.registerItem(smashingrock, "smashingrock"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addShapelessRecipe(new ItemStack(ChiselItems.smashingrock, 16), new Object[] { new ItemStack(Items.stone_pickaxe), new ItemStack(Items.glass_bottle, 1), new ItemStack(Items.stone_shovel) }); } @@ -2000,7 +2157,9 @@ public enum Features { }, STONE_BRICK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable stonebricksmooth = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(1.5F).setResistance(10.0F) .setStepSound(Block.soundTypeStone); if (Configurations.allowSmoothStone) { @@ -2028,19 +2187,21 @@ public enum Features { stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.15.desc", 15, "stonebrick/poison"); stonebricksmooth.carverHelper.registerAll(stonebricksmooth, "stonebricksmooth"); - BlockCarvable stonebricksmooth2 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(1.5F).setResistance(10.0F) - .setStepSound(Block.soundTypeStone); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.0.desc", 0, "stonebrick2/masonryPlain"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.1.desc", 1, "stonebrick2/masonryFelsic"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.2.desc", 2, "stonebrick2/masonryMafic"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.3.desc", 3, "stonebrick2/masonryMixed"); - stonebricksmooth2.carverHelper.registerAll(stonebricksmooth2, "stonebricksmooth2"); + BlockCarvable stonebricksmooth2 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(1.5F).setResistance(10.0F) + .setStepSound(Block.soundTypeStone); + stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.0.desc", 0, "stonebrick2/masonryPlain"); + stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.1.desc", 1, "stonebrick2/masonryFelsic"); + stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.2.desc", 2, "stonebrick2/masonryMafic"); + stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.3.desc", 3, "stonebrick2/masonryMixed"); + stonebricksmooth2.carverHelper.registerAll(stonebricksmooth2, "stonebricksmooth2"); Carving.chisel.registerOre("stonebricksmooth2", "stonebricksmooth"); } }, TALLOW("Thaumcraft") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable tallow = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeSnow); Carving.chisel.addVariation("tallow", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 5, 0); tallow.carverHelper.addVariation("tile.tallow.0.desc", 0, "tallow/smooth"); @@ -2051,7 +2212,9 @@ public enum Features { }, TECHNICAL { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable technical = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); technical.carverHelper.addVariation("tile.technical.0.desc", 0, "technical/scaffold"); technical.carverHelper.addVariation("tile.technical.1.desc", 1, "technical/cautiontape"); @@ -2080,7 +2243,8 @@ public enum Features { Carving.chisel.registerOre("technical", "technical"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yxy", "xyx", 'x', "stone", 'y', Items.iron_ingot })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical2, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yzy", "xyx", 'x', "stone", 'y', @@ -2089,7 +2253,9 @@ public enum Features { }, TEMPLE_BLOCK { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable templeblock = (BlockCarvable) new BlockEldritch().setHardness(2.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setResistance(10F) .setStepSound(Chisel.soundTempleFootstep); templeblock.carverHelper.setChiselBlockName("Temple Block"); @@ -2113,13 +2279,16 @@ public enum Features { Carving.chisel.registerOre("templeblock", "templeblock"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.templeblock, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', dyeOres[4])); } }, TEMPLE_BLOCK_MOSSY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable mossy_templeblock = (BlockCarvable) new BlockEldritch().setHardness(2.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setResistance(10F) .setStepSound(Chisel.soundTempleFootstep); mossy_templeblock.carverHelper.setChiselBlockName("Mossy Temple Block"); @@ -2169,7 +2338,9 @@ public enum Features { TWILGHT_FOREST("TwilightForest"), TF_MAZESTONE(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 0, 0); Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 1, 1); Carving.chisel.addVariation("TFMazestone", GameRegistry.findBlock("TwilightForest", "tile.TFMazestone"), 2, 2); @@ -2183,7 +2354,9 @@ public enum Features { }, TF_TOWERSTONE(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 0, 0); Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 1, 1); Carving.chisel.addVariation("TFTowerStone", GameRegistry.findBlock("TwilightForest", "tile.TFTowerStone"), 2, 2); @@ -2193,7 +2366,9 @@ public enum Features { }, TF_UNDER_BRICK(TWILGHT_FOREST.getRequiredMod(), TWILGHT_FOREST) { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 0, 0); Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 1, 1); Carving.chisel.addVariation("TFUnderBrick", GameRegistry.findBlock("TwilightForest", "tile.TFUnderBrick"), 2, 2); @@ -2202,7 +2377,9 @@ public enum Features { }, THAUMIUM("Thaumcraft") { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable thaumium = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setStepSound(Block.soundTypeMetal); Carving.chisel.addVariation("thaumium", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 4, 0); thaumium.carverHelper.addVariation("tile.thaumium.0.desc", 0, "thaumium/ornate"); @@ -2217,7 +2394,9 @@ public enum Features { }, TORCH { - @Override void addBlocks() { + + @Override + void addBlocks() { Carving.chisel.addVariation("torch", Blocks.torch, 0, 0); for (int type = 0; type < 10; type++) { if (type == 8 || type == 9) @@ -2234,7 +2413,9 @@ public enum Features { }, TYRIAN { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable tyrian = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(5.0F).setResistance(10.0F) .setStepSound(Block.soundTypeMetal); tyrian.carverHelper.setChiselBlockName("Futuristic Armor Plating Block"); @@ -2259,7 +2440,8 @@ public enum Features { Carving.chisel.registerOre("tyrian", "tyrian"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.tyrian, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.iron_ingot, 1)); } }, @@ -2282,7 +2464,9 @@ public enum Features { }, VALENTINES { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable valentines = (BlockCarvable) new BlockCarvable(Material.wood).setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2F) .setResistance(10F); valentines.carverHelper.addVariation("tile.valentines.0.desc", 0, "valentines/bricks"); @@ -2291,13 +2475,16 @@ public enum Features { Carving.chisel.registerOre("valentines", "blockValentines"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.valentines, 8, 0), "***", "*X*", "***", '*', "stone", 'X', new ItemStack(Items.dye, 1, 9))); } }, VOIDSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable voidstone = (BlockCarvable) new BlockCarvable().setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone) .setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(5.0F).setResistance(10.0F); voidstone.carverHelper.addVariation("tile.voidstone.0.desc", 0, "voidstone/raw"); @@ -2327,7 +2514,8 @@ public enum Features { Carving.chisel.registerOre("voidstone2", "voidstone2"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstone, 8, 0), new Object[] { "oxo", "xyx", "oxo", 'x', new ItemStack(Blocks.stone, 1), 'y', new ItemStack(Items.ender_pearl, 1), 'o', new ItemStack(Blocks.obsidian, 1) }); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstone2, 8, 0), new Object[] { "oxo", "xyx", "oxo", 'x', new ItemStack(Blocks.stone, 1), 'y', new ItemStack(Items.ender_eye, 1), 'o', @@ -2336,7 +2524,9 @@ public enum Features { }, VOIDSTONE_PILLARS(VOIDSTONE) { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvablePillar voidstonePillar = (BlockCarvablePillar) new BlockCarvablePillar(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setStepSound(Block.soundTypeStone); voidstonePillar.carverHelper.addVariation("tile.voidstonePillar.0.desc", 0, "voidstone/pillar"); voidstonePillar.carverHelper.registerAll(voidstonePillar, "voidstonePillar"); @@ -2348,14 +2538,17 @@ public enum Features { Carving.chisel.registerOre("voidstonePillar2", "voidstonePillar2"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstonePillar, 4, 0), "xx", "xx", 'x', new ItemStack(ChiselBlocks.voidstone, 1)); GameRegistry.addRecipe(new ItemStack(ChiselBlocks.voidstonePillar2, 4, 0), "xx", "xx", 'x', new ItemStack(ChiselBlocks.voidstone2, 1)); } }, WARNING_SIGN { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvableLayered warningSign = (BlockCarvableLayered) new BlockCarvableLayered(Material.iron, "warning/base").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F) .setResistance(10.0F); warningSign.carverHelper.addVariation("tile.warningSign.0.desc", 0, "warning/rad"); @@ -2377,13 +2570,16 @@ public enum Features { Carving.chisel.registerOre("warningSign", "warningSign"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.warningSign, 4, 0), new Object[] { "xxx", "xyx", "xxx", 'x', "stone", 'y', Items.sign })); } }, WATERSTONE { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockWaterstone waterstone = (BlockWaterstone) new BlockWaterstone(Material.rock, "water_flow").setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10.0F); waterstone.carverHelper.addVariation("tile.waterstone.0.desc", 0, "waterstone/cobble"); waterstone.carverHelper.addVariation("tile.waterstone.1.desc", 1, "waterstone/black"); @@ -2397,13 +2593,16 @@ public enum Features { Carving.chisel.registerOre("waterstone", "blockWaterstone"); } - @Override void addRecipes() { + @Override + void addRecipes() { GameRegistry.addRecipe(new ItemStack(ChiselBlocks.waterstone, 8, 0), "***", "*X*", "***", '*', new ItemStack(Blocks.stone, 1), 'X', new ItemStack(Items.water_bucket, 1)); } }, WOOD { - @Override void addBlocks() { + + @Override + void addBlocks() { String[] plank_names = { "oak", "spruce", "birch", "jungle", "acacia", "dark-oak" }; String[] plank_ucnames = { "Oak", "Spruce", "Birch", "Jungle", "Acacia", "Dark Oak" }; for (int i = 0; i < plank_names.length; i++) { @@ -2438,7 +2637,9 @@ public enum Features { }, WOOLEN_CLAY { - @Override void addBlocks() { + + @Override + void addBlocks() { BlockCarvable woolen_clay = (BlockCarvable) new BlockCarvable(Material.clay).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2F).setResistance(10F); woolen_clay.carverHelper.setChiselBlockName("Woolen Clay"); @@ -2449,17 +2650,20 @@ public enum Features { Carving.chisel.registerOre("woolen_clay", "woolen_clay"); } - @Override void addRecipes() { + @Override + void addRecipes() { OreDictionary.registerOre("stainedClay" + sGNames[meta].replaceAll(" ", ""), new ItemStack(Blocks.stained_hardened_clay, 1, meta)); OreDictionary.registerOre("blockWool" + sGNames[meta].replaceAll(" ", ""), new ItemStack(Blocks.wool, 1, meta)); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ChiselBlocks.woolen_clay, 2, meta), new Object[] { "blockWool" + sGNames[meta].replaceAll(" ", ""), "stainedClay" + sGNames[meta].replaceAll(" ", "") })); } - @Override boolean needsMetaRecipes() { + @Override + boolean needsMetaRecipes() { return true; } - },; + }, + ; private static final String[] dyeOres = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite" }; From 5245737d138356c9d05b7f6ad436d9c668da8604 Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Thu, 19 Feb 2015 23:27:24 -0500 Subject: [PATCH 05/85] fix for gradle outright dying on IDEA... we'll see what this stomps on later --- build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.gradle b/build.gradle index 9756c92b..391da333 100644 --- a/build.gradle +++ b/build.gradle @@ -165,5 +165,3 @@ curse { displayName = "Chisel 2 - ${mod_version}" additionalArtifact deobfJar, sourcesJar, apiJar } - -sourceSets { main { output.resourcesDir = output.classesDir } } From cd22a6fb4ea761ed2e559343dc2ca9138d172d24 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 21 Feb 2015 02:54:59 -0500 Subject: [PATCH 06/85] Make sure to call canChisel from autochisel --- .../chisel/block/tileentity/TileEntityAutoChisel.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java index 64507435..fa00f93f 100644 --- a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java @@ -141,8 +141,7 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory // if we have the stack upgrade, boost the stack size to the max possible, otherwise just one chiseled.stackSize = hasUpgrade(Upgrade.STACK) ? canBeMade : 1; - // if we can place the result in the output - if (canMerge(chiseled)) { + if (canChisel(chiseled)) { // if our output is empty, just use the current result if (output == null) { setInventorySlotContents(OUTPUT, chiseled); @@ -187,7 +186,7 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory return false; } - private boolean canMerge(ItemStack toMerge) { + private boolean canChisel(ItemStack toMerge) { // if the output slot is empty we can merge without checking if (inventory[OUTPUT] == null) { return true; @@ -198,7 +197,7 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory return !toMerge.getHasSubtypes() || toMerge.getItemDamage() == inventory[OUTPUT].getItemDamage(); } - return false; + return ((IChiselItem)inventory[CHISEL].getItem()).canChisel(worldObj, inventory[CHISEL], General.getVariation(inventory[TARGET])); } private boolean hasChisel() { From 113fde136f2971dfb14e371a61a7ef8768e7a769 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 21 Feb 2015 18:36:26 -0500 Subject: [PATCH 07/85] Add in 1.8 recipes for the 1.8 blocks --- .../java/com/cricketcraft/chisel/Features.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 47831f86..f46de4d7 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -100,7 +100,12 @@ public enum Features { andesite.carverHelper.addVariation("tile.andesite.1.desc", 1, "andesite/andesitePolished"); andesite.carverHelper.addVariation("tile.andesite.2.desc", 2, "andesite/andesitePillar"); andesite.carverHelper.registerAll(andesite, "andesite"); - Carving.chisel.registerOre("andesite", "andesite"); + Carving.chisel.registerOre("andesite", "blockAndesite"); + } + + @Override + void addRecipes() { + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(andesite, 2), diorite, "cobblestone")); } }, @@ -577,6 +582,11 @@ public enum Features { diorite.carverHelper.registerAll(diorite, "diorite"); Carving.chisel.registerOre("diorite", "diorite"); } + + @Override + void addRecipes() { + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(diorite, 2), "cq", "qc", 'c', "cobblestone", 'q', "gemQuartz")); + } }, DIRT { @@ -914,6 +924,11 @@ public enum Features { granite.carverHelper.registerAll(granite, "granite"); Carving.chisel.registerOre("granite", "granite"); } + + @Override + void addRecipes() { + GameRegistry.addRecipe(new ShapelessOreRecipe(granite, diorite, "gemQuartz")); + } }, GRIMSTONE { From 5baf4951d97c7f796a47426f5d5370d365188b74 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 22 Feb 2015 01:37:51 +0000 Subject: [PATCH 08/85] Fix #222 --- .../chisel/client/render/BlockMarblePillarRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java index eb83808d..02f33e59 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/BlockMarblePillarRenderer.java @@ -94,7 +94,7 @@ public class BlockMarblePillarRenderer implements ISimpleBlockRenderingHandler { renderer.uvRotateEast = 2; renderer.uvRotateWest = 1; renderer.uvRotateTop = 1; - renderer.uvRotateBottom = 1; + renderer.uvRotateBottom = 2; block.sides[4] = block.getCtmIcon(4, metadata); block.sides[5] = block.getCtmIcon(4, metadata); From 284f82f487f120d440c3460f44ee89989ec8faa1 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 22 Feb 2015 01:46:08 +0000 Subject: [PATCH 09/85] Fix #232 --- src/main/resources/assets/chisel/lang/en_US.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 9754499f..c7c88a8c 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -596,7 +596,7 @@ tile.concrete.9.desc=Partly Weathered Concrete Block tile.concrete.10.desc=Asphalt #Road Line -tile.chisel.roadLine.name=Road Lines +tile.chisel.road_line.name=Road Lines tile.roadLine.0.desc=White tile.roadLine.1.desc=Yellow tile.roadLine.2.desc=Double White From 546485cf3bc8d6ae0560231255d6b1036e00521c Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 22 Feb 2015 01:50:45 +0000 Subject: [PATCH 10/85] Prevent RC Invisiblock related crashes (Closes #238) --- .../com/cricketcraft/chisel/block/BlockPresent.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java index feff0d69..b362f260 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java @@ -31,7 +31,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockPresent extends Block implements ICarvable { public CarvableHelper carverHelper; - + private float minX, minY, minZ, maxX, maxY, maxZ; public BlockPresent() { @@ -48,7 +48,7 @@ public class BlockPresent extends Block implements ICarvable { public String getModelTexture(int type) { return "textures/blocks/present/presentChest" + type; } - + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void getSubBlocks(Item item, CreativeTabs tab, List list) { @@ -118,12 +118,16 @@ public class BlockPresent extends Block implements ICarvable { @Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { + if(world.getTileEntity(x, y, z) instanceof TileEntityPresent) return getBoundingBox((TileEntityPresent) world.getTileEntity(x, y, z)); + else return null; } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + if(world.getTileEntity(x, y, z) instanceof TileEntityPresent) return getBoundingBox((TileEntityPresent) world.getTileEntity(x, y, z)); + else return null; } public AxisAlignedBB getBoundingBox(TileEntityPresent me) { @@ -169,7 +173,7 @@ public class BlockPresent extends Block implements ICarvable { } } } - + @Override public boolean hasTileEntity(int metadata) { return true; @@ -193,7 +197,7 @@ public class BlockPresent extends Block implements ICarvable { } return 0; } - + @Override public int damageDropped(int meta) { return meta; From 0108468fc2c0fdd0442affc68bd9ac461adf1928 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 22 Feb 2015 02:29:43 +0000 Subject: [PATCH 11/85] Fix #231 (The minorest of bugs :P) --- .../com/cricketcraft/chisel/block/BlockCarvablePumpkin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java index 7d9e6157..6e132405 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java @@ -1,5 +1,6 @@ package com.cricketcraft.chisel.block; +import net.minecraft.block.Block; import net.minecraft.block.BlockPumpkin; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; @@ -25,6 +26,7 @@ public class BlockCarvablePumpkin extends BlockPumpkin implements ICarvable { public BlockCarvablePumpkin(boolean isOn) { super(isOn); + this.setStepSound(Block.soundTypeWood); if (isOn) setLightLevel(10.0F); carverHelper = new CarvableHelper(); From aa5d07ba478075827416de6630ad970747dff77f Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 22 Feb 2015 02:40:57 +0000 Subject: [PATCH 12/85] Fix #237 Fortunatly the check isn't hardcoded :D --- .../chisel/block/BlockCarvableSlab.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSlab.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSlab.java index 34dc90df..a82cdc02 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSlab.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSlab.java @@ -1,9 +1,18 @@ package com.cricketcraft.chisel.block; +import static net.minecraftforge.common.util.ForgeDirection.DOWN; +import static net.minecraftforge.common.util.ForgeDirection.UP; + import java.util.List; import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.block.BlockCompressedPowered; +import net.minecraft.block.BlockFarmland; +import net.minecraft.block.BlockHopper; +import net.minecraft.block.BlockSlab; +import net.minecraft.block.BlockSnow; +import net.minecraft.block.BlockStairs; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.item.Item; @@ -13,6 +22,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -103,5 +113,20 @@ public class BlockCarvableSlab extends BlockCarvable { if (isBottom) super.getSubBlocks(block, tabs, list); } + /** + * Checks if the block is a solid face on the given side, used by placement logic. + * + * @param world The current world + * @param x X Position + * @param y Y position + * @param z Z position + * @param side The side to check + * @return True if the block is solid on the specified side. + */ + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) + { + return !isBottom && (side == UP); + } } From 9fd27ce29cc4939d43aa626313e964baf4e2e83a Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 22 Feb 2015 08:25:53 -0800 Subject: [PATCH 13/85] Added Massive Fan; hacky implementation of Techical2 & Tech3 into Tech chisel group --- .../com/cricketcraft/chisel/Features.java | 39 ++++++++++++------ .../resources/assets/chisel/lang/en_US.lang | 8 +++- .../blocks/technical/massiveFan-v9.png | Bin 0 -> 259850 bytes .../blocks/technical/massiveFan-v9.png.mcmeta | 3 ++ .../chisel/textures/items/chisel_obsidian.png | Bin 641 -> 290 bytes 5 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/technical/massiveFan-v9.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/technical/massiveFan-v9.png.mcmeta diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index f46de4d7..91dc9e64 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2181,13 +2181,17 @@ public enum Features { Carving.chisel.addVariation("stonebricksmooth", Blocks.stone, 0, -1); } for (int i = 0; i < 4; i++) { - if (i == 1) { - if (Configurations.allowMossy) - Carving.chisel.addVariation("stonebricksmooth", Blocks.stonebrick, i, i); + if ((i == 1) && (Configurations.allowMossy)) { + Carving.chisel.addVariation("stonebricksmooth", Blocks.stonebrick, i, i); } else { Carving.chisel.addVariation("stonebricksmooth", Blocks.stonebrick, i, i); } } + + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.0.desc", 0, "stonebrick2/masonryPlain"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.1.desc", 1, "stonebrick2/masonryFelsic"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.2.desc", 2, "stonebrick2/masonryMafic"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.3.desc", 3, "stonebrick2/masonryMixed"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.4.desc", 4, "stonebrick/smallbricks"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.5.desc", 5, "stonebrick/largebricks"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.6.desc", 6, "stonebrick/smallchaotic"); @@ -2201,15 +2205,9 @@ public enum Features { stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.14.desc", 14, "stonebrick/ornatepanel"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.15.desc", 15, "stonebrick/poison"); stonebricksmooth.carverHelper.registerAll(stonebricksmooth, "stonebricksmooth"); + Carving.chisel.registerOre("stonebricksmooth", "stonebricksmooth"); - BlockCarvable stonebricksmooth2 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(1.5F).setResistance(10.0F) - .setStepSound(Block.soundTypeStone); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.0.desc", 0, "stonebrick2/masonryPlain"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.1.desc", 1, "stonebrick2/masonryFelsic"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.2.desc", 2, "stonebrick2/masonryMafic"); - stonebricksmooth2.carverHelper.addVariation("tile.stonebricksmooth2.3.desc", 3, "stonebrick2/masonryMixed"); - stonebricksmooth2.carverHelper.registerAll(stonebricksmooth2, "stonebricksmooth2"); - Carving.chisel.registerOre("stonebricksmooth2", "stonebricksmooth"); + //Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("Chisel-2", "tile.TFTowerStone"), 0, 0); } }, @@ -2247,7 +2245,6 @@ public enum Features { technical.carverHelper.addVariation("tile.technical.13.desc", 13, "technical/grate"); technical.carverHelper.addVariation("tile.technical.14.desc", 14, "technical/malfunctionFan"); technical.carverHelper.addVariation("tile.technical.15.desc", 15, "technical/grateRusty"); - technical.carverHelper.registerAll(technical, "technical"); BlockCarvableGlass technical2 = (BlockCarvableGlass) new BlockCarvableGlass().setHardness(2.0F).setResistance(10F); technical2.carverHelper.addVariation("tile.technical.0.desc", 0, "technical/scaffoldTransparent"); @@ -2255,7 +2252,23 @@ public enum Features { technical2.carverHelper.addVariation("tile.technical.6.desc", 2, "technical/fanStillTransparent"); technical2.carverHelper.addVariation("tile.technical.14.desc", 3, "technical/fanStillTransparent"); technical2.carverHelper.registerAll(technical2, "technical2"); - Carving.chisel.registerOre("technical", "technical"); + Carving.chisel.registerOre("technical2", "technical"); + + BlockCarvable technical3 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); + technical3.carverHelper.addVariation("tile.technical3.0.desc", 0, "technical/massiveFan"); + technical2.carverHelper.registerAll(technical3, "technical3"); + Carving.chisel.registerOre("technical3", "technical"); + + for (int i = 0; i < 4; i++) { + Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical2"), i, i); + } + + for (int i = 0; i < 1; i++) { + Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical3"), i, i); + } + + technical.carverHelper.registerAll(technical, "technical"); + Carving.chisel.registerOre("technical", "technical"); } @Override diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index c7c88a8c..9513345a 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -225,6 +225,8 @@ tile.grimstone.14.desc=Flaky Grimstone #Technical Block tile.chisel.technical.name=Technical Block +tile.chisel.technical2.name=Transparent Technical Block +tile.chisel.technical3.name=Industrial Technical Block tile.technical.0.desc=Scaffold tile.technical.1.desc=Panels with Caution Tape tile.technical.2.desc=An Old Relic from the land of Oneteufyv @@ -241,7 +243,7 @@ tile.technical.12.desc=Rusty Panel tile.technical.13.desc=Grate tile.technical.14.desc=Fan (Malfunctioning) tile.technical.15.desc=Rusty Grate -tile.chisel.technical2.name=Transparent Technical Block +tile.technical3.0.desc=I'm a big fan of this massive fan! #Metal Blocks tile.chisel.aluminumblock.name=Block of Aluminum @@ -735,6 +737,10 @@ tile.stoneMoss.15.desc=Mossy Cobblestone with Dark Panel #Stone Bricks tile.chisel.stonebricksmooth.name=Stone Bricks +tile.stonebricksmooth.0.desc=Modern Neutral Masonry +tile.stonebricksmooth.1.desc=Modern Felsic Masonry +tile.stonebricksmooth.2.desc=Modern Mafic Masonry +tile.stonebricksmooth.3.desc=Modern Mixed Masonry tile.stonebricksmooth.4.desc=Small Stone Bricks tile.stonebricksmooth.5.desc=Wide Stone Bricks tile.stonebricksmooth.6.desc=Small Disordered Stone Bricks diff --git a/src/main/resources/assets/chisel/textures/blocks/technical/massiveFan-v9.png b/src/main/resources/assets/chisel/textures/blocks/technical/massiveFan-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..7c95f6a5dc8a62cd9a4ea91bad132448bc7d935a GIT binary patch literal 259850 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 z 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 From dad374f985e2fb55bbcf968347f0108d4723b43d Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 22 Feb 2015 10:21:45 -0800 Subject: [PATCH 14/85] Massive Fan finished and finished unification of all technical blocks --- src/main/java/com/cricketcraft/chisel/Features.java | 11 ++++++----- .../cricketcraft/chisel/carving/CarvableHelper.java | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 91dc9e64..aa1c469a 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2245,6 +2245,7 @@ public enum Features { technical.carverHelper.addVariation("tile.technical.13.desc", 13, "technical/grate"); technical.carverHelper.addVariation("tile.technical.14.desc", 14, "technical/malfunctionFan"); technical.carverHelper.addVariation("tile.technical.15.desc", 15, "technical/grateRusty"); + technical.carverHelper.registerAll(technical, "technical"); BlockCarvableGlass technical2 = (BlockCarvableGlass) new BlockCarvableGlass().setHardness(2.0F).setResistance(10F); technical2.carverHelper.addVariation("tile.technical.0.desc", 0, "technical/scaffoldTransparent"); @@ -2252,12 +2253,12 @@ public enum Features { technical2.carverHelper.addVariation("tile.technical.6.desc", 2, "technical/fanStillTransparent"); technical2.carverHelper.addVariation("tile.technical.14.desc", 3, "technical/fanStillTransparent"); technical2.carverHelper.registerAll(technical2, "technical2"); - Carving.chisel.registerOre("technical2", "technical"); + //Carving.chisel.registerOre("technical2", "technical"); BlockCarvable technical3 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); technical3.carverHelper.addVariation("tile.technical3.0.desc", 0, "technical/massiveFan"); technical2.carverHelper.registerAll(technical3, "technical3"); - Carving.chisel.registerOre("technical3", "technical"); + //Carving.chisel.registerOre("technical3", "technical"); for (int i = 0; i < 4; i++) { Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical2"), i, i); @@ -2267,7 +2268,7 @@ public enum Features { Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical3"), i, i); } - technical.carverHelper.registerAll(technical, "technical"); + Carving.chisel.registerOre("technical", "technical"); } @@ -2275,8 +2276,8 @@ public enum Features { void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yxy", "xyx", 'x', "stone", 'y', Items.iron_ingot })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical2, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yzy", "xyx", 'x', "stone", 'y', - "ingotIron", 'z', Blocks.glass })); + /*GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.technical2, Configurations.factoryBlockAmount, 0), new Object[] { "xyx", "yzy", "xyx", 'x', "stone", 'y', + "ingotIron", 'z', Blocks.glass })); //*/ } }, diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index fe3e0ad5..73f5a8cf 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -271,10 +271,10 @@ public class CarvableHelper { //For WEST, SOUTH reverse the indexes for both X and Z textureX = (variationSize - textureX - 1); textureZ = (variationSize - textureZ - 1); - } else if (side == 0) { + } /*else if (side == 0) { //For DOWN, reverse the indexes for only Z textureZ = (variationSize - textureZ - 1); - } + }//*/ int index; if (side == 0 || side == 1) { From 53ad987158f6b7d3cc09393dee5fe0167de15867 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 22 Feb 2015 17:25:20 -0800 Subject: [PATCH 15/85] Add Hex Armor Plating --- .../java/com/cricketcraft/chisel/Features.java | 1 + src/main/resources/assets/chisel/lang/en_US.lang | 1 + .../blocks/technical/massiveHexPlating-v9.png | Bin 0 -> 4404 bytes 3 files changed, 2 insertions(+) create mode 100644 src/main/resources/assets/chisel/textures/blocks/technical/massiveHexPlating-v9.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index aa1c469a..2c3cd394 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2257,6 +2257,7 @@ public enum Features { BlockCarvable technical3 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); technical3.carverHelper.addVariation("tile.technical3.0.desc", 0, "technical/massiveFan"); + technical3.carverHelper.addVariation("tile.technical3.1.desc", 1, "technical/massiveHexPlating"); technical2.carverHelper.registerAll(technical3, "technical3"); //Carving.chisel.registerOre("technical3", "technical"); diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 9513345a..5fb7ebbf 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -244,6 +244,7 @@ tile.technical.13.desc=Grate tile.technical.14.desc=Fan (Malfunctioning) tile.technical.15.desc=Rusty Grate tile.technical3.0.desc=I'm a big fan of this massive fan! +tile.technical3.1.desc=Industrial Armor Plating #Metal Blocks tile.chisel.aluminumblock.name=Block of Aluminum diff --git a/src/main/resources/assets/chisel/textures/blocks/technical/massiveHexPlating-v9.png b/src/main/resources/assets/chisel/textures/blocks/technical/massiveHexPlating-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3329f8d4367f5d0035e01f9d1f69a7d2eaea86 GIT binary patch literal 4404 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 F{|}IYdK&-$ literal 0 HcmV?d00001 From 3275ffe8ca0506ea17901d1239f98fa8236e9f8d Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 22 Feb 2015 18:34:42 -0800 Subject: [PATCH 16/85] Dehackify things --- .../java/com/cricketcraft/chisel/Features.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 2c3cd394..4cda79e8 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2252,23 +2252,14 @@ public enum Features { technical2.carverHelper.addVariation("tile.technical.4.desc", 1, "technical/fanFastTransparent"); technical2.carverHelper.addVariation("tile.technical.6.desc", 2, "technical/fanStillTransparent"); technical2.carverHelper.addVariation("tile.technical.14.desc", 3, "technical/fanStillTransparent"); - technical2.carverHelper.registerAll(technical2, "technical2"); - //Carving.chisel.registerOre("technical2", "technical"); + technical2.carverHelper.registerBlock(technical2, "technical2"); + technical2.carverHelper.registerVariations("technical", technical2); BlockCarvable technical3 = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); technical3.carverHelper.addVariation("tile.technical3.0.desc", 0, "technical/massiveFan"); technical3.carverHelper.addVariation("tile.technical3.1.desc", 1, "technical/massiveHexPlating"); - technical2.carverHelper.registerAll(technical3, "technical3"); - //Carving.chisel.registerOre("technical3", "technical"); - - for (int i = 0; i < 4; i++) { - Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical2"), i, i); - } - - for (int i = 0; i < 1; i++) { - Carving.chisel.addVariation("technical", GameRegistry.findBlock("chisel", "technical3"), i, i); - } - + technical2.carverHelper.registerBlock(technical3, "technical3"); + technical2.carverHelper.registerVariations("technical", technical3); Carving.chisel.registerOre("technical", "technical"); } From 7f3fabcb967ed663d4f8d59fc20607736b48c24a Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 23 Feb 2015 00:26:42 -0500 Subject: [PATCH 17/85] Remove extra PlayerSpecials registration that crashes servers --- .../java/com/cricketcraft/chisel/Chisel.java | 4 ---- .../chisel/client/player/PlayerSpecials.java | 16 ++++++++-------- .../cricketcraft/chisel/init/ChiselBlocks.java | 1 + 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Chisel.java b/src/main/java/com/cricketcraft/chisel/Chisel.java index 2f2465ba..0f421eb0 100644 --- a/src/main/java/com/cricketcraft/chisel/Chisel.java +++ b/src/main/java/com/cricketcraft/chisel/Chisel.java @@ -11,7 +11,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.cricketcraft.chisel.block.BlockCarvable; -import com.cricketcraft.chisel.client.player.PlayerSpecials; import com.cricketcraft.chisel.compat.Compatibility; import com.cricketcraft.chisel.compat.IMCHandler; import com.cricketcraft.chisel.config.Configurations; @@ -141,9 +140,6 @@ public class Chisel { MinecraftForge.EVENT_BUS.register(this); FMLCommonHandler.instance().bus().register(instance); - FMLCommonHandler.instance().bus().register(new PlayerSpecials()); - - FMLInterModComms.sendMessage("Waila", "register", "com.cricketcraft.chisel.compat.WailaCompat.register"); } diff --git a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java index a5749cb2..1d95fbb0 100644 --- a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java +++ b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java @@ -1,10 +1,8 @@ package com.cricketcraft.chisel.client.player; -import com.cricketcraft.chisel.init.ChiselItems; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.OpenGlHelper; @@ -16,12 +14,14 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; + import org.lwjgl.opengl.GL11; -import java.util.ArrayList; -import java.util.List; +import com.cricketcraft.chisel.init.ChiselItems; + +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; -@SideOnly(Side.CLIENT) public class PlayerSpecials { private List names = new ArrayList(); diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index 808de56b..10b8b3cd 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -40,6 +40,7 @@ public final class ChiselBlocks { public static final BlockCarvablePackedIce packedice = null; public static final BlockCarvablePackedIcePillar packedice_pillar = null; public static final BlockCarvable obsidian = null; + public static final BlockCarvable obsidian2 = null; public static final BlockCarvablePowered redstone_block = null; public static final BlockHolystone holystone = null; public static final BlockGrimstone grimstone = null; From 690e0699e65f03adf17742702038ebc14092eead Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 23 Feb 2015 01:08:34 -0500 Subject: [PATCH 18/85] Builds will now always use the BUILD_NUMBER sysenv var if it is present --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 391da333..aca77576 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ project.ext.gitHash = repo.log().find().abbreviatedId boolean dev = project.hasProperty('chisel_dev') && project.chisel_dev.equalsIgnoreCase('true') ext.buildnumber = 0 -project.buildnumber = !dev && System.getenv('BUILD_NUMBER') != null ? System.getenv('BUILD_NUMBER') : project.ext.gitHash +project.buildnumber = System.getenv('BUILD_NUMBER') != null ? System.getenv('BUILD_NUMBER') : project.ext.gitHash version = "${mod_version}.${buildnumber}" group = "com.cricketcraft.chisel" // http://maven.apache.org/guides/mini/guide-naming-conventions.html From 99fb926ff15870c85b7316ca7ed306fc927c64e3 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 23 Feb 2015 02:29:10 -0500 Subject: [PATCH 19/85] Improve dev special rendering system --- .../chisel/client/player/PlayerSpecials.java | 127 +++++++++++++----- .../chisel/proxy/ClientProxy.java | 4 +- 2 files changed, 95 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java index 1d95fbb0..9176de8f 100644 --- a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java +++ b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java @@ -1,7 +1,7 @@ package com.cricketcraft.chisel.client.player; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.UUID; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; @@ -10,34 +10,40 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; -import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.common.MinecraftForge; import org.lwjgl.opengl.GL11; import com.cricketcraft.chisel.init.ChiselItems; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class PlayerSpecials { - - private List names = new ArrayList(); - private boolean resetRender; - - public PlayerSpecials() { - names.add("Cricket"); - names.add("Drullkus"); + + private interface IDevRenderer { + + void renderPlayer(EntityPlayer player, boolean post); + + void renderExtras(EntityPlayer player, boolean post); } + + private class RenderHolstered implements IDevRenderer { + + private ItemStack toRender; + + private RenderHolstered(ItemStack toRender) { + this.toRender = toRender; + } - @SubscribeEvent(priority = EventPriority.HIGHEST) - public void renderItem(RenderPlayerEvent.Specials.Post event) { - EntityPlayer player = event.entityPlayer; - - for (int x = 0; x < names.size(); x++) { - if (player.getCommandSenderName().equals(names.get(x))) { + @Override + public void renderExtras(EntityPlayer player, boolean post) { + if (!post) { GL11.glPushMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); if (player.isSneaking()) { @@ -49,36 +55,89 @@ public class PlayerSpecials { GL11.glTranslatef(-0.25F, -0.85F, armor ? 0.2F : 0.28F); GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glColor3f(1.0F, 1.0F, 1.0F); - int light = 15728880; - int lightmapX = light % 65536; - int lightmapY = light / 65536; + int light = 0xF000F0; + int lightmapX = light % 0x10000; + int lightmapY = light / 0x10000; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY); - IIcon icon = ChiselItems.obsidianChisel.getIcon(new ItemStack(ChiselItems.obsidianChisel, 1, 0), 1); + IIcon icon = toRender.getIconIndex(); ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 1.0F / 16.0F); GL11.glPopMatrix(); } } + + @Override + public void renderPlayer(EntityPlayer player, boolean post) { + } } - - @SubscribeEvent(priority = EventPriority.HIGHEST) - public void renderDev(RenderLivingEvent.Pre event) { - for (int x = 0; x < names.size(); x++) { - if (EnumChatFormatting.getTextWithoutFormattingCodes(event.entity.getCommandSenderName()).equals(names.get(x))) { + + private class RenderTranslucent implements IDevRenderer { + + @Override + public void renderExtras(EntityPlayer player, boolean post) { + } + + @Override + public void renderPlayer(EntityPlayer player, boolean post) { + if (!post) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); - GL11.glEnable(3042); - GL11.glBlendFunc(770, 771); - resetRender = true; + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } else { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_BLEND); } } } + public static final PlayerSpecials INSTANCE = new PlayerSpecials(); + + private Multimap renderMap = ArrayListMultimap.create(); + + private PlayerSpecials() { + RenderHolstered backChisel = new RenderHolstered(new ItemStack(ChiselItems.obsidianChisel)); + RenderTranslucent translucent = new RenderTranslucent(); + + renderMap.putAll(UUID.fromString("a7529984-8cb2-4fb9-b799-97980f770101"), Lists.newArrayList(backChisel, translucent)); // Cricket + renderMap.putAll(UUID.fromString("5399b615-3440-4c66-939d-ab1375952ac3"), Lists.newArrayList(backChisel, translucent)); // Drullkus + + renderMap.put(UUID.fromString("671516b1-4fb3-4c03-aa7c-9c88cfab3ae8"), new RenderHolstered(new ItemStack(ChiselItems.diamondChisel))); // tterrag + + MinecraftForge.EVENT_BUS.register(this); + } + + public static void init() { + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onPlayerRenderPre(RenderPlayerEvent.Pre event) { + Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); + for (IDevRenderer r : renders) { + r.renderPlayer(event.entityPlayer, false); + } + } + @SubscribeEvent - public void entityColorRender(RenderLivingEvent.Post event) { - if (this.resetRender) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(3042); - resetRender = false; + public void onPlayerRenderPost(RenderPlayerEvent.Post event) { + Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); + for (IDevRenderer r : renders) { + r.renderPlayer(event.entityPlayer, true); + } + } + + @SubscribeEvent + public void onPlayerRenderSpecialPre(RenderPlayerEvent.Specials.Pre event) { + Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); + for (IDevRenderer r : renders) { + r.renderExtras(event.entityPlayer, false); + } + } + + @SubscribeEvent + public void onPlayerRenderSpecialPost(RenderPlayerEvent.Specials.Post event) { + Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); + for (IDevRenderer r : renders) { + r.renderExtras(event.entityPlayer, false); } } } diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index 4ced85b1..a527bf21 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -62,8 +62,8 @@ public class ClientProxy extends CommonProxy { MinecraftForgeClient.registerItemRenderer(ChiselItems.chisel, renderer); MinecraftForgeClient.registerItemRenderer(ChiselItems.diamondChisel, renderer); - - MinecraftForge.EVENT_BUS.register(new PlayerSpecials()); + + PlayerSpecials.init(); } @Override From c365568d54e962e14d095bde98efae1e649e9fd1 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 23 Feb 2015 13:05:24 -0500 Subject: [PATCH 20/85] Fix stair placement and tooltip bugs. Closes #235 --- .../com/cricketcraft/chisel/block/BlockCarvableStairs.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java index a730288e..1a359292 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java @@ -69,6 +69,10 @@ public class BlockCarvableStairs extends BlockStairs implements ICarvable { meta += par1World.getBlockMetadata(par2, par3, par4) % 8; // add upside-down-ness + if (par6ItemStack.getItemDamage() >= 8) { + meta += 8; + } + par1World.setBlockMetadataWithNotify(par2, par3, par4, meta, 2); } @@ -84,6 +88,6 @@ public class BlockCarvableStairs extends BlockStairs implements ICarvable { @Override public CarvableVariation getVariation(ItemStack stack) { - return carverHelper.getVariation(stack.getItemDamage()); + return carverHelper.getVariation(blockMeta + (stack.getItemDamage() / 8)); } } From 760deb9abfb39e3b6777c223a6fae7a8d19715d9 Mon Sep 17 00:00:00 2001 From: yesimwearingpants Date: Tue, 24 Feb 2015 20:03:04 -0500 Subject: [PATCH 21/85] Added Search To CreativeTabs --- .../cricketcraft/chisel/init/ChiselTabs.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java index d0c180cf..774d2751 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java @@ -31,6 +31,25 @@ public class ChiselTabs { public ItemStack getIconItemStack() { return stack; } + + @Override + @SideOnly(Side.CLIENT) + public String getBackgroundImageName() { + + return search ? "item_search.png" : super.getBackgroundImageName(); + } + + @Override + public int getSearchbarWidth() { + + return 89; + } + + @Override + public boolean hasSearchBar() { + + return true; + } } private static boolean atLeastOneModIsLoaded = false; From b63bb69fff08f08ca7d311b75340a0bda9ee2acc Mon Sep 17 00:00:00 2001 From: yesimwearingpants Date: Tue, 24 Feb 2015 20:20:31 -0500 Subject: [PATCH 22/85] Fixed Derp --- .../cricketcraft/chisel/init/ChiselTabs.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java index 774d2751..4feaf25d 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java @@ -11,11 +11,14 @@ import com.cricketcraft.chisel.Features; public class ChiselTabs { private static class CustomCreativeTab extends CreativeTabs { + + private boolean search; private ItemStack stack; - public CustomCreativeTab(String label) { + public CustomCreativeTab(String label, boolean searchbar) { super(label); + this.search = searchbar; } @Override @@ -48,18 +51,18 @@ public class ChiselTabs { @Override public boolean hasSearchBar() { - return true; + return search; } } private static boolean atLeastOneModIsLoaded = false; - public static final CustomCreativeTab tabChisel = new CustomCreativeTab("tabChisel"); - public static final CustomCreativeTab tabStoneChiselBlocks = new CustomCreativeTab("tabStoneChiselBlocks"); - public static final CustomCreativeTab tabWoodChiselBlocks = new CustomCreativeTab("tabWoodChiselBlocks"); - public static final CustomCreativeTab tabMetalChiselBlocks = new CustomCreativeTab("tabMetalChiselBlocks"); - public static final CustomCreativeTab tabOtherChiselBlocks = new CustomCreativeTab("tabOtherChiselBlocks"); - public static final CustomCreativeTab tabModdedChiselBlocks = new CustomCreativeTab("tabModdedChiselBlocks"); + public static final CustomCreativeTab tabChisel = new CustomCreativeTab("tabChisel", false); + public static final CustomCreativeTab tabStoneChiselBlocks = new CustomCreativeTab("tabStoneChiselBlocks", true); + public static final CustomCreativeTab tabWoodChiselBlocks = new CustomCreativeTab("tabWoodChiselBlocks", true); + public static final CustomCreativeTab tabMetalChiselBlocks = new CustomCreativeTab("tabMetalChiselBlocks", true); + public static final CustomCreativeTab tabOtherChiselBlocks = new CustomCreativeTab("tabOtherChiselBlocks", true); + public static final CustomCreativeTab tabModdedChiselBlocks = new CustomCreativeTab("tabModdedChiselBlocks", true); // this serves mostly just to load the static initializers public static void preInit() { From b23ce4ded0ef7cf9c4e9a53d8d18708ac55104d8 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Wed, 25 Feb 2015 04:24:11 -0500 Subject: [PATCH 23/85] Fix imports --- src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java index 4feaf25d..26d324bc 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java @@ -8,6 +8,9 @@ import net.minecraft.item.ItemStack; import com.cricketcraft.chisel.Features; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + public class ChiselTabs { private static class CustomCreativeTab extends CreativeTabs { From d093235f6a45495923c9f6ecdcbc40570f8ae41b Mon Sep 17 00:00:00 2001 From: warlordjones Date: Fri, 27 Feb 2015 15:13:54 +0000 Subject: [PATCH 24/85] Custom particles respect the particles setting in the vanilla options menu (Fixes #240) --- .../chisel/client/GeneralChiselClient.java | 35 ++++++++++--------- .../chisel/proxy/ClientProxy.java | 3 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java index e36fa1d4..56bda997 100644 --- a/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java +++ b/src/main/java/com/cricketcraft/chisel/client/GeneralChiselClient.java @@ -1,5 +1,17 @@ package com.cricketcraft.chisel.client; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.particle.EntityDiggingFX; +import net.minecraft.client.particle.EntityLavaFX; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + import com.cricketcraft.chisel.block.BlockGrimstone; import com.cricketcraft.chisel.block.BlockHolystone; import com.cricketcraft.chisel.block.BlockLavastone; @@ -12,17 +24,6 @@ import com.cricketcraft.chisel.entity.fx.EntityGrimstoneFX; import com.cricketcraft.chisel.entity.fx.EntityHolystoneFX; import com.cricketcraft.chisel.entity.fx.EntitySnakestoneObsidianFX; import com.cricketcraft.chisel.utils.GeneralClient; -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.client.particle.EntityDiggingFX; -import net.minecraft.client.particle.EntityLavaFX; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -import java.util.Random; public class GeneralChiselClient { @@ -30,7 +31,7 @@ public class GeneralChiselClient { public static int tick = 0; public static void spawnLavastoneFX(World world, BlockLavastone block, int x, int y, int z) { - if (Configurations.particlesTickrate != 0 && tick++ % Configurations.particlesTickrate != 0) + if (Configurations.particlesTickrate != 0 && tick++ % Configurations.particlesTickrate != 0 || Minecraft.getMinecraft().gameSettings.particleSetting != 0) return; float f = 0.15F; @@ -78,7 +79,7 @@ public class GeneralChiselClient { } public static void spawnHolystoneFX(World world, BlockHolystone block, int x, int y, int z) { - if (Configurations.particlesTickrate != 0 && tick++ % Configurations.particlesTickrate != 0) + if (Configurations.particlesTickrate != 0 && tick++ % Configurations.particlesTickrate != 0 || Minecraft.getMinecraft().gameSettings.particleSetting != 0) return; float f = 0.15F; @@ -164,14 +165,14 @@ public class GeneralChiselClient { } public static void spawnSnakestoneObsidianFX(World world, BlockSnakestoneObsidian block, int x, int y, int z) { - if (Configurations.particlesTickrate != 0 || tick++ % Configurations.particlesTickrate != 0) { + if (Configurations.particlesTickrate != 0 || tick++ % Configurations.particlesTickrate != 0 || Minecraft.getMinecraft().gameSettings.particleSetting != 0) { EntitySnakestoneObsidianFX res = new EntitySnakestoneObsidianFX(world, block, x, y, z); Minecraft.getMinecraft().effectRenderer.addEffect(res); } } public static void spawnBallOMossFX(World world, double x, double y, double z) { - if (Configurations.particlesTickrate == 0 || tick++ % Configurations.particlesTickrate == 0) { + if (Configurations.particlesTickrate == 0 || tick++ % Configurations.particlesTickrate == 0 || Minecraft.getMinecraft().gameSettings.particleSetting != 0) { EntityBallOMossFX res = new EntityBallOMossFX(world, x, y, z); Minecraft.getMinecraft().effectRenderer.addEffect(res); } @@ -179,7 +180,7 @@ public class GeneralChiselClient { public static EntityDiggingFX addBlockHitEffects(World world, int x, int y, int z, int side) { Block block = world.getBlock(x, y, z); - if (block.isAir(world, x, y, z)) + if (block.isAir(world, x, y, z) || Minecraft.getMinecraft().gameSettings.particleSetting != 0) return null; EffectRenderer renderer = Minecraft.getMinecraft().effectRenderer; @@ -256,7 +257,7 @@ public class GeneralChiselClient { } public static void spawnAutoChiselFX(TileEntityAutoChisel te, ItemStack base) { - if (base != null) { + if (base != null && Minecraft.getMinecraft().gameSettings.particleSetting == 0) { for (int i = 0; i < 10; i++) { EntityDiggingFX particle = new EntityDiggingFX(te.getWorldObj(), te.xCoord + 0.5, te.yCoord + 0.95, te.zCoord + 0.5, 0, 0, 0, Block.getBlockFromItem(base.getItem()), base.getItemDamage()); diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index a527bf21..1e3d7f60 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -20,7 +20,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.common.MinecraftForge; public class ClientProxy extends CommonProxy { @@ -62,7 +61,7 @@ public class ClientProxy extends CommonProxy { MinecraftForgeClient.registerItemRenderer(ChiselItems.chisel, renderer); MinecraftForgeClient.registerItemRenderer(ChiselItems.diamondChisel, renderer); - + PlayerSpecials.init(); } From 6ac2dbbc576dd97367542027c22e78933f849d71 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Fri, 27 Feb 2015 18:50:32 +0000 Subject: [PATCH 25/85] Project Red Marble Bricks compat (Fixes #214) --- src/main/java/com/cricketcraft/chisel/compat/Compatibility.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index b3d2ef4a..b8dfa80f 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -16,6 +16,7 @@ public class Compatibility { /* Proj Red */ addSupport("ProjRed|Exploration", "projectred.exploration.stone", "marble", 0, 99); + addSupport("ProjRed|Exploration", "projectred.exploration.stone", "marble", 1, 99); /* Bluepower */ addSupport("bluepower", "marble", "marble", 0, 99); From b7e32136e5aad6068a2eab6f3b3864ce70a147ce Mon Sep 17 00:00:00 2001 From: Cricket Date: Fri, 27 Feb 2015 17:18:25 -0500 Subject: [PATCH 26/85] Fixed leaf naming --- src/main/resources/assets/chisel/lang/en_US.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 5fb7ebbf..110b2a3d 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -78,6 +78,7 @@ autochisel.slot.chisel.tooltip=Chisel Slot autochisel.slot.target.tooltip=Target Slot #Leaves +tile.chisel.leaves.name=Leaf tile.leaves.6.desc=Dead Leaves tile.leaves.7.desc=Fancy Leaves tile.leaves.8.desc=Pink Petals From ffe28a56ac976d2c14f8dd0dcfa8fb199c329904 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sat, 28 Feb 2015 14:32:52 +0000 Subject: [PATCH 27/85] Add the thaumcraft API (Slimmed down) --- .../java/thaumcraft/api/ThaumcraftApi.java | 588 ++++++++++++++++++ .../thaumcraft/api/ThaumcraftApiHelper.java | 467 ++++++++++++++ .../java/thaumcraft/api/aspects/Aspect.java | 201 ++++++ .../thaumcraft/api/aspects/AspectList.java | 292 +++++++++ .../api/aspects/AspectSourceHelper.java | 58 ++ .../api/aspects/IAspectContainer.java | 80 +++ .../thaumcraft/api/aspects/IAspectSource.java | 16 + .../api/aspects/IEssentiaContainerItem.java | 37 ++ .../api/aspects/IEssentiaTransport.java | 100 +++ .../api/crafting/CrucibleRecipe.java | 91 +++ .../api/crafting/IArcaneRecipe.java | 35 ++ .../api/crafting/IInfusionStabiliser.java | 19 + .../crafting/InfusionEnchantmentRecipe.java | 154 +++++ .../api/crafting/InfusionRecipe.java | 133 ++++ .../api/crafting/ShapedArcaneRecipe.java | 261 ++++++++ .../api/crafting/ShapelessArcaneRecipe.java | 161 +++++ .../internal/DummyInternalMethodHandler.java | 78 +++ .../api/internal/IInternalMethodHandler.java | 25 + .../api/internal/WeightedRandomLoot.java | 24 + .../java/thaumcraft/api/package-info.java | 4 + .../api/research/IScanEventHandler.java | 9 + .../api/research/ResearchCategories.java | 101 +++ .../api/research/ResearchCategoryList.java | 37 ++ .../thaumcraft/api/research/ResearchItem.java | 369 +++++++++++ .../thaumcraft/api/research/ResearchPage.java | 193 ++++++ .../thaumcraft/api/research/ScanResult.java | 39 ++ 26 files changed, 3572 insertions(+) create mode 100644 src/main/java/thaumcraft/api/ThaumcraftApi.java create mode 100644 src/main/java/thaumcraft/api/ThaumcraftApiHelper.java create mode 100644 src/main/java/thaumcraft/api/aspects/Aspect.java create mode 100644 src/main/java/thaumcraft/api/aspects/AspectList.java create mode 100644 src/main/java/thaumcraft/api/aspects/AspectSourceHelper.java create mode 100644 src/main/java/thaumcraft/api/aspects/IAspectContainer.java create mode 100644 src/main/java/thaumcraft/api/aspects/IAspectSource.java create mode 100644 src/main/java/thaumcraft/api/aspects/IEssentiaContainerItem.java create mode 100644 src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java create mode 100644 src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java create mode 100644 src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java create mode 100644 src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java create mode 100644 src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java create mode 100644 src/main/java/thaumcraft/api/crafting/InfusionRecipe.java create mode 100644 src/main/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java create mode 100644 src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java create mode 100644 src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java create mode 100644 src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java create mode 100644 src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java create mode 100644 src/main/java/thaumcraft/api/package-info.java create mode 100644 src/main/java/thaumcraft/api/research/IScanEventHandler.java create mode 100644 src/main/java/thaumcraft/api/research/ResearchCategories.java create mode 100644 src/main/java/thaumcraft/api/research/ResearchCategoryList.java create mode 100644 src/main/java/thaumcraft/api/research/ResearchItem.java create mode 100644 src/main/java/thaumcraft/api/research/ResearchPage.java create mode 100644 src/main/java/thaumcraft/api/research/ScanResult.java diff --git a/src/main/java/thaumcraft/api/ThaumcraftApi.java b/src/main/java/thaumcraft/api/ThaumcraftApi.java new file mode 100644 index 00000000..fbf78801 --- /dev/null +++ b/src/main/java/thaumcraft/api/ThaumcraftApi.java @@ -0,0 +1,588 @@ +package thaumcraft.api; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +import net.minecraft.block.Block; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemArmor.ArmorMaterial; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.CrucibleRecipe; +import thaumcraft.api.crafting.InfusionEnchantmentRecipe; +import thaumcraft.api.crafting.InfusionRecipe; +import thaumcraft.api.crafting.ShapedArcaneRecipe; +import thaumcraft.api.crafting.ShapelessArcaneRecipe; +import thaumcraft.api.internal.DummyInternalMethodHandler; +import thaumcraft.api.internal.IInternalMethodHandler; +import thaumcraft.api.internal.WeightedRandomLoot; +import thaumcraft.api.research.IScanEventHandler; +import thaumcraft.api.research.ResearchCategories; +import thaumcraft.api.research.ResearchCategoryList; +import thaumcraft.api.research.ResearchItem; +import thaumcraft.api.research.ResearchPage; + + +/** + * @author Azanor + * + * + * IMPORTANT: If you are adding your own aspects to items it is a good idea to do it AFTER Thaumcraft adds its aspects, otherwise odd things may happen. + * + */ +public class ThaumcraftApi { + + //Materials + public static ToolMaterial toolMatThaumium = EnumHelper.addToolMaterial("THAUMIUM", 3, 400, 7F, 2, 22); + public static ToolMaterial toolMatVoid = EnumHelper.addToolMaterial("VOID", 4, 150, 8F, 3, 10); + public static ToolMaterial toolMatElemental = EnumHelper.addToolMaterial("THAUMIUM_ELEMENTAL", 3, 1500, 10F, 3, 18); + public static ArmorMaterial armorMatThaumium = EnumHelper.addArmorMaterial("THAUMIUM", 25, new int[] { 2, 6, 5, 2 }, 25); + public static ArmorMaterial armorMatSpecial = EnumHelper.addArmorMaterial("SPECIAL", 25, new int[] { 1, 3, 2, 1 }, 25); + public static ArmorMaterial armorMatThaumiumFortress = EnumHelper.addArmorMaterial("FORTRESS", 40, new int[] { 3, 7, 6, 3 }, 25); + public static ArmorMaterial armorMatVoid = EnumHelper.addArmorMaterial("VOID", 10, new int[] { 3, 7, 6, 3 }, 10); + public static ArmorMaterial armorMatVoidFortress = EnumHelper.addArmorMaterial("VOIDFORTRESS", 18, new int[] { 4, 8, 7, 4 }, 10); + + //Enchantment references + public static int enchantFrugal; + public static int enchantPotency; + public static int enchantWandFortune; + public static int enchantHaste; + public static int enchantRepair; + + //Miscellaneous + /** + * Portable Hole Block-id Blacklist. + * Simply add the block-id's of blocks you don't want the portable hole to go through. + */ + public static ArrayList portableHoleBlackList = new ArrayList(); + + //Internal (Do not alter this unless you like pretty explosions) + //Calling methods from this will only work properly once Thaumcraft is past the FMLPreInitializationEvent phase. + public static IInternalMethodHandler internalMethods = new DummyInternalMethodHandler(); + + //RESEARCH///////////////////////////////////////// + public static ArrayList scanEventhandlers = new ArrayList(); + public static ArrayList scanEntities = new ArrayList(); + public static class EntityTagsNBT { + public EntityTagsNBT(String name, Object value) { + this.name = name; + this.value = value; + } + public String name; + public Object value; + } + public static class EntityTags { + public EntityTags(String entityName, AspectList aspects, EntityTagsNBT... nbts) { + this.entityName = entityName; + this.nbts = nbts; + this.aspects = aspects; + } + public String entityName; + public EntityTagsNBT[] nbts; + public AspectList aspects; + } + + /** + * not really working atm, so ignore it for now + * @param scanEventHandler + */ + public static void registerScanEventhandler(IScanEventHandler scanEventHandler) { + scanEventhandlers.add(scanEventHandler); + } + + /** + * This is used to add aspects to entities which you can then scan using a thaumometer. + * Also used to calculate vis drops from mobs. + * @param entityName + * @param aspects + * @param nbt you can specify certain nbt keys and their values + * to differentiate between mobs.
For example the normal and wither skeleton: + *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 5)); + *
ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 8), new NBTTagByte("SkeletonType",(byte) 1)); + */ + public static void registerEntityTag(String entityName, AspectList aspects, EntityTagsNBT... nbt ) { + scanEntities.add(new EntityTags(entityName,aspects,nbt)); + } + + //RECIPES///////////////////////////////////////// + private static ArrayList craftingRecipes = new ArrayList(); + private static HashMap smeltingBonus = new HashMap(); + + /** + * This method is used to determine what bonus items are generated when the infernal furnace smelts items + * @param in The input of the smelting operation. e.g. new ItemStack(Block.oreGold) + * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). + * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. + */ + public static void addSmeltingBonus(ItemStack in, ItemStack out) { + smeltingBonus.put( + Arrays.asList(in.getItem(),in.getItemDamage()), + new ItemStack(out.getItem(),0,out.getItemDamage())); + } + + /** + * This method is used to determine what bonus items are generated when the infernal furnace smelts items + * @param in The ore dictionary input of the smelting operation. e.g. "oreGold" + * @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0). + * Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced. + */ + public static void addSmeltingBonus(String in, ItemStack out) { + smeltingBonus.put( in, new ItemStack(out.getItem(),0,out.getItemDamage())); + } + + /** + * Returns the bonus item produced from a smelting operation in the infernal furnace + * @param in The input of the smelting operation. e.g. new ItemStack(oreGold) + * @return the The bonus item that can be produced + */ + public static ItemStack getSmeltingBonus(ItemStack in) { + ItemStack out = smeltingBonus.get(Arrays.asList(in.getItem(),in.getItemDamage())); + if (out==null) { + out = smeltingBonus.get(Arrays.asList(in.getItem(),OreDictionary.WILDCARD_VALUE)); + } + if (out==null) { + String od = OreDictionary.getOreName( OreDictionary.getOreID(in)); + out = smeltingBonus.get(od); + } + return out; + } + + public static List getCraftingRecipes() { + return craftingRecipes; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output + * @param aspects the vis cost per aspect. + * @param recipe The recipe. Format is exactly the same as vanilla recipes. Input itemstacks are NBT sensitive. + */ + public static ShapedArcaneRecipe addArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) + { + ShapedArcaneRecipe r= new ShapedArcaneRecipe(research, result, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output + * @param aspects the vis cost per aspect + * @param recipe The recipe. Format is exactly the same as vanilla shapeless recipes. Input itemstacks are NBT sensitive. + */ + public static ShapelessArcaneRecipe addShapelessArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe) + { + ShapelessArcaneRecipe r = new ShapelessArcaneRecipe(research, result, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param result the recipe output. It can either be an itemstack or an nbt compound tag that will be added to the central item + * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an + * instability effect each second while the crafting is in progress + * @param aspects the essentia cost per aspect. + * @param aspects input the central item to be infused + * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. + * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. + * + */ + public static InfusionRecipe addInfusionCraftingRecipe(String research, Object result, int instability, AspectList aspects, ItemStack input,ItemStack[] recipe) + { + if (!(result instanceof ItemStack || result instanceof Object[])) return null; + InfusionRecipe r= new InfusionRecipe(research, result, instability, aspects, input, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param research the research key required for this recipe to work. Leave blank if it will work without research + * @param enchantment the enchantment that will be applied to the item + * @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an + * instability effect each second while the crafting is in progress + * @param aspects the essentia cost per aspect. + * @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive. + * Infusion crafting components are automatically "fuzzy" and the oredict will be checked for possible matches. + * + */ + public static InfusionEnchantmentRecipe addInfusionEnchantmentRecipe(String research, Enchantment enchantment, int instability, AspectList aspects, ItemStack[] recipe) + { + InfusionEnchantmentRecipe r= new InfusionEnchantmentRecipe(research, enchantment, instability, aspects, recipe); + craftingRecipes.add(r); + return r; + } + + /** + * @param stack the recipe result + * @return the recipe + */ + public static InfusionRecipe getInfusionRecipe(ItemStack res) { + for (Object r:getCraftingRecipes()) { + if (r instanceof InfusionRecipe) { + if (((InfusionRecipe)r).getRecipeOutput() instanceof ItemStack) { + if (((ItemStack) ((InfusionRecipe)r).getRecipeOutput()).isItemEqual(res)) + return (InfusionRecipe)r; + } + } + } + return null; + } + + + /** + * @param key the research key required for this recipe to work. + * @param result the output result + * @param catalyst an itemstack of the catalyst or a string if it is an ore dictionary item + * @param cost the vis cost + * @param tags the aspects required to craft this + */ + public static CrucibleRecipe addCrucibleRecipe(String key, ItemStack result, Object catalyst, AspectList tags) { + CrucibleRecipe rc = new CrucibleRecipe(key, result, catalyst, tags); + getCraftingRecipes().add(rc); + return rc; + } + + + /** + * @param stack the recipe result + * @return the recipe + */ + public static CrucibleRecipe getCrucibleRecipe(ItemStack stack) { + for (Object r:getCraftingRecipes()) { + if (r instanceof CrucibleRecipe) { + if (((CrucibleRecipe)r).getRecipeOutput().isItemEqual(stack)) + return (CrucibleRecipe)r; + } + } + return null; + } + + /** + * @param hash the unique recipe code + * @return the recipe + */ + public static CrucibleRecipe getCrucibleRecipeFromHash(int hash) { + for (Object r:getCraftingRecipes()) { + if (r instanceof CrucibleRecipe) { + if (((CrucibleRecipe)r).hash==hash) + return (CrucibleRecipe)r; + } + } + return null; + } + + /** + * Used by the thaumonomicon drilldown feature. + * @param stack the item + * @return the thaumcraft recipe key that produces that item. + */ + private static HashMap keyCache = new HashMap(); + + public static Object[] getCraftingRecipeKey(EntityPlayer player, ItemStack stack) { + int[] key = new int[] {Item.getIdFromItem(stack.getItem()),stack.getItemDamage()}; + if (keyCache.containsKey(key)) { + if (keyCache.get(key)==null) return null; + if (ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), (String)(keyCache.get(key))[0])) + return keyCache.get(key); + else + return null; + } + for (ResearchCategoryList rcl:ResearchCategories.researchCategories.values()) { + for (ResearchItem ri:rcl.research.values()) { + if (ri.getPages()==null) continue; + for (int a=0;a objectTags = new ConcurrentHashMap(); + public static ConcurrentHashMap groupedObjectTags = new ConcurrentHashMap(); + + /** + * Checks to see if the passed item/block already has aspects associated with it. + * @param id + * @param meta + * @return + */ + public static boolean exists(Item item, int meta) { + AspectList tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,meta)); + if (tmp==null) { + tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,OreDictionary.WILDCARD_VALUE)); + if (meta==OreDictionary.WILDCARD_VALUE && tmp==null) { + int index=0; + do { + tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,index)); + index++; + } while (index<16 && tmp==null); + } + if (tmp==null) return false; + } + + return true; + } + + /** + * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

+ * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + * @param item the item passed. Pass OreDictionary.WILDCARD_VALUE if all damage values of this item/block should have the same aspects + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(ItemStack item, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + try { + objectTags.put(Arrays.asList(item.getItem(),item.getItemDamage()), aspects); + } catch (Exception e) {} + } + + + /** + * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:

+ * ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), new int[]{0,1}, (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + * @param item + * @param meta A range of meta values if you wish to lump several item meta's together as being the "same" item (i.e. stair orientations) + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(ItemStack item, int[] meta, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + try { + objectTags.put(Arrays.asList(item.getItem(),meta[0]), aspects); + for (int m:meta) { + groupedObjectTags.put(Arrays.asList(item.getItem(),m), meta); + } + + } catch (Exception e) {} + } + + /** + * Used to assign apsects to the given ore dictionary item. + * @param oreDict the ore dictionary name + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerObjectTag(String oreDict, AspectList aspects) { + if (aspects==null) aspects=new AspectList(); + ArrayList ores = OreDictionary.getOres(oreDict); + if (ores!=null && ores.size()>0) { + for (ItemStack ore:ores) { + try { + objectTags.put(Arrays.asList(ore.getItem(), ore.getItemDamage()), aspects); + } catch (Exception e) {} + } + } + } + + /** + * Used to assign aspects to the given item/block. + * Attempts to automatically generate aspect tags by checking registered recipes. + * Here is an example of the declaration for pistons:

+ * ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4)); + * IMPORTANT - this should only be used if you are not happy with the default aspects the object would be assigned. + * @param item, pass OreDictionary.WILDCARD_VALUE to meta if all damage values of this item/block should have the same aspects + * @param aspects A ObjectTags object of the associated aspects + */ + public static void registerComplexObjectTag(ItemStack item, AspectList aspects ) { + if (!exists(item.getItem(),item.getItemDamage())) { + AspectList tmp = ThaumcraftApiHelper.generateTags(item.getItem(), item.getItemDamage()); + if (tmp != null && tmp.size()>0) { + for(Aspect tag:tmp.getAspects()) { + aspects.add(tag, tmp.getAmount(tag)); + } + } + registerObjectTag(item,aspects); + } else { + AspectList tmp = ThaumcraftApiHelper.getObjectAspects(item); + for(Aspect tag:aspects.getAspects()) { + tmp.merge(tag, tmp.getAmount(tag)); + } + registerObjectTag(item,tmp); + } + } + + //WARP /////////////////////////////////////////////////////////////////////////////////////// + private static HashMap warpMap = new HashMap(); + + /** + * This method is used to determine how much warp is gained if the item is crafted. The warp + * added is "sticky" warp + * @param craftresult The item crafted + * @param amount how much warp is gained + */ + public static void addWarpToItem(ItemStack craftresult, int amount) { + warpMap.put(Arrays.asList(craftresult.getItem(),craftresult.getItemDamage()),amount); + } + + /** + * This method is used to determine how much permanent warp is gained if the research is completed + * @param in The item crafted + * @param amount how much warp is gained + */ + public static void addWarpToResearch(String research, int amount) { + warpMap.put(research, amount); + } + + /** + * Returns how much warp is gained from the item or research passed in + * @param in itemstack or string + * @return how much warp it will give + */ + public static int getWarp(Object in) { + if (in==null) return 0; + if (in instanceof ItemStack && warpMap.containsKey(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()))) { + return warpMap.get(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage())); + } else + if (in instanceof String && warpMap.containsKey((String)in)) { + return warpMap.get((String)in); + } + return 0; + } + + //LOOT BAGS ////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Used to add possible loot to treasure bags. As a reference, the weight of gold coins are 2000 + * and a diamond is 50. + * The weights are the same for all loot bag types - the only difference is how many items the bag + * contains. + * @param item + * @param weight + * @param bagTypes array of which type of bag to add this loot to. Multiple types can be specified + * 0 = common, 1 = uncommon, 2 = rare + */ + public static void addLootBagItem(ItemStack item, int weight, int... bagTypes) { + if (bagTypes==null || bagTypes.length==0) + WeightedRandomLoot.lootBagCommon.add(new WeightedRandomLoot(item,weight)); + else { + for (int rarity:bagTypes) { + switch(rarity) { + case 0: WeightedRandomLoot.lootBagCommon.add(new WeightedRandomLoot(item,weight)); break; + case 1: WeightedRandomLoot.lootBagUncommon.add(new WeightedRandomLoot(item,weight)); break; + case 2: WeightedRandomLoot.lootBagRare.add(new WeightedRandomLoot(item,weight)); break; + } + } + } + } + + //CROPS ////////////////////////////////////////////////////////////////////////////////////////// + + /** + * To define mod crops you need to use FMLInterModComms in your @Mod.Init method. + * There are two 'types' of crops you can add. Standard crops and clickable crops. + * + * Standard crops work like normal vanilla crops - they grow until a certain metadata + * value is reached and you harvest them by destroying the block and collecting the blocks. + * You need to create and ItemStack that tells the golem what block id and metadata represents + * the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get + * checked. + * Example for vanilla wheat: + * FMLInterModComms.sendMessage("Thaumcraft", "harvestStandardCrop", new ItemStack(Block.crops,1,7)); + * + * Clickable crops are crops that you right click to gather their bounty instead of destroying them. + * As for standard crops, you need to create and ItemStack that tells the golem what block id + * and metadata represents the crop when fully grown. The golem will trigger the blocks onBlockActivated method. + * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. + * Example (this will technically do nothing since clicking wheat does nothing, but you get the idea): + * FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Block.crops,1,7)); + * + * Stacked crops (like reeds) are crops that you wish the bottom block should remain after harvesting. + * As for standard crops, you need to create and ItemStack that tells the golem what block id + * and metadata represents the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the actualy md won't get + * checked. If it has the order upgrade it will only harvest if the crop is more than one block high. + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "harvestStackedCrop", new ItemStack(Block.reed,1,7)); + */ + + //NATIVE CLUSTERS ////////////////////////////////////////////////////////////////////////////////// + + /** + * You can define certain ores that will have a chance to produce native clusters via FMLInterModComms + * in your @Mod.Init method using the "nativeCluster" string message. + * The format should be: + * "[ore item/block id],[ore item/block metadata],[cluster item/block id],[cluster item/block metadata],[chance modifier float]" + * + * NOTE: The chance modifier is a multiplier applied to the default chance for that cluster to be produced (default 27.5% for a pickaxe of the core) + * + * Example for vanilla iron ore to produce one of my own native iron clusters (assuming default id's) at double the default chance: + * FMLInterModComms.sendMessage("Thaumcraft", "nativeCluster","15,0,25016,16,2.0"); + */ + + //LAMP OF GROWTH BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist crops that should not be effected by the Lamp of Growth via FMLInterModComms + * in your @Mod.Init method using the "lampBlacklist" itemstack message. + * Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked. + * Example for vanilla wheat: + * FMLInterModComms.sendMessage("Thaumcraft", "lampBlacklist", new ItemStack(Block.crops,1,OreDictionary.WILDCARD_VALUE)); + */ + + //DIMENSION BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist a dimension to not spawn certain thaumcraft features + * in your @Mod.Init method using the "dimensionBlacklist" string message in the format "[dimension]:[level]" + * The level values are as follows: + * [0] stop all tc spawning and generation + * [1] allow ore and node generation (and node special features) + * [2] allow mob spawning + * [3] allow ore and node gen + mob spawning (and node special features) + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "dimensionBlacklist", "15:1"); + */ + + //BIOME BLACKLIST /////////////////////////////////////////////////////////////////////////// + /** + * You can blacklist a biome to not spawn certain thaumcraft features + * in your @Mod.Init method using the "biomeBlacklist" string message in the format "[biome id]:[level]" + * The level values are as follows: + * [0] stop all tc spawning and generation + * [1] allow ore and node generation (and node special features) + * [2] allow mob spawning + * [3] allow ore and node gen + mob spawning (and node special features) + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "biomeBlacklist", "180:2"); + */ + + //CHAMPION MOB WHITELIST /////////////////////////////////////////////////////////////////////////// + /** + * You can whitelist an entity class so it can rarely spawn champion versions in your @Mod.Init method using + * the "championWhiteList" string message in the format "[Entity]:[level]" + * The entity must extend EntityMob. + * [Entity] is in a similar format to what is used for mob spawners and such (see EntityList.class for vanilla examples). + * The [level] value indicate how rare the champion version will be - the higher the number the more common. + * The number roughly equals the [n] in 100 chance of a mob being a champion version. + * You can give 0 or negative numbers to allow champions to spawn with a very low chance only in particularly dangerous places. + * However anything less than about -2 will probably result in no spawns at all. + * Example: + * FMLInterModComms.sendMessage("Thaumcraft", "championWhiteList", "Thaumcraft.Wisp:1"); + */ +} diff --git a/src/main/java/thaumcraft/api/ThaumcraftApiHelper.java b/src/main/java/thaumcraft/api/ThaumcraftApiHelper.java new file mode 100644 index 00000000..77d55885 --- /dev/null +++ b/src/main/java/thaumcraft/api/ThaumcraftApiHelper.java @@ -0,0 +1,467 @@ +package thaumcraft.api; + +import java.util.HashMap; +import java.util.Iterator; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IEssentiaTransport; + +public class ThaumcraftApiHelper { + + public static AspectList cullTags(AspectList temp) { + AspectList temp2 = new AspectList(); + for (Aspect tag:temp.getAspects()) { + if (tag!=null) + temp2.add(tag, temp.getAmount(tag)); + } + while (temp2!=null && temp2.size()>6) { + Aspect lowest = null; + float low = Short.MAX_VALUE; + for (Aspect tag:temp2.getAspects()) { + if (tag==null) continue; + float ta=temp2.getAmount(tag); + if (tag.isPrimal()) { + ta *= .9f; + } else { + if (!tag.getComponents()[0].isPrimal()) { + ta *= 1.1f; + if (!tag.getComponents()[0].getComponents()[0].isPrimal()) { + ta *= 1.05f; + } + if (!tag.getComponents()[0].getComponents()[1].isPrimal()) { + ta *= 1.05f; + } + } + if (!tag.getComponents()[1].isPrimal()) { + ta *= 1.1f; + if (!tag.getComponents()[1].getComponents()[0].isPrimal()) { + ta *= 1.05f; + } + if (!tag.getComponents()[1].getComponents()[1].isPrimal()) { + ta *= 1.05f; + } + } + } + + if (ta allAspects= new HashMap(); + private static HashMap allCompoundAspects= new HashMap(); + + public static AspectList getAllAspects(int amount) { + if (allAspects.get(amount)==null) { + AspectList al = new AspectList(); + for (Aspect aspect:Aspect.aspects.values()) { + al.add(aspect, amount); + } + allAspects.put(amount, al); + } + return allAspects.get(amount); + } + + public static AspectList getAllCompoundAspects(int amount) { + if (allCompoundAspects.get(amount)==null) { + AspectList al = new AspectList(); + for (Aspect aspect:Aspect.getCompoundAspects()) { + al.add(aspect, amount); + } + allCompoundAspects.put(amount, al); + } + return allCompoundAspects.get(amount); + } + + + /** + * Use to subtract vis from a wand for most operations + * Wands store vis differently so "real" vis costs need to be multiplied by 100 before calling this method + * @param wand the wand itemstack + * @param player the player using the wand + * @param cost the cost of the operation. + * @param doit actually subtract the vis from the wand if true - if false just simulate the result + * @param crafting is this a crafting operation or not - if + * false then things like frugal and potency will apply to the costs + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, + AspectList cost, boolean doit, boolean crafting) { + return ThaumcraftApi.internalMethods.consumeVisFromWand(wand, player, cost, doit, crafting); + } + + /** + * Subtract vis for use by a crafting mechanic. Costs are calculated slightly + * differently and things like the frugal enchant is ignored + * Must NOT be multiplied by 100 - send the actual vis cost + * @param wand the wand itemstack + * @param player the player using the wand + * @param cost the cost of the operation. + * @param doit actually subtract the vis from the wand if true - if false just simulate the result + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromWandCrafting(ItemStack wand, EntityPlayer player, + AspectList cost, boolean doit) { + return ThaumcraftApi.internalMethods.consumeVisFromWandCrafting(wand, player, cost, doit); + } + + /** + * Subtract vis from a wand the player is carrying. Works like consumeVisFromWand in that actual vis + * costs should be multiplied by 100. The costs are handled like crafting however and things like + * frugal don't effect them + * @param player the player using the wand + * @param cost the cost of the operation. + * @return was the vis successfully subtracted + */ + public static boolean consumeVisFromInventory(EntityPlayer player, AspectList cost) { + return ThaumcraftApi.internalMethods.consumeVisFromInventory(player, cost); + } + + + /** + * This adds permanents or temporary warp to a player. It will automatically be synced clientside + * @param player the player using the wand + * @param amount how much warp to add. Negative amounts are only valid for temporary warp + * @param temporary add temporary warp instead of permanent + */ + public static void addWarpToPlayer(EntityPlayer player, int amount, boolean temporary) { + ThaumcraftApi.internalMethods.addWarpToPlayer(player, amount, temporary); + } + + /** + * This "sticky" warp to a player. Sticky warp is permanent warp that can be removed. + * It will automatically be synced clientside + * @param player the player using the wand + * @param amount how much warp to add. Can have negative amounts. + */ + public static void addStickyWarpToPlayer(EntityPlayer player, int amount) { + ThaumcraftApi.internalMethods.addStickyWarpToPlayer(player, amount); + } + + public static MovingObjectPosition rayTraceIgnoringSource(World world, Vec3 v1, Vec3 v2, + boolean bool1, boolean bool2, boolean bool3) + { + if (!Double.isNaN(v1.xCoord) && !Double.isNaN(v1.yCoord) && !Double.isNaN(v1.zCoord)) + { + if (!Double.isNaN(v2.xCoord) && !Double.isNaN(v2.yCoord) && !Double.isNaN(v2.zCoord)) + { + int i = MathHelper.floor_double(v2.xCoord); + int j = MathHelper.floor_double(v2.yCoord); + int k = MathHelper.floor_double(v2.zCoord); + int l = MathHelper.floor_double(v1.xCoord); + int i1 = MathHelper.floor_double(v1.yCoord); + int j1 = MathHelper.floor_double(v1.zCoord); + Block block = world.getBlock(l, i1, j1); + int k1 = world.getBlockMetadata(l, i1, j1); + + MovingObjectPosition movingobjectposition2 = null; + k1 = 200; + + while (k1-- >= 0) + { + if (Double.isNaN(v1.xCoord) || Double.isNaN(v1.yCoord) || Double.isNaN(v1.zCoord)) + { + return null; + } + + if (l == i && i1 == j && j1 == k) + { + continue; + } + + boolean flag6 = true; + boolean flag3 = true; + boolean flag4 = true; + double d0 = 999.0D; + double d1 = 999.0D; + double d2 = 999.0D; + + if (i > l) + { + d0 = (double)l + 1.0D; + } + else if (i < l) + { + d0 = (double)l + 0.0D; + } + else + { + flag6 = false; + } + + if (j > i1) + { + d1 = (double)i1 + 1.0D; + } + else if (j < i1) + { + d1 = (double)i1 + 0.0D; + } + else + { + flag3 = false; + } + + if (k > j1) + { + d2 = (double)j1 + 1.0D; + } + else if (k < j1) + { + d2 = (double)j1 + 0.0D; + } + else + { + flag4 = false; + } + + double d3 = 999.0D; + double d4 = 999.0D; + double d5 = 999.0D; + double d6 = v2.xCoord - v1.xCoord; + double d7 = v2.yCoord - v1.yCoord; + double d8 = v2.zCoord - v1.zCoord; + + if (flag6) + { + d3 = (d0 - v1.xCoord) / d6; + } + + if (flag3) + { + d4 = (d1 - v1.yCoord) / d7; + } + + if (flag4) + { + d5 = (d2 - v1.zCoord) / d8; + } + + boolean flag5 = false; + byte b0; + + if (d3 < d4 && d3 < d5) + { + if (i > l) + { + b0 = 4; + } + else + { + b0 = 5; + } + + v1.xCoord = d0; + v1.yCoord += d7 * d3; + v1.zCoord += d8 * d3; + } + else if (d4 < d5) + { + if (j > i1) + { + b0 = 0; + } + else + { + b0 = 1; + } + + v1.xCoord += d6 * d4; + v1.yCoord = d1; + v1.zCoord += d8 * d4; + } + else + { + if (k > j1) + { + b0 = 2; + } + else + { + b0 = 3; + } + + v1.xCoord += d6 * d5; + v1.yCoord += d7 * d5; + v1.zCoord = d2; + } + + Vec3 vec32 = Vec3.createVectorHelper(v1.xCoord, v1.yCoord, v1.zCoord); + l = (int)(vec32.xCoord = (double)MathHelper.floor_double(v1.xCoord)); + + if (b0 == 5) + { + --l; + ++vec32.xCoord; + } + + i1 = (int)(vec32.yCoord = (double)MathHelper.floor_double(v1.yCoord)); + + if (b0 == 1) + { + --i1; + ++vec32.yCoord; + } + + j1 = (int)(vec32.zCoord = (double)MathHelper.floor_double(v1.zCoord)); + + if (b0 == 3) + { + --j1; + ++vec32.zCoord; + } + + Block block1 = world.getBlock(l, i1, j1); + int l1 = world.getBlockMetadata(l, i1, j1); + + if (!bool2 || block1.getCollisionBoundingBoxFromPool(world, l, i1, j1) != null) + { + if (block1.canCollideCheck(l1, bool1)) + { + MovingObjectPosition movingobjectposition1 = block1.collisionRayTrace(world, l, i1, j1, v1, v2); + + if (movingobjectposition1 != null) + { + return movingobjectposition1; + } + } + else + { + movingobjectposition2 = new MovingObjectPosition(l, i1, j1, b0, v1, false); + } + } + } + + return bool3 ? movingobjectposition2 : null; + } + else + { + return null; + } + } + else + { + return null; + } + } +} diff --git a/src/main/java/thaumcraft/api/aspects/Aspect.java b/src/main/java/thaumcraft/api/aspects/Aspect.java new file mode 100644 index 00000000..0ea13f5e --- /dev/null +++ b/src/main/java/thaumcraft/api/aspects/Aspect.java @@ -0,0 +1,201 @@ +package thaumcraft.api.aspects; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +import org.apache.commons.lang3.text.WordUtils; + +public class Aspect { + + String tag; + Aspect[] components; + int color; + private String chatcolor; + ResourceLocation image; + int blend; + + /** + * Use this constructor to register your own aspects. + * @param tag the key that will be used to reference this aspect, as well as its latin display name + * @param color color to display the tag in + * @param components the aspects this one is formed from + * @param image ResourceLocation pointing to a 32x32 icon of the aspect + * @param blend GL11 blendmode (1 or 771). Used for rendering nodes. Default is 1 + */ + public Aspect(String tag, int color, Aspect[] components, ResourceLocation image, int blend) { + if (aspects.containsKey(tag)) throw new IllegalArgumentException(tag+" already registered!"); + this.tag = tag; + this.components = components; + this.color = color; + this.image = image; + this.blend = blend; + aspects.put(tag, this); + } + + /** + * Shortcut constructor I use for the default aspects - you shouldn't be using this. + */ + public Aspect(String tag, int color, Aspect[] components) { + this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),1); + } + + /** + * Shortcut constructor I use for the default aspects - you shouldn't be using this. + */ + public Aspect(String tag, int color, Aspect[] components, int blend) { + this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),blend); + } + + /** + * Shortcut constructor I use for the primal aspects - + * you shouldn't use this as making your own primal aspects will break all the things. + */ + public Aspect(String tag, int color, String chatcolor, int blend) { + this(tag,color,(Aspect[])null, blend); + this.setChatcolor(chatcolor); + } + + public int getColor() { + return color; + } + + public String getName() { + return WordUtils.capitalizeFully(tag); + } + + public String getLocalizedDescription() { + return StatCollector.translateToLocal("tc.aspect."+tag); + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public Aspect[] getComponents() { + return components; + } + + public void setComponents(Aspect[] components) { + this.components = components; + } + + public ResourceLocation getImage() { + return image; + } + + public static Aspect getAspect(String tag) { + return aspects.get(tag); + } + + public int getBlend() { + return blend; + } + + public void setBlend(int blend) { + this.blend = blend; + } + + public boolean isPrimal() { + return getComponents()==null || getComponents().length!=2; + } + + /////////////////////////////// + public static ArrayList getPrimalAspects() { + ArrayList primals = new ArrayList(); + Collection pa = aspects.values(); + for (Aspect aspect:pa) { + if (aspect.isPrimal()) primals.add(aspect); + } + return primals; + } + + public static ArrayList getCompoundAspects() { + ArrayList compounds = new ArrayList(); + Collection pa = aspects.values(); + for (Aspect aspect:pa) { + if (!aspect.isPrimal()) compounds.add(aspect); + } + return compounds; + } + + public String getChatcolor() { + return chatcolor; + } + + public void setChatcolor(String chatcolor) { + this.chatcolor = chatcolor; + } + + + /////////////////////////////// + public static LinkedHashMap aspects = new LinkedHashMap(); + + //PRIMAL + public static final Aspect AIR = new Aspect("aer",0xffff7e,"e",1); + public static final Aspect EARTH = new Aspect("terra",0x56c000,"2",1); + public static final Aspect FIRE = new Aspect("ignis",0xff5a01,"c",1); + public static final Aspect WATER = new Aspect("aqua",0x3cd4fc,"3",1); + public static final Aspect ORDER = new Aspect("ordo",0xd5d4ec,"7",1); + public static final Aspect ENTROPY = new Aspect("perditio",0x404040,"8",771); + + //SECONDARY + public static final Aspect VOID = new Aspect("vacuos",0x888888, new Aspect[] {AIR, ENTROPY},771); + public static final Aspect LIGHT = new Aspect("lux",0xfff663, new Aspect[] {AIR, FIRE}); + public static final Aspect WEATHER = new Aspect("tempestas",0xFFFFFF, new Aspect[] {AIR, WATER}); + public static final Aspect MOTION = new Aspect("motus",0xcdccf4, new Aspect[] {AIR, ORDER}); + public static final Aspect COLD = new Aspect("gelum",0xe1ffff, new Aspect[] {FIRE, ENTROPY}); + public static final Aspect CRYSTAL = new Aspect("vitreus",0x80ffff, new Aspect[] {EARTH, ORDER}); + public static final Aspect LIFE = new Aspect("victus",0xde0005, new Aspect[] {WATER, EARTH}); + public static final Aspect POISON = new Aspect("venenum",0x89f000, new Aspect[] {WATER, ENTROPY}); + public static final Aspect ENERGY = new Aspect("potentia",0xc0ffff, new Aspect[] {ORDER, FIRE}); + public static final Aspect EXCHANGE = new Aspect("permutatio",0x578357, new Aspect[] {ENTROPY, ORDER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {AIR, EARTH}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, EARTH}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, WATER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {ORDER, WATER}); +// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {EARTH, ENTROPY}); + + //TERTIARY + public static final Aspect METAL = new Aspect("metallum",0xb5b5cd, new Aspect[] {EARTH, CRYSTAL}); + public static final Aspect DEATH = new Aspect("mortuus",0x887788, new Aspect[] {LIFE, ENTROPY}); + public static final Aspect FLIGHT = new Aspect("volatus",0xe7e7d7, new Aspect[] {AIR, MOTION}); + public static final Aspect DARKNESS = new Aspect("tenebrae",0x222222, new Aspect[] {VOID, LIGHT}); + public static final Aspect SOUL = new Aspect("spiritus",0xebebfb, new Aspect[] {LIFE, DEATH}); + public static final Aspect HEAL = new Aspect("sano",0xff2f34, new Aspect[] {LIFE, ORDER}); + public static final Aspect TRAVEL = new Aspect("iter",0xe0585b, new Aspect[] {MOTION, EARTH}); + public static final Aspect ELDRITCH = new Aspect("alienis",0x805080, new Aspect[] {VOID, DARKNESS}); + public static final Aspect MAGIC = new Aspect("praecantatio",0x9700c0, new Aspect[] {VOID, ENERGY}); + public static final Aspect AURA = new Aspect("auram",0xffc0ff, new Aspect[] {MAGIC, AIR}); + public static final Aspect TAINT = new Aspect("vitium",0x800080, new Aspect[] {MAGIC, ENTROPY}); + public static final Aspect SLIME = new Aspect("limus",0x01f800, new Aspect[] {LIFE, WATER}); + public static final Aspect PLANT = new Aspect("herba",0x01ac00, new Aspect[] {LIFE, EARTH}); + public static final Aspect TREE = new Aspect("arbor",0x876531, new Aspect[] {AIR, PLANT}); + public static final Aspect BEAST = new Aspect("bestia",0x9f6409, new Aspect[] {MOTION, LIFE}); + public static final Aspect FLESH = new Aspect("corpus",0xee478d, new Aspect[] {DEATH, BEAST}); + public static final Aspect UNDEAD = new Aspect("exanimis",0x3a4000, new Aspect[] {MOTION, DEATH}); + public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {FIRE, SOUL}); + public static final Aspect SENSES = new Aspect("sensus",0x0fd9ff, new Aspect[] {AIR, SOUL}); + public static final Aspect MAN = new Aspect("humanus",0xffd7c0, new Aspect[] {BEAST, MIND}); + public static final Aspect CROP = new Aspect("messis",0xe1b371, new Aspect[] {PLANT, MAN}); + public static final Aspect MINE = new Aspect("perfodio",0xdcd2d8, new Aspect[] {MAN, EARTH}); + public static final Aspect TOOL = new Aspect("instrumentum",0x4040ee, new Aspect[] {MAN, ORDER}); + public static final Aspect HARVEST = new Aspect("meto",0xeead82, new Aspect[] {CROP, TOOL}); + public static final Aspect WEAPON = new Aspect("telum",0xc05050, new Aspect[] {TOOL, FIRE}); + public static final Aspect ARMOR = new Aspect("tutamen",0x00c0c0, new Aspect[] {TOOL, EARTH}); + public static final Aspect HUNGER = new Aspect("fames",0x9a0305, new Aspect[] {LIFE, VOID}); + public static final Aspect GREED = new Aspect("lucrum",0xe6be44, new Aspect[] {MAN, HUNGER}); + public static final Aspect CRAFT = new Aspect("fabrico",0x809d80, new Aspect[] {MAN, TOOL}); + public static final Aspect CLOTH = new Aspect("pannus",0xeaeac2, new Aspect[] {TOOL, BEAST}); + public static final Aspect MECHANISM = new Aspect("machina",0x8080a0, new Aspect[] {MOTION, TOOL}); + public static final Aspect TRAP = new Aspect("vinculum",0x9a8080, new Aspect[] {MOTION, ENTROPY}); + + +} diff --git a/src/main/java/thaumcraft/api/aspects/AspectList.java b/src/main/java/thaumcraft/api/aspects/AspectList.java new file mode 100644 index 00000000..b5781410 --- /dev/null +++ b/src/main/java/thaumcraft/api/aspects/AspectList.java @@ -0,0 +1,292 @@ +package thaumcraft.api.aspects; + +import java.io.Serializable; +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import thaumcraft.api.ThaumcraftApiHelper; + +public class AspectList implements Serializable { + + public LinkedHashMap aspects = new LinkedHashMap();//aspects associated with this object + + + /** + * this creates a new aspect list with preloaded values based off the aspects of the given item. + * @param the itemstack of the given item + */ + public AspectList(ItemStack stack) { + try { + AspectList temp = ThaumcraftApiHelper.getObjectAspects(stack); + if (temp!=null) + for (Aspect tag:temp.getAspects()) { + add(tag,temp.getAmount(tag)); + } + } catch (Exception e) {} + } + + public AspectList() { + } + + public AspectList copy() { + AspectList out = new AspectList(); + for (Aspect a:this.getAspects()) + out.add(a, this.getAmount(a)); + return out; + } + + /** + * @return the amount of different aspects in this collection + */ + public int size() { + return aspects.size(); + } + + /** + * @return the amount of total vis in this collection + */ + public int visSize() { + int q = 0; + + for (Aspect as:aspects.keySet()) { + q+=this.getAmount(as); + } + + return q; + } + + /** + * @return an array of all the aspects in this collection + */ + public Aspect[] getAspects() { + Aspect[] q = new Aspect[1]; + return aspects.keySet().toArray(q); + } + + /** + * @return an array of all the aspects in this collection + */ + public Aspect[] getPrimalAspects() { + AspectList t = new AspectList(); + for (Aspect as:aspects.keySet()) { + if (as.isPrimal()) { + t.add(as,1); + } + } + Aspect[] q = new Aspect[1]; + return t.aspects.keySet().toArray(q); + } + + /** + * @return an array of all the aspects in this collection sorted by name + */ + public Aspect[] getAspectsSorted() { + try { + Aspect[] out = aspects.keySet().toArray(new Aspect[]{}); + boolean change=false; + do { + change=false; + for(int a=0;a0) { + out[a] = e2; + out[a+1] = e1; + change = true; + break; + } + } + } while (change==true); + return out; + } catch (Exception e) { + return this.getAspects(); + } + } + + /** + * @return an array of all the aspects in this collection sorted by amount + */ + public Aspect[] getAspectsSortedAmount() { + try { + Aspect[] out = aspects.keySet().toArray(new Aspect[1]); + boolean change=false; + do { + change=false; + for(int a=0;a0 && e2>0 && e2>e1) { + Aspect ea = out[a]; + Aspect eb = out[a+1]; + out[a] = eb; + out[a+1] = ea; + change = true; + break; + } + } + } while (change==true); + return out; + } catch (Exception e) { + return this.getAspects(); + } + } + + /** + * @param key + * @return the amount associated with the given aspect in this collection + */ + public int getAmount(Aspect key) { + return aspects.get(key)==null?0:aspects.get(key); + } + + /** + * Reduces the amount of an aspect in this collection by the given amount. + * @param key + * @param amount + * @return + */ + public boolean reduce(Aspect key, int amount) { + if (getAmount(key)>=amount) { + int am = getAmount(key)-amount; + aspects.put(key, am); + return true; + } + return false; + } + + /** + * Reduces the amount of an aspect in this collection by the given amount. + * If reduced to 0 or less the aspect will be removed completely. + * @param key + * @param amount + * @return + */ + public AspectList remove(Aspect key, int amount) { + int am = getAmount(key)-amount; + if (am<=0) aspects.remove(key); else + this.aspects.put(key, am); + return this; + } + + /** + * Simply removes the aspect from the list + * @param key + * @param amount + * @return + */ + public AspectList remove(Aspect key) { + aspects.remove(key); + return this; + } + + /** + * Adds this aspect and amount to the collection. + * If the aspect exists then its value will be increased by the given amount. + * @param aspect + * @param amount + * @return + */ + public AspectList add(Aspect aspect, int amount) { + if (this.aspects.containsKey(aspect)) { + int oldamount = this.aspects.get(aspect); + amount+=oldamount; + } + this.aspects.put( aspect, amount ); + return this; + } + + + /** + * Adds this aspect and amount to the collection. + * If the aspect exists then only the highest of the old or new amount will be used. + * @param aspect + * @param amount + * @return + */ + public AspectList merge(Aspect aspect, int amount) { + if (this.aspects.containsKey(aspect)) { + int oldamount = this.aspects.get(aspect); + if (amount0?aspects:null; + } + return null; + } + + @Override + public void setAspects(ItemStack itemstack, AspectList aspects) { + if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound()); + aspects.writeToNBT(itemstack.getTagCompound()); + } +*/ \ No newline at end of file diff --git a/src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java b/src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java new file mode 100644 index 00000000..fecbc160 --- /dev/null +++ b/src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java @@ -0,0 +1,100 @@ +package thaumcraft.api.aspects; + +import net.minecraftforge.common.util.ForgeDirection; + + +/** + * @author Azanor + * This interface is used by tiles that use or transport vis. + * Only tiles that implement this interface will be able to connect to vis conduits or other thaumic devices + */ +public interface IEssentiaTransport { + /** + * Is this tile able to connect to other vis users/sources on the specified side? + * @param face + * @return + */ + public boolean isConnectable(ForgeDirection face); + + /** + * Is this side used to input essentia? + * @param face + * @return + */ + boolean canInputFrom(ForgeDirection face); + + /** + * Is this side used to output essentia? + * @param face + * @return + */ + boolean canOutputTo(ForgeDirection face); + + /** + * Sets the amount of suction this block will apply + * @param suction + */ + public void setSuction(Aspect aspect, int amount); + + /** + * Returns the type of suction this block is applying. + * @param loc + * the location from where the suction is being checked + * @return + * a return type of null indicates the suction is untyped and the first thing available will be drawn + */ + public Aspect getSuctionType(ForgeDirection face); + + /** + * Returns the strength of suction this block is applying. + * @param loc + * the location from where the suction is being checked + * @return + */ + public int getSuctionAmount(ForgeDirection face); + + /** + * remove the specified amount of essentia from this transport tile + * @return how much was actually taken + */ + public int takeEssentia(Aspect aspect, int amount, ForgeDirection face); + + /** + * add the specified amount of essentia to this transport tile + * @return how much was actually added + */ + public int addEssentia(Aspect aspect, int amount, ForgeDirection face); + + /** + * What type of essentia this contains + * @param face + * @return + */ + public Aspect getEssentiaType(ForgeDirection face); + + /** + * How much essentia this block contains + * @param face + * @return + */ + public int getEssentiaAmount(ForgeDirection face); + + + + /** + * Essentia will not be drawn from this container unless the suction exceeds this amount. + * @return the amount + */ + public int getMinimumSuction(); + + /** + * Return true if you want the conduit to extend a little further into the block. + * Used by jars and alembics that have smaller than normal hitboxes + * @return + */ + boolean renderExtendedTube(); + + + +} + diff --git a/src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java b/src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java new file mode 100644 index 00000000..595b6e53 --- /dev/null +++ b/src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java @@ -0,0 +1,91 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class CrucibleRecipe { + + private ItemStack recipeOutput; + + public Object catalyst; + public AspectList aspects; + public String key; + + public int hash; + + public CrucibleRecipe(String researchKey, ItemStack result, Object cat, AspectList tags) { + recipeOutput = result; + this.aspects = tags; + this.key = researchKey; + this.catalyst = cat; + if (cat instanceof String) { + this.catalyst = OreDictionary.getOres((String) cat); + } + String hc = researchKey + result.toString(); + for (Aspect tag:tags.getAspects()) { + hc += tag.getTag()+tags.getAmount(tag); + } + if (cat instanceof ItemStack) { + hc += ((ItemStack)cat).toString(); + } else + if (cat instanceof ArrayList && ((ArrayList)catalyst).size()>0) { + for (ItemStack is :(ArrayList)catalyst) { + hc += is.toString(); + } + } + + hash = hc.hashCode(); + } + + + + public boolean matches(AspectList itags, ItemStack cat) { + if (catalyst instanceof ItemStack && + !ThaumcraftApiHelper.itemMatches((ItemStack) catalyst,cat,false)) { + return false; + } else + if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { + ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); + if (!ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return false; + } + if (itags==null) return false; + for (Aspect tag:aspects.getAspects()) { + if (itags.getAmount(tag))catalyst).size()>0) { + ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); + if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return true; + } + return false; + } + + public AspectList removeMatching(AspectList itags) { + AspectList temptags = new AspectList(); + temptags.aspects.putAll(itags.aspects); + + for (Aspect tag:aspects.getAspects()) { + temptags.remove(tag, aspects.getAmount(tag)); + } + + itags = temptags; + return itags; + } + + public ItemStack getRecipeOutput() { + return recipeOutput; + } + + +} diff --git a/src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java b/src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java new file mode 100644 index 00000000..bb5036d2 --- /dev/null +++ b/src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java @@ -0,0 +1,35 @@ +package thaumcraft.api.crafting; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import thaumcraft.api.aspects.AspectList; + +public interface IArcaneRecipe +{ + + + /** + * Used to check if a recipe matches current crafting inventory + * @param player + */ + boolean matches(IInventory var1, World world, EntityPlayer player); + + /** + * Returns an Item that is the result of this recipe + */ + ItemStack getCraftingResult(IInventory var1); + + /** + * Returns the size of the recipe area + */ + int getRecipeSize(); + + ItemStack getRecipeOutput(); + AspectList getAspects(); + AspectList getAspects(IInventory var1); + String getResearch(); + + +} diff --git a/src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java b/src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java new file mode 100644 index 00000000..d137ff24 --- /dev/null +++ b/src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java @@ -0,0 +1,19 @@ +package thaumcraft.api.crafting; + +import net.minecraft.world.World; + +/** + * + * @author Azanor + * + * Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls + * + */ +public interface IInfusionStabiliser { + + /** + * returns true if the block can stabilise things + */ + public boolean canStabaliseInfusion(World world, int x, int y, int z); + +} diff --git a/src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java new file mode 100644 index 00000000..bdc5f505 --- /dev/null +++ b/src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java @@ -0,0 +1,154 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class InfusionEnchantmentRecipe +{ + + public AspectList aspects; + public String research; + public ItemStack[] components; + public Enchantment enchantment; + public int recipeXP; + public int instability; + + public InfusionEnchantmentRecipe(String research, Enchantment input, int inst, + AspectList aspects2, ItemStack[] recipe) { + this.research = research; + this.enchantment = input; + this.aspects = aspects2; + this.components = recipe; + this.instability = inst; + this.recipeXP = Math.max(1, input.getMinEnchantability(1)/3); + } + + /** + * Used to check if a recipe matches current crafting inventory + * @param player + */ + public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player) { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + if (!enchantment.canApply(central) || !central.getItem().isItemTool(central)) { + return false; + } + + Map map1 = EnchantmentHelper.getEnchantments(central); + Iterator iterator = map1.keySet().iterator(); + while (iterator.hasNext()) + { + int j1 = ((Integer)iterator.next()).intValue(); + Enchantment ench = Enchantment.enchantmentsList[j1]; + if (j1 == enchantment.effectId && + EnchantmentHelper.getEnchantmentLevel(j1, central)>=ench.getMaxLevel()) + return false; + if (enchantment.effectId != ench.effectId && + (!enchantment.canApplyTogether(ench) || + !ench.canApplyTogether(enchantment))) { + return false; + } + } + + ItemStack i2 = null; + + ArrayList ii = new ArrayList(); + for (ItemStack is:input) { + ii.add(is.copy()); + } + + for (ItemStack comp:components) { + boolean b=false; + for (int a=0;a input, ItemStack central, World world, EntityPlayer player) { + if (getRecipeInput()==null) return false; + + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + ItemStack i2 = central.copy(); + if (getRecipeInput().getItemDamage()==OreDictionary.WILDCARD_VALUE) { + i2.setItemDamage(OreDictionary.WILDCARD_VALUE); + } + + if (!areItemStacksEqual(i2, getRecipeInput(), true)) return false; + + ArrayList ii = new ArrayList(); + for (ItemStack is:input) { + ii.add(is.copy()); + } + + for (ItemStack comp:getComponents()) { + boolean b=false; + for (int a=0;a itemMap = new HashMap(); + + for (; idx < recipe.length; idx += 2) + { + Character chr = (Character)recipe[idx]; + Object in = recipe[idx + 1]; + + if (in instanceof ItemStack) + { + itemMap.put(chr, ((ItemStack)in).copy()); + } + else if (in instanceof Item) + { + itemMap.put(chr, new ItemStack((Item)in)); + } + else if (in instanceof Block) + { + itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE)); + } + else if (in instanceof String) + { + itemMap.put(chr, OreDictionary.getOres((String)in)); + } + else + { + String ret = "Invalid shaped ore recipe: "; + for (Object tmp : recipe) + { + ret += tmp + ", "; + } + ret += output; + throw new RuntimeException(ret); + } + } + + input = new Object[width * height]; + int x = 0; + for (char chr : shape.toCharArray()) + { + input[x++] = itemMap.get(chr); + } + } + + @Override + public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } + + @Override + public int getRecipeSize(){ return input.length; } + + @Override + public ItemStack getRecipeOutput(){ return output; } + + @Override + public boolean matches(IInventory inv, World world, EntityPlayer player) + { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + for (int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++) + { + for (int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y) + { + if (checkMatch(inv, x, y, false)) + { + return true; + } + + if (mirrored && checkMatch(inv, x, y, true)) + { + return true; + } + } + } + + return false; + } + + private boolean checkMatch(IInventory inv, int startX, int startY, boolean mirror) + { + for (int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++) + { + for (int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++) + { + int subX = x - startX; + int subY = y - startY; + Object target = null; + + if (subX >= 0 && subY >= 0 && subX < width && subY < height) + { + if (mirror) + { + target = input[width - subX - 1 + subY * width]; + } + else + { + target = input[subX + subY * width]; + } + } + + ItemStack slot = ThaumcraftApiHelper.getStackInRowAndColumn(inv, x, y); + + if (target instanceof ItemStack) + { + if (!checkItemEquals((ItemStack)target, slot)) + { + return false; + } + } + else if (target instanceof ArrayList) + { + boolean matched = false; + + for (ItemStack item : (ArrayList)target) + { + matched = matched || checkItemEquals(item, slot); + } + + if (!matched) + { + return false; + } + } + else if (target == null && slot != null) + { + return false; + } + } + } + + return true; + } + + private boolean checkItemEquals(ItemStack target, ItemStack input) + { + if (input == null && target != null || input != null && target == null) + { + return false; + } + return (target.getItem() == input.getItem() && + (!target.hasTagCompound() || ThaumcraftApiHelper.areItemStackTagsEqualForCrafting(input,target)) && + (target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage())); + } + + public ShapedArcaneRecipe setMirrored(boolean mirror) + { + mirrored = mirror; + return this; + } + + /** + * Returns the input for this recipe, any mod accessing this value should never + * manipulate the values in this array as it will effect the recipe itself. + * @return The recipes input vales. + */ + public Object[] getInput() + { + return this.input; + } + + @Override + public AspectList getAspects() { + return aspects; + } + + @Override + public AspectList getAspects(IInventory inv) { + return aspects; + } + + @Override + public String getResearch() { + return research; + } +} diff --git a/src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java new file mode 100644 index 00000000..3b1eaeb8 --- /dev/null +++ b/src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java @@ -0,0 +1,161 @@ +package thaumcraft.api.crafting; + +import java.util.ArrayList; +import java.util.Iterator; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.AspectList; + +public class ShapelessArcaneRecipe implements IArcaneRecipe +{ + private ItemStack output = null; + private ArrayList input = new ArrayList(); + + public AspectList aspects = null; + public String research; + + public ShapelessArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } + public ShapelessArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe){ this(research,new ItemStack(result),aspects, recipe); } + + public ShapelessArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe) + { + output = result.copy(); + this.research = research; + this.aspects = aspects; + for (Object in : recipe) + { + if (in instanceof ItemStack) + { + input.add(((ItemStack)in).copy()); + } + else if (in instanceof Item) + { + input.add(new ItemStack((Item)in)); + } + else if (in instanceof Block) + { + input.add(new ItemStack((Block)in)); + } + else if (in instanceof String) + { + input.add(OreDictionary.getOres((String)in)); + } + else + { + String ret = "Invalid shapeless ore recipe: "; + for (Object tmp : recipe) + { + ret += tmp + ", "; + } + ret += output; + throw new RuntimeException(ret); + } + } + } + + @Override + public int getRecipeSize(){ return input.size(); } + + @Override + public ItemStack getRecipeOutput(){ return output; } + + @Override + public ItemStack getCraftingResult(IInventory var1){ return output.copy(); } + + @Override + public boolean matches(IInventory var1, World world, EntityPlayer player) + { + if (research.length()>0 && !ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), research)) { + return false; + } + + ArrayList required = new ArrayList(input); + + for (int x = 0; x < 9; x++) + { + ItemStack slot = var1.getStackInSlot(x); + + if (slot != null) + { + boolean inRecipe = false; + Iterator req = required.iterator(); + + while (req.hasNext()) + { + boolean match = false; + + Object next = req.next(); + + if (next instanceof ItemStack) + { + match = checkItemEquals((ItemStack)next, slot); + } + else if (next instanceof ArrayList) + { + for (ItemStack item : (ArrayList)next) + { + match = match || checkItemEquals(item, slot); + } + } + + if (match) + { + inRecipe = true; + required.remove(next); + break; + } + } + + if (!inRecipe) + { + return false; + } + } + } + + return required.isEmpty(); + } + + private boolean checkItemEquals(ItemStack target, ItemStack input) + { + if (input == null && target != null || input != null && target == null) + { + return false; + } + return (target.getItem() == input.getItem() && + (!target.hasTagCompound() || ThaumcraftApiHelper.areItemStackTagsEqualForCrafting(input,target)) && + (target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage())); + } + + /** + * Returns the input for this recipe, any mod accessing this value should never + * manipulate the values in this array as it will effect the recipe itself. + * @return The recipes input vales. + */ + public ArrayList getInput() + { + return this.input; + } + + @Override + public AspectList getAspects() { + return aspects; + } + + @Override + public AspectList getAspects(IInventory inv) { + return aspects; + } + + @Override + public String getResearch() { + return research; + } +} diff --git a/src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java b/src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java new file mode 100644 index 00000000..9af8c30e --- /dev/null +++ b/src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java @@ -0,0 +1,78 @@ +package thaumcraft.api.internal; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class DummyInternalMethodHandler implements IInternalMethodHandler { + + @Override + public void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color) { + + } + + @Override + public boolean isResearchComplete(String username, String researchkey) { + return false; + } + + @Override + public boolean hasDiscoveredAspect(String username, Aspect aspect) { + return false; + } + + @Override + public AspectList getDiscoveredAspects(String username) { + return null; + } + + @Override + public ItemStack getStackInRowAndColumn(Object instance, int row, int column) { + return null; + } + + @Override + public AspectList getObjectAspects(ItemStack is) { + return null; + } + + @Override + public AspectList getBonusObjectTags(ItemStack is, AspectList ot) { + return null; + } + + @Override + public AspectList generateTags(Item item, int meta) { + return null; + } + + @Override + public boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, + AspectList cost, boolean doit, boolean crafting) { + return false; + } + + @Override + public boolean consumeVisFromWandCrafting(ItemStack wand, + EntityPlayer player, AspectList cost, boolean doit) { + return false; + } + + @Override + public boolean consumeVisFromInventory(EntityPlayer player, AspectList cost) { + return false; + } + + @Override + public void addWarpToPlayer(EntityPlayer player, int amount, boolean temporary) { + } + + @Override + public void addStickyWarpToPlayer(EntityPlayer player, int amount) { + } + + + +} diff --git a/src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java b/src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java new file mode 100644 index 00000000..73fce669 --- /dev/null +++ b/src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java @@ -0,0 +1,25 @@ +package thaumcraft.api.internal; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public interface IInternalMethodHandler { + + public void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color); + public boolean isResearchComplete(String username, String researchkey); + public ItemStack getStackInRowAndColumn(Object instance, int row, int column); + public AspectList getObjectAspects(ItemStack is); + public AspectList getBonusObjectTags(ItemStack is,AspectList ot); + public AspectList generateTags(Item item, int meta); + public boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, AspectList cost, boolean doit, boolean crafting); + public boolean consumeVisFromWandCrafting(ItemStack wand,EntityPlayer player, AspectList cost, boolean doit); + public boolean consumeVisFromInventory(EntityPlayer player, AspectList cost); + public void addWarpToPlayer(EntityPlayer player, int amount,boolean temporary); + public void addStickyWarpToPlayer(EntityPlayer player, int amount); + public boolean hasDiscoveredAspect(String username, Aspect aspect); + public AspectList getDiscoveredAspects(String username); + +} diff --git a/src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java b/src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java new file mode 100644 index 00000000..4ac6ee7d --- /dev/null +++ b/src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java @@ -0,0 +1,24 @@ +package thaumcraft.api.internal; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.WeightedRandom; + + +public class WeightedRandomLoot extends WeightedRandom.Item { + + /** The Item/Block ID to generate in the bag. */ + public ItemStack item; + + public WeightedRandomLoot(ItemStack stack, int weight) + { + super(weight); + this.item = stack; + } + + public static ArrayList lootBagCommon = new ArrayList(); + public static ArrayList lootBagUncommon = new ArrayList(); + public static ArrayList lootBagRare = new ArrayList(); + +} diff --git a/src/main/java/thaumcraft/api/package-info.java b/src/main/java/thaumcraft/api/package-info.java new file mode 100644 index 00000000..cceaf891 --- /dev/null +++ b/src/main/java/thaumcraft/api/package-info.java @@ -0,0 +1,4 @@ +@API(owner = "Thaumcraft", apiVersion = "4.2.2.0", provides = "Thaumcraft|API") +package thaumcraft.api; + +import cpw.mods.fml.common.API; diff --git a/src/main/java/thaumcraft/api/research/IScanEventHandler.java b/src/main/java/thaumcraft/api/research/IScanEventHandler.java new file mode 100644 index 00000000..d0efac5f --- /dev/null +++ b/src/main/java/thaumcraft/api/research/IScanEventHandler.java @@ -0,0 +1,9 @@ +package thaumcraft.api.research; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public interface IScanEventHandler { + ScanResult scanPhenomena(ItemStack stack, World world, EntityPlayer player); +} diff --git a/src/main/java/thaumcraft/api/research/ResearchCategories.java b/src/main/java/thaumcraft/api/research/ResearchCategories.java new file mode 100644 index 00000000..82309b36 --- /dev/null +++ b/src/main/java/thaumcraft/api/research/ResearchCategories.java @@ -0,0 +1,101 @@ +package thaumcraft.api.research; + +import java.util.Collection; +import java.util.LinkedHashMap; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +import org.apache.logging.log4j.Level; + +import cpw.mods.fml.common.FMLLog; + +public class ResearchCategories { + + //Research + public static LinkedHashMap researchCategories = new LinkedHashMap (); + + /** + * @param key + * @return the research item linked to this key + */ + public static ResearchCategoryList getResearchList(String key) { + return researchCategories.get(key); + } + + /** + * @param key + * @return the name of the research category linked to this key. + * Must be stored as localization information in the LanguageRegistry. + */ + public static String getCategoryName(String key) { + return StatCollector.translateToLocal("tc.research_category."+key); + } + + /** + * @param key the research key + * @return the ResearchItem object. + */ + public static ResearchItem getResearch(String key) { + Collection rc = researchCategories.values(); + for (Object cat:rc) { + Collection rl = ((ResearchCategoryList)cat).research.values(); + for (Object ri:rl) { + if ((((ResearchItem)ri).key).equals(key)) return (ResearchItem)ri; + } + } + return null; + } + + /** + * This should only be done at the PostInit stage + * @param key the key used for this category + * @param icon the icon to be used for the research category tab + * @param background the resource location of the background image to use for this category + * @return the name of the research linked to this key + */ + public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) { + if (getResearchList(key)==null) { + ResearchCategoryList rl = new ResearchCategoryList(icon, background); + researchCategories.put(key, rl); + } + } + + public static void addResearch(ResearchItem ri) { + ResearchCategoryList rl = getResearchList(ri.category); + if (rl!=null && !rl.research.containsKey(ri.key)) { + + if (!ri.isVirtual()) { + for (ResearchItem rr:rl.research.values()) { + if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) { + FMLLog.log(Level.FATAL, "[Thaumcraft] Research ["+ri.getName()+"] not added as it overlaps with existing research ["+rr.getName()+"]"); + return; + } + } + } + + + rl.research.put(ri.key, ri); + + if (ri.displayColumn < rl.minDisplayColumn) + { + rl.minDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow < rl.minDisplayRow) + { + rl.minDisplayRow = ri.displayRow; + } + + if (ri.displayColumn > rl.maxDisplayColumn) + { + rl.maxDisplayColumn = ri.displayColumn; + } + + if (ri.displayRow > rl.maxDisplayRow) + { + rl.maxDisplayRow = ri.displayRow; + } + } + } +} diff --git a/src/main/java/thaumcraft/api/research/ResearchCategoryList.java b/src/main/java/thaumcraft/api/research/ResearchCategoryList.java new file mode 100644 index 00000000..7eed0101 --- /dev/null +++ b/src/main/java/thaumcraft/api/research/ResearchCategoryList.java @@ -0,0 +1,37 @@ +package thaumcraft.api.research; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.util.ResourceLocation; + +public class ResearchCategoryList { + + /** Is the smallest column used on the GUI. */ + public int minDisplayColumn; + + /** Is the smallest row used on the GUI. */ + public int minDisplayRow; + + /** Is the biggest column used on the GUI. */ + public int maxDisplayColumn; + + /** Is the biggest row used on the GUI. */ + public int maxDisplayRow; + + /** display variables **/ + public ResourceLocation icon; + public ResourceLocation background; + + public ResearchCategoryList(ResourceLocation icon, ResourceLocation background) { + this.icon = icon; + this.background = background; + } + + //Research + public Map research = new HashMap(); + + + + +} diff --git a/src/main/java/thaumcraft/api/research/ResearchItem.java b/src/main/java/thaumcraft/api/research/ResearchItem.java new file mode 100644 index 00000000..1d5fd8bf --- /dev/null +++ b/src/main/java/thaumcraft/api/research/ResearchItem.java @@ -0,0 +1,369 @@ +package thaumcraft.api.research; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; + +public class ResearchItem +{ + /** + * A short string used as a key for this research. Must be unique + */ + public final String key; + + /** + * A short string used as a reference to the research category to which this must be added. + */ + public final String category; + + /** + * The aspect tags and their values required to complete this research + */ + public final AspectList tags; + + /** + * This links to any research that needs to be completed before this research can be discovered or learnt. + */ + public String[] parents = null; + + /** + * Like parent above, but a line will not be displayed in the thaumonomicon linking them. Just used to prevent clutter. + */ + public String[] parentsHidden = null; + /** + * any research linked to this that will be unlocked automatically when this research is complete + */ + public String[] siblings = null; + + /** + * the horizontal position of the research icon + */ + public final int displayColumn; + + /** + * the vertical position of the research icon + */ + public final int displayRow; + + /** + * the icon to be used for this research + */ + public final ItemStack icon_item; + + /** + * the icon to be used for this research + */ + public final ResourceLocation icon_resource; + + /** + * How large the research grid is. Valid values are 1 to 3. + */ + private int complexity; + + /** + * Special research has a spiky border. Used for important research milestones. + */ + private boolean isSpecial; + + /** + * Research that can be directly purchased with RP in normal research difficulty. + */ + private boolean isSecondary; + + /** + * This indicates if the research should use a circular icon border. Usually used for "passive" research + * that doesn't have recipes and grants passive effects, or that unlock automatically. + */ + private boolean isRound; + + /** + * Stub research cannot be discovered by normal means, but can be unlocked via the sibling system. + */ + private boolean isStub; + + /** + * This indicated that the research is completely hidden and cannot be discovered by any + * player-controlled means. The recipes will never show up in the thaumonomicon. + * Usually used to unlock "hidden" recipes via sibling unlocking, like + * the various cap and rod combos for wands. + */ + private boolean isVirtual; + + + + /** + * Concealed research does not display in the thaumonomicon until parent researches are discovered. + */ + private boolean isConcealed; + + /** + * Hidden research can only be discovered via scanning or knowledge fragments + */ + private boolean isHidden; + + /** + * This is the same as isHidden, except it cannot be discovered with knowledge fragments, only scanning. + */ + private boolean isLost; + + /** + * These research items will automatically unlock for all players on game start + */ + private boolean isAutoUnlock; + + /** + * Scanning these items will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private ItemStack[] itemTriggers; + + /** + * Scanning these entities will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private String[] entityTriggers; + + /** + * Scanning things with these aspects will have a chance of revealing hidden knowledge in the thaumonomicon + */ + private Aspect[] aspectTriggers; + + private ResearchPage[] pages = null; + + public ResearchItem(String key, String category) + { + this.key = key; + this.category = category; + this.tags = new AspectList(); + this.icon_resource = null; + this.icon_item = null; + this.displayColumn = 0; + this.displayRow = 0; + this.setVirtual(); + + } + + public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ResourceLocation icon) + { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_resource = icon; + this.icon_item = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (complexity < 1) this.complexity = 1; + if (complexity > 3) this.complexity = 3; + } + + public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, ItemStack icon) + { + this.key = key; + this.category = category; + this.tags = tags; + this.icon_item = icon; + this.icon_resource = null; + this.displayColumn = col; + this.displayRow = row; + this.complexity = complex; + if (complexity < 1) this.complexity = 1; + if (complexity > 3) this.complexity = 3; + } + + public ResearchItem setSpecial() + { + this.isSpecial = true; + return this; + } + + public ResearchItem setStub() + { + this.isStub = true; + return this; + } + + public ResearchItem setLost() + { + this.isLost = true; + return this; + } + + public ResearchItem setConcealed() + { + this.isConcealed = true; + return this; + } + + public ResearchItem setHidden() + { + this.isHidden = true; + return this; + } + + public ResearchItem setVirtual() + { + this.isVirtual = true; + return this; + } + + public ResearchItem setParents(String... par) + { + this.parents = par; + return this; + } + + + + public ResearchItem setParentsHidden(String... par) + { + this.parentsHidden = par; + return this; + } + + public ResearchItem setSiblings(String... sib) + { + this.siblings = sib; + return this; + } + + public ResearchItem setPages(ResearchPage... par) + { + this.pages = par; + return this; + } + + public ResearchPage[] getPages() { + return pages; + } + + public ResearchItem setItemTriggers(ItemStack... par) + { + this.itemTriggers = par; + return this; + } + + public ResearchItem setEntityTriggers(String... par) + { + this.entityTriggers = par; + return this; + } + + public ResearchItem setAspectTriggers(Aspect... par) + { + this.aspectTriggers = par; + return this; + } + + public ItemStack[] getItemTriggers() { + return itemTriggers; + } + + public String[] getEntityTriggers() { + return entityTriggers; + } + + public Aspect[] getAspectTriggers() { + return aspectTriggers; + } + + public ResearchItem registerResearchItem() + { + ResearchCategories.addResearch(this); + return this; + } + + public String getName() + { + return StatCollector.translateToLocal("tc.research_name."+key); + } + + public String getText() + { + return StatCollector.translateToLocal("tc.research_text."+key); + } + + public boolean isSpecial() + { + return this.isSpecial; + } + + public boolean isStub() + { + return this.isStub; + } + + public boolean isLost() + { + return this.isLost; + } + + public boolean isConcealed() + { + return this.isConcealed; + } + + public boolean isHidden() + { + return this.isHidden; + } + + public boolean isVirtual() + { + return this.isVirtual; + } + + public boolean isAutoUnlock() { + return isAutoUnlock; + } + + public ResearchItem setAutoUnlock() + { + this.isAutoUnlock = true; + return this; + } + + public boolean isRound() { + return isRound; + } + + public ResearchItem setRound() { + this.isRound = true; + return this; + } + + public boolean isSecondary() { + return isSecondary; + } + + public ResearchItem setSecondary() { + this.isSecondary = true; + return this; + } + + public int getComplexity() { + return complexity; + } + + public ResearchItem setComplexity(int complexity) { + this.complexity = complexity; + return this; + } + + /** + * @return the aspect aspects ordinal with the highest value. Used to determine scroll color and similar things + */ + public Aspect getResearchPrimaryTag() { + Aspect aspect=null; + int highest=0; + if (tags!=null) + for (Aspect tag:tags.getAspects()) { + if (tags.getAmount(tag)>highest) { + aspect=tag; + highest=tags.getAmount(tag); + }; + } + return aspect; + } + +} diff --git a/src/main/java/thaumcraft/api/research/ResearchPage.java b/src/main/java/thaumcraft/api/research/ResearchPage.java new file mode 100644 index 00000000..fdada843 --- /dev/null +++ b/src/main/java/thaumcraft/api/research/ResearchPage.java @@ -0,0 +1,193 @@ +package thaumcraft.api.research; + +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.CrucibleRecipe; +import thaumcraft.api.crafting.IArcaneRecipe; +import thaumcraft.api.crafting.InfusionEnchantmentRecipe; +import thaumcraft.api.crafting.InfusionRecipe; + +public class ResearchPage { + public static enum PageType + { + TEXT, + TEXT_CONCEALED, + IMAGE, + CRUCIBLE_CRAFTING, + ARCANE_CRAFTING, + ASPECTS, + NORMAL_CRAFTING, + INFUSION_CRAFTING, + COMPOUND_CRAFTING, + INFUSION_ENCHANTMENT, + SMELTING + } + + public PageType type = PageType.TEXT; + + public String text=null; + public String research=null; + public ResourceLocation image=null; + public AspectList aspects=null; + public Object recipe=null; + public ItemStack recipeOutput=null; + + /** + * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(String text) { + this.type = PageType.TEXT; + this.text = text; + } + + /** + * @param research this page will only be displayed if the player has discovered this research + * @param text this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(String research, String text) { + this.type = PageType.TEXT_CONCEALED; + this.research = research; + this.text = text; + } + + /** + * @param recipe a vanilla crafting recipe. + */ + public ResearchPage(IRecipe recipe) { + this.type = PageType.NORMAL_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe a collection of vanilla crafting recipes. + */ + public ResearchPage(IRecipe[] recipe) { + this.type = PageType.NORMAL_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a collection of arcane crafting recipes. + */ + public ResearchPage(IArcaneRecipe[] recipe) { + this.type = PageType.ARCANE_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a collection of arcane crafting recipes. + */ + public ResearchPage(CrucibleRecipe[] recipe) { + this.type = PageType.CRUCIBLE_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a collection of infusion crafting recipes. + */ + public ResearchPage(InfusionRecipe[] recipe) { + this.type = PageType.INFUSION_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe a compound crafting recipe. + */ + public ResearchPage(List recipe) { + this.type = PageType.COMPOUND_CRAFTING; + this.recipe = recipe; + } + + /** + * @param recipe an arcane worktable crafting recipe. + */ + public ResearchPage(IArcaneRecipe recipe) { + this.type = PageType.ARCANE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe an alchemy crafting recipe. + */ + public ResearchPage(CrucibleRecipe recipe) { + this.type = PageType.CRUCIBLE_CRAFTING; + this.recipe = recipe; + this.recipeOutput = recipe.getRecipeOutput(); + } + + /** + * @param recipe a furnace smelting crafting recipe. + */ + public ResearchPage(ItemStack input) { + this.type = PageType.SMELTING; + this.recipe = input; + this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); + } + + /** + * @param recipe an infusion crafting recipe. + */ + public ResearchPage(InfusionRecipe recipe) { + this.type = PageType.INFUSION_CRAFTING; + this.recipe = recipe; + if (recipe.getRecipeOutput() instanceof ItemStack) { + this.recipeOutput = (ItemStack) recipe.getRecipeOutput(); + } else { + this.recipeOutput = recipe.getRecipeInput(); + } + } + + /** + * @param recipe an infusion crafting recipe. + */ + public ResearchPage(InfusionEnchantmentRecipe recipe) { + this.type = PageType.INFUSION_ENCHANTMENT; + this.recipe = recipe; +// if (recipe.recipeOutput instanceof ItemStack) { +// this.recipeOutput = (ItemStack) recipe.recipeOutput; +// } else { +// this.recipeOutput = recipe.recipeInput; +// } + } + + /** + * @param image + * @param caption this can (but does not have to) be a reference to a localization variable, not the actual text. + */ + public ResearchPage(ResourceLocation image, String caption) { + this.type = PageType.IMAGE; + this.image = image; + this.text = caption; + } + + /** + * This function should really not be called directly - used internally + */ + public ResearchPage(AspectList as) { + this.type = PageType.ASPECTS; + this.aspects = as; + } + + /** + * returns a localized text of the text field (if one exists). Returns the text field itself otherwise. + * @return + */ + public String getTranslatedText() { + String ret=""; + if (text != null) { + ret = StatCollector.translateToLocal(text); + if (ret.isEmpty()) ret = text; + } + return ret; + } + + +} diff --git a/src/main/java/thaumcraft/api/research/ScanResult.java b/src/main/java/thaumcraft/api/research/ScanResult.java new file mode 100644 index 00000000..e1498f31 --- /dev/null +++ b/src/main/java/thaumcraft/api/research/ScanResult.java @@ -0,0 +1,39 @@ +package thaumcraft.api.research; + +import net.minecraft.entity.Entity; + +public class ScanResult { + public byte type = 0; //1=blocks,2=entities,3=phenomena + public int id; + public int meta; + public Entity entity; + public String phenomena; + + public ScanResult(byte type, int blockId, int blockMeta, Entity entity, + String phenomena) { + super(); + this.type = type; + this.id = blockId; + this.meta = blockMeta; + this.entity = entity; + this.phenomena = phenomena; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ScanResult) { + ScanResult sr = (ScanResult) obj; + if (type != sr.type) + return false; + if (type == 1 + && (id != sr.id || meta != sr.meta)) + return false; + if (type == 2 && entity.getEntityId() != sr.entity.getEntityId()) + return false; + if (type == 3 && !phenomena.equals(sr.phenomena)) + return false; + } + return true; + } + +} From c560d920998597dbcf6d59ac67bcd952948e2586 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sat, 28 Feb 2015 14:43:26 +0000 Subject: [PATCH 28/85] Example Thaumcraft Aspect support, for cobblestone & cobblestone wall There is probably a clean way to implement support for all chisel blocks, I'm just not sure how yet. --- .../com/cricketcraft/chisel/compat/Compatibility.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index b8dfa80f..59ab864e 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -1,8 +1,14 @@ package com.cricketcraft.chisel.compat; import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; import com.cricketcraft.chisel.carving.Carving; +import com.cricketcraft.chisel.init.ChiselBlocks; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -45,6 +51,10 @@ public class Compatibility { addSupport("PFAAGeologica", "mediumStoneBrickStairs.limestone", "limestoneStairs", 0, 99); addSupport("PFAAGeologica", "strongStoneBrick", "stoneBrick", 3, 99); addSupport("PFAAGeologica", "strongCobble", "cobblestone", 3, 99); + + /* Thaumcraft TODO There is probably a cleaner way of doing this */ + ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestone, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestoneWall, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); } public static void addSupport(String modname, String blockname, String name, int metadata, int order) { From 44c23f555eecc61d205c8add6b3834f3048d1de4 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 28 Feb 2015 10:33:55 -0500 Subject: [PATCH 29/85] Move TC API into correct folder and switch to using the entire API --- .../java/thaumcraft/api/BlockCoordinates.java | 108 +++++++ src/api/java/thaumcraft/api/IArchitect.java | 27 ++ src/api/java/thaumcraft/api/IGoggles.java | 22 ++ src/api/java/thaumcraft/api/IRepairable.java | 13 + .../thaumcraft/api/IRepairableExtended.java | 17 ++ src/api/java/thaumcraft/api/IRunicArmor.java | 22 ++ src/api/java/thaumcraft/api/IScribeTools.java | 14 + .../java/thaumcraft/api/IVisDiscountGear.java | 20 ++ src/api/java/thaumcraft/api/IWarpingGear.java | 22 ++ src/api/java/thaumcraft/api/ItemApi.java | 70 +++++ src/api/java/thaumcraft/api/ItemRunic.java | 21 ++ .../java/thaumcraft/api/ThaumcraftApi.java | 0 .../thaumcraft/api/ThaumcraftApiHelper.java | 0 .../java/thaumcraft/api/TileThaumcraft.java | 63 ++++ .../java/thaumcraft/api/WorldCoordinates.java | 117 ++++++++ .../java/thaumcraft/api/aspects/Aspect.java | 4 +- .../thaumcraft/api/aspects/AspectList.java | 0 .../api/aspects/AspectSourceHelper.java | 0 .../api/aspects/IAspectContainer.java | 0 .../thaumcraft/api/aspects/IAspectSource.java | 0 .../api/aspects/IEssentiaContainerItem.java | 0 .../api/aspects/IEssentiaTransport.java | 0 .../api/crafting/CrucibleRecipe.java | 0 .../api/crafting/IArcaneRecipe.java | 0 .../api/crafting/IInfusionStabiliser.java | 0 .../crafting/InfusionEnchantmentRecipe.java | 0 .../api/crafting/InfusionRecipe.java | 0 .../api/crafting/ShapedArcaneRecipe.java | 0 .../api/crafting/ShapelessArcaneRecipe.java | 0 .../DamageSourceIndirectThaumcraftEntity.java | 32 ++ .../damagesource/DamageSourceThaumcraft.java | 47 +++ .../thaumcraft/api/entities/IEldritchMob.java | 5 + .../thaumcraft/api/entities/ITaintedMob.java | 5 + .../internal/DummyInternalMethodHandler.java | 0 .../api/internal/IInternalMethodHandler.java | 0 .../api/internal/WeightedRandomLoot.java | 0 src/api/java/thaumcraft/api/nodes/INode.java | 53 ++++ .../java/thaumcraft/api/nodes/IRevealer.java | 22 ++ .../thaumcraft/api/nodes/NodeModifier.java | 6 + .../java/thaumcraft/api/nodes/NodeType.java | 6 + .../java/thaumcraft/api/package-info.java | 2 +- .../api/potions/PotionFluxTaint.java | 67 +++++ .../api/potions/PotionVisExhaust.java | 48 +++ .../api/research/IScanEventHandler.java | 0 .../api/research/ResearchCategories.java | 0 .../api/research/ResearchCategoryList.java | 0 .../thaumcraft/api/research/ResearchItem.java | 0 .../thaumcraft/api/research/ResearchPage.java | 0 .../thaumcraft/api/research/ScanResult.java | 0 .../thaumcraft/api/visnet/TileVisNode.java | 188 ++++++++++++ .../thaumcraft/api/visnet/VisNetHandler.java | 282 ++++++++++++++++++ .../api/wands/FocusUpgradeType.java | 114 +++++++ .../api/wands/IWandRodOnUpdate.java | 16 + .../api/wands/IWandTriggerManager.java | 15 + .../java/thaumcraft/api/wands/IWandable.java | 25 ++ .../thaumcraft/api/wands/ItemFocusBasic.java | 276 +++++++++++++++++ .../java/thaumcraft/api/wands/StaffRod.java | 48 +++ .../java/thaumcraft/api/wands/WandCap.java | 129 ++++++++ .../java/thaumcraft/api/wands/WandRod.java | 158 ++++++++++ .../api/wands/WandTriggerRegistry.java | 126 ++++++++ .../cricketcraft/chisel/init/ChiselTabs.java | 72 +++-- 61 files changed, 2246 insertions(+), 36 deletions(-) create mode 100644 src/api/java/thaumcraft/api/BlockCoordinates.java create mode 100644 src/api/java/thaumcraft/api/IArchitect.java create mode 100644 src/api/java/thaumcraft/api/IGoggles.java create mode 100644 src/api/java/thaumcraft/api/IRepairable.java create mode 100644 src/api/java/thaumcraft/api/IRepairableExtended.java create mode 100644 src/api/java/thaumcraft/api/IRunicArmor.java create mode 100644 src/api/java/thaumcraft/api/IScribeTools.java create mode 100644 src/api/java/thaumcraft/api/IVisDiscountGear.java create mode 100644 src/api/java/thaumcraft/api/IWarpingGear.java create mode 100644 src/api/java/thaumcraft/api/ItemApi.java create mode 100644 src/api/java/thaumcraft/api/ItemRunic.java rename src/{main => api}/java/thaumcraft/api/ThaumcraftApi.java (100%) rename src/{main => api}/java/thaumcraft/api/ThaumcraftApiHelper.java (100%) create mode 100644 src/api/java/thaumcraft/api/TileThaumcraft.java create mode 100644 src/api/java/thaumcraft/api/WorldCoordinates.java rename src/{main => api}/java/thaumcraft/api/aspects/Aspect.java (99%) rename src/{main => api}/java/thaumcraft/api/aspects/AspectList.java (100%) rename src/{main => api}/java/thaumcraft/api/aspects/AspectSourceHelper.java (100%) rename src/{main => api}/java/thaumcraft/api/aspects/IAspectContainer.java (100%) rename src/{main => api}/java/thaumcraft/api/aspects/IAspectSource.java (100%) rename src/{main => api}/java/thaumcraft/api/aspects/IEssentiaContainerItem.java (100%) rename src/{main => api}/java/thaumcraft/api/aspects/IEssentiaTransport.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/CrucibleRecipe.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/IArcaneRecipe.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/IInfusionStabiliser.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/InfusionRecipe.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java (100%) rename src/{main => api}/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java (100%) create mode 100644 src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java create mode 100644 src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java create mode 100644 src/api/java/thaumcraft/api/entities/IEldritchMob.java create mode 100644 src/api/java/thaumcraft/api/entities/ITaintedMob.java rename src/{main => api}/java/thaumcraft/api/internal/DummyInternalMethodHandler.java (100%) rename src/{main => api}/java/thaumcraft/api/internal/IInternalMethodHandler.java (100%) rename src/{main => api}/java/thaumcraft/api/internal/WeightedRandomLoot.java (100%) create mode 100644 src/api/java/thaumcraft/api/nodes/INode.java create mode 100644 src/api/java/thaumcraft/api/nodes/IRevealer.java create mode 100644 src/api/java/thaumcraft/api/nodes/NodeModifier.java create mode 100644 src/api/java/thaumcraft/api/nodes/NodeType.java rename src/{main => api}/java/thaumcraft/api/package-info.java (53%) create mode 100644 src/api/java/thaumcraft/api/potions/PotionFluxTaint.java create mode 100644 src/api/java/thaumcraft/api/potions/PotionVisExhaust.java rename src/{main => api}/java/thaumcraft/api/research/IScanEventHandler.java (100%) rename src/{main => api}/java/thaumcraft/api/research/ResearchCategories.java (100%) rename src/{main => api}/java/thaumcraft/api/research/ResearchCategoryList.java (100%) rename src/{main => api}/java/thaumcraft/api/research/ResearchItem.java (100%) rename src/{main => api}/java/thaumcraft/api/research/ResearchPage.java (100%) rename src/{main => api}/java/thaumcraft/api/research/ScanResult.java (100%) create mode 100644 src/api/java/thaumcraft/api/visnet/TileVisNode.java create mode 100644 src/api/java/thaumcraft/api/visnet/VisNetHandler.java create mode 100644 src/api/java/thaumcraft/api/wands/FocusUpgradeType.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandTriggerManager.java create mode 100644 src/api/java/thaumcraft/api/wands/IWandable.java create mode 100644 src/api/java/thaumcraft/api/wands/ItemFocusBasic.java create mode 100644 src/api/java/thaumcraft/api/wands/StaffRod.java create mode 100644 src/api/java/thaumcraft/api/wands/WandCap.java create mode 100644 src/api/java/thaumcraft/api/wands/WandRod.java create mode 100644 src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java diff --git a/src/api/java/thaumcraft/api/BlockCoordinates.java b/src/api/java/thaumcraft/api/BlockCoordinates.java new file mode 100644 index 00000000..27a28f8f --- /dev/null +++ b/src/api/java/thaumcraft/api/BlockCoordinates.java @@ -0,0 +1,108 @@ +package thaumcraft.api; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class BlockCoordinates implements Comparable +{ + public int x; + + /** the y coordinate */ + public int y; + + /** the z coordinate */ + public int z; + + public BlockCoordinates() {} + + public BlockCoordinates(int par1, int par2, int par3) + { + this.x = par1; + this.y = par2; + this.z = par3; + } + + public BlockCoordinates(TileEntity tile) + { + this.x = tile.xCoord; + this.y = tile.yCoord; + this.z = tile.zCoord; + } + + public BlockCoordinates(BlockCoordinates par1ChunkCoordinates) + { + this.x = par1ChunkCoordinates.x; + this.y = par1ChunkCoordinates.y; + this.z = par1ChunkCoordinates.z; + } + + public boolean equals(Object par1Obj) + { + if (!(par1Obj instanceof BlockCoordinates)) + { + return false; + } + else + { + BlockCoordinates coordinates = (BlockCoordinates)par1Obj; + return this.x == coordinates.x && this.y == coordinates.y && this.z == coordinates.z ; + } + } + + public int hashCode() + { + return this.x + this.y << 8 + this.z << 16; + } + + /** + * Compare the coordinate with another coordinate + */ + public int compareWorldCoordinate(BlockCoordinates par1) + { + return this.y == par1.y ? (this.z == par1.z ? this.x - par1.x : this.z - par1.z) : this.y - par1.y; + } + + public void set(int par1, int par2, int par3, int d) + { + this.x = par1; + this.y = par2; + this.z = par3; + } + + /** + * Returns the squared distance between this coordinates and the coordinates given as argument. + */ + public float getDistanceSquared(int par1, int par2, int par3) + { + float f = (float)(this.x - par1); + float f1 = (float)(this.y - par2); + float f2 = (float)(this.z - par3); + return f * f + f1 * f1 + f2 * f2; + } + + /** + * Return the squared distance between this coordinates and the ChunkCoordinates given as argument. + */ + public float getDistanceSquaredToWorldCoordinates(BlockCoordinates par1ChunkCoordinates) + { + return this.getDistanceSquared(par1ChunkCoordinates.x, par1ChunkCoordinates.y, par1ChunkCoordinates.z); + } + + public int compareTo(Object par1Obj) + { + return this.compareWorldCoordinate((BlockCoordinates)par1Obj); + } + + public void readNBT(NBTTagCompound nbt) { + this.x = nbt.getInteger("b_x"); + this.y = nbt.getInteger("b_y"); + this.z = nbt.getInteger("b_z"); + } + + public void writeNBT(NBTTagCompound nbt) { + nbt.setInteger("b_x",x); + nbt.setInteger("b_y",y); + nbt.setInteger("b_z",z); + } + +} diff --git a/src/api/java/thaumcraft/api/IArchitect.java b/src/api/java/thaumcraft/api/IArchitect.java new file mode 100644 index 00000000..c733af5e --- /dev/null +++ b/src/api/java/thaumcraft/api/IArchitect.java @@ -0,0 +1,27 @@ +package thaumcraft.api; + +import java.util.ArrayList; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public interface IArchitect { + + /** + * Returns a list of blocks that should be highlighted in world. + */ + public ArrayList getArchitectBlocks(ItemStack stack, World world, + int x, int y, int z, int side, EntityPlayer player); + + /** + * which axis should be displayed. + */ + public boolean showAxis(ItemStack stack, World world, EntityPlayer player, int side, EnumAxis axis); + + public enum EnumAxis { + X, // east / west + Y, // up / down + Z; // north / south + } +} diff --git a/src/api/java/thaumcraft/api/IGoggles.java b/src/api/java/thaumcraft/api/IGoggles.java new file mode 100644 index 00000000..2f53d816 --- /dev/null +++ b/src/api/java/thaumcraft/api/IGoggles.java @@ -0,0 +1,22 @@ +package thaumcraft.api; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Equipped head slot items that extend this class will be able to perform most functions that + * goggles of revealing can apart from view nodes which is handled by IRevealer. + * + */ + +public interface IGoggles { + + /* + * If this method returns true things like block essentia contents will be shown. + */ + public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player); + +} diff --git a/src/api/java/thaumcraft/api/IRepairable.java b/src/api/java/thaumcraft/api/IRepairable.java new file mode 100644 index 00000000..48c6dff9 --- /dev/null +++ b/src/api/java/thaumcraft/api/IRepairable.java @@ -0,0 +1,13 @@ +package thaumcraft.api; + + + +/** + * @author Azanor + * Items, armor and tools with this interface can receive the Repair enchantment. + * Repairs 1 point of durability every 10 seconds (2 for repair II) + */ +public interface IRepairable { + + +} diff --git a/src/api/java/thaumcraft/api/IRepairableExtended.java b/src/api/java/thaumcraft/api/IRepairableExtended.java new file mode 100644 index 00000000..33827124 --- /dev/null +++ b/src/api/java/thaumcraft/api/IRepairableExtended.java @@ -0,0 +1,17 @@ +package thaumcraft.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + + + +/** + * @author Azanor + * Items, armor and tools with this interface can receive the Repair enchantment. + * Repairs 1 point of durability every 10 seconds (2 for repair II) + */ +public interface IRepairableExtended extends IRepairable { + + public boolean doRepair(ItemStack stack, EntityPlayer player, int enchantlevel); + +} diff --git a/src/api/java/thaumcraft/api/IRunicArmor.java b/src/api/java/thaumcraft/api/IRunicArmor.java new file mode 100644 index 00000000..5dd31100 --- /dev/null +++ b/src/api/java/thaumcraft/api/IRunicArmor.java @@ -0,0 +1,22 @@ +package thaumcraft.api; + +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Armor or bauble slot items that implement this interface can provide runic shielding. + * Recharging, hardening, etc. is handled internally by thaumcraft. + * + */ + +public interface IRunicArmor { + + /** + * returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally. + */ + public int getRunicCharge(ItemStack itemstack); + + +} diff --git a/src/api/java/thaumcraft/api/IScribeTools.java b/src/api/java/thaumcraft/api/IScribeTools.java new file mode 100644 index 00000000..8800fa57 --- /dev/null +++ b/src/api/java/thaumcraft/api/IScribeTools.java @@ -0,0 +1,14 @@ +package thaumcraft.api; + + +/** + * + * @author Azanor + * + * Interface used to identify scribing tool items used in research table + * + */ + +public interface IScribeTools { + +} diff --git a/src/api/java/thaumcraft/api/IVisDiscountGear.java b/src/api/java/thaumcraft/api/IVisDiscountGear.java new file mode 100644 index 00000000..3793ea3e --- /dev/null +++ b/src/api/java/thaumcraft/api/IVisDiscountGear.java @@ -0,0 +1,20 @@ +package thaumcraft.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import thaumcraft.api.aspects.Aspect; + + + + +/** + * @author Azanor + * ItemArmor with this interface will grant a discount to the vis cost of actions the wearer performs with casting wands. + * The amount returned is the percentage by which the cost is discounted. There is a built-int max discount of 50%, but + * individual items really shouldn't have a discount more than 5% + */ +public interface IVisDiscountGear { + + int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect); + +} diff --git a/src/api/java/thaumcraft/api/IWarpingGear.java b/src/api/java/thaumcraft/api/IWarpingGear.java new file mode 100644 index 00000000..e7415ab7 --- /dev/null +++ b/src/api/java/thaumcraft/api/IWarpingGear.java @@ -0,0 +1,22 @@ +package thaumcraft.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Armor, held items or bauble slot items that implement this interface add warp when equipped or held. + * + */ + +public interface IWarpingGear { + + /** + * returns how much warp this item adds while worn or held. + */ + public int getWarp(ItemStack itemstack, EntityPlayer player); + + +} diff --git a/src/api/java/thaumcraft/api/ItemApi.java b/src/api/java/thaumcraft/api/ItemApi.java new file mode 100644 index 00000000..25dda282 --- /dev/null +++ b/src/api/java/thaumcraft/api/ItemApi.java @@ -0,0 +1,70 @@ +package thaumcraft.api; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import cpw.mods.fml.common.FMLLog; + +/** + * @author Azanor + * + * This is used to gain access to the items in my mod. + * I only give some examples and it will probably still + * require a bit of work for you to get hold of everything you need. + * + */ +public class ItemApi { + + public static ItemStack getItem(String itemString, int meta) { + ItemStack item = null; + + try { + String itemClass = "thaumcraft.common.config.ConfigItems"; + Object obj = Class.forName(itemClass).getField(itemString).get(null); + if (obj instanceof Item) { + item = new ItemStack((Item) obj,1,meta); + } else if (obj instanceof ItemStack) { + item = (ItemStack) obj; + } + } catch (Exception ex) { + FMLLog.warning("[Thaumcraft] Could not retrieve item identified by: " + itemString); + } + + return item; + } + + public static ItemStack getBlock(String itemString, int meta) { + ItemStack item = null; + + try { + String itemClass = "thaumcraft.common.config.ConfigBlocks"; + Object obj = Class.forName(itemClass).getField(itemString).get(null); + if (obj instanceof Block) { + item = new ItemStack((Block) obj,1,meta); + } else if (obj instanceof ItemStack) { + item = (ItemStack) obj; + } + } catch (Exception ex) { + FMLLog.warning("[Thaumcraft] Could not retrieve block identified by: " + itemString); + } + + return item; + } + + /** + * + * Some examples + * + * Casting Wands: + * itemWandCasting + * + * Resources: + * itemEssence, itemWispEssence, itemResource, itemShard, itemNugget, + * itemNuggetChicken, itemNuggetBeef, itemNuggetPork, itemTripleMeatTreat + * + * Research: + * itemResearchNotes, itemInkwell, itemThaumonomicon + * + */ + +} diff --git a/src/api/java/thaumcraft/api/ItemRunic.java b/src/api/java/thaumcraft/api/ItemRunic.java new file mode 100644 index 00000000..80251f59 --- /dev/null +++ b/src/api/java/thaumcraft/api/ItemRunic.java @@ -0,0 +1,21 @@ +package thaumcraft.api; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemRunic extends Item implements IRunicArmor { + + int charge; + + public ItemRunic (int charge) + { + super(); + this.charge = charge; + } + + @Override + public int getRunicCharge(ItemStack itemstack) { + return charge; + } + +} diff --git a/src/main/java/thaumcraft/api/ThaumcraftApi.java b/src/api/java/thaumcraft/api/ThaumcraftApi.java similarity index 100% rename from src/main/java/thaumcraft/api/ThaumcraftApi.java rename to src/api/java/thaumcraft/api/ThaumcraftApi.java diff --git a/src/main/java/thaumcraft/api/ThaumcraftApiHelper.java b/src/api/java/thaumcraft/api/ThaumcraftApiHelper.java similarity index 100% rename from src/main/java/thaumcraft/api/ThaumcraftApiHelper.java rename to src/api/java/thaumcraft/api/ThaumcraftApiHelper.java diff --git a/src/api/java/thaumcraft/api/TileThaumcraft.java b/src/api/java/thaumcraft/api/TileThaumcraft.java new file mode 100644 index 00000000..56ccae87 --- /dev/null +++ b/src/api/java/thaumcraft/api/TileThaumcraft.java @@ -0,0 +1,63 @@ +package thaumcraft.api; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; + +/** + * + * @author azanor + * + * Custom tile entity class I use for most of my tile entities. Setup in such a way that only + * the nbt data within readCustomNBT / writeCustomNBT will be sent to the client when the tile + * updates. Apart from all the normal TE data that gets sent that is. + * + */ +public class TileThaumcraft extends TileEntity { + + //NBT stuff + + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) + { + super.readFromNBT(nbttagcompound); + readCustomNBT(nbttagcompound); + } + + public void readCustomNBT(NBTTagCompound nbttagcompound) + { + //TODO + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) + { + super.writeToNBT(nbttagcompound); + writeCustomNBT(nbttagcompound); + } + + public void writeCustomNBT(NBTTagCompound nbttagcompound) + { + //TODO + } + + //Client Packet stuff + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + this.writeCustomNBT(nbttagcompound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, -999, nbttagcompound); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + super.onDataPacket(net, pkt); + this.readCustomNBT(pkt.func_148857_g()); + } + + + + +} diff --git a/src/api/java/thaumcraft/api/WorldCoordinates.java b/src/api/java/thaumcraft/api/WorldCoordinates.java new file mode 100644 index 00000000..6c620af5 --- /dev/null +++ b/src/api/java/thaumcraft/api/WorldCoordinates.java @@ -0,0 +1,117 @@ +package thaumcraft.api; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class WorldCoordinates implements Comparable +{ + public int x; + + /** the y coordinate */ + public int y; + + /** the z coordinate */ + public int z; + + public int dim; + + public WorldCoordinates() {} + + public WorldCoordinates(int par1, int par2, int par3, int d) + { + this.x = par1; + this.y = par2; + this.z = par3; + this.dim = d; + } + + public WorldCoordinates(TileEntity tile) + { + this.x = tile.xCoord; + this.y = tile.yCoord; + this.z = tile.zCoord; + this.dim = tile.getWorldObj().provider.dimensionId; + } + + public WorldCoordinates(WorldCoordinates par1ChunkCoordinates) + { + this.x = par1ChunkCoordinates.x; + this.y = par1ChunkCoordinates.y; + this.z = par1ChunkCoordinates.z; + this.dim = par1ChunkCoordinates.dim; + } + + public boolean equals(Object par1Obj) + { + if (!(par1Obj instanceof WorldCoordinates)) + { + return false; + } + else + { + WorldCoordinates coordinates = (WorldCoordinates)par1Obj; + return this.x == coordinates.x && this.y == coordinates.y && this.z == coordinates.z && this.dim == coordinates.dim ; + } + } + + public int hashCode() + { + return this.x + this.y << 8 + this.z << 16 + this.dim << 24; + } + + /** + * Compare the coordinate with another coordinate + */ + public int compareWorldCoordinate(WorldCoordinates par1) + { + return this.dim == par1.dim ? ( + this.y == par1.y ? (this.z == par1.z ? this.x - par1.x : this.z - par1.z) : this.y - par1.y) : -1; + } + + public void set(int par1, int par2, int par3, int d) + { + this.x = par1; + this.y = par2; + this.z = par3; + this.dim = d; + } + + /** + * Returns the squared distance between this coordinates and the coordinates given as argument. + */ + public float getDistanceSquared(int par1, int par2, int par3) + { + float f = (float)(this.x - par1); + float f1 = (float)(this.y - par2); + float f2 = (float)(this.z - par3); + return f * f + f1 * f1 + f2 * f2; + } + + /** + * Return the squared distance between this coordinates and the ChunkCoordinates given as argument. + */ + public float getDistanceSquaredToWorldCoordinates(WorldCoordinates par1ChunkCoordinates) + { + return this.getDistanceSquared(par1ChunkCoordinates.x, par1ChunkCoordinates.y, par1ChunkCoordinates.z); + } + + public int compareTo(Object par1Obj) + { + return this.compareWorldCoordinate((WorldCoordinates)par1Obj); + } + + public void readNBT(NBTTagCompound nbt) { + this.x = nbt.getInteger("w_x"); + this.y = nbt.getInteger("w_y"); + this.z = nbt.getInteger("w_z"); + this.dim = nbt.getInteger("w_d"); + } + + public void writeNBT(NBTTagCompound nbt) { + nbt.setInteger("w_x",x); + nbt.setInteger("w_y",y); + nbt.setInteger("w_z",z); + nbt.setInteger("w_d",dim); + } + +} diff --git a/src/main/java/thaumcraft/api/aspects/Aspect.java b/src/api/java/thaumcraft/api/aspects/Aspect.java similarity index 99% rename from src/main/java/thaumcraft/api/aspects/Aspect.java rename to src/api/java/thaumcraft/api/aspects/Aspect.java index 0ea13f5e..3c33a4a7 100644 --- a/src/main/java/thaumcraft/api/aspects/Aspect.java +++ b/src/api/java/thaumcraft/api/aspects/Aspect.java @@ -181,14 +181,14 @@ public class Aspect { public static final Aspect BEAST = new Aspect("bestia",0x9f6409, new Aspect[] {MOTION, LIFE}); public static final Aspect FLESH = new Aspect("corpus",0xee478d, new Aspect[] {DEATH, BEAST}); public static final Aspect UNDEAD = new Aspect("exanimis",0x3a4000, new Aspect[] {MOTION, DEATH}); - public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {FIRE, SOUL}); + public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {EARTH, SOUL}); public static final Aspect SENSES = new Aspect("sensus",0x0fd9ff, new Aspect[] {AIR, SOUL}); public static final Aspect MAN = new Aspect("humanus",0xffd7c0, new Aspect[] {BEAST, MIND}); public static final Aspect CROP = new Aspect("messis",0xe1b371, new Aspect[] {PLANT, MAN}); public static final Aspect MINE = new Aspect("perfodio",0xdcd2d8, new Aspect[] {MAN, EARTH}); public static final Aspect TOOL = new Aspect("instrumentum",0x4040ee, new Aspect[] {MAN, ORDER}); public static final Aspect HARVEST = new Aspect("meto",0xeead82, new Aspect[] {CROP, TOOL}); - public static final Aspect WEAPON = new Aspect("telum",0xc05050, new Aspect[] {TOOL, FIRE}); + public static final Aspect WEAPON = new Aspect("telum",0xc05050, new Aspect[] {TOOL, ENTROPY}); public static final Aspect ARMOR = new Aspect("tutamen",0x00c0c0, new Aspect[] {TOOL, EARTH}); public static final Aspect HUNGER = new Aspect("fames",0x9a0305, new Aspect[] {LIFE, VOID}); public static final Aspect GREED = new Aspect("lucrum",0xe6be44, new Aspect[] {MAN, HUNGER}); diff --git a/src/main/java/thaumcraft/api/aspects/AspectList.java b/src/api/java/thaumcraft/api/aspects/AspectList.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/AspectList.java rename to src/api/java/thaumcraft/api/aspects/AspectList.java diff --git a/src/main/java/thaumcraft/api/aspects/AspectSourceHelper.java b/src/api/java/thaumcraft/api/aspects/AspectSourceHelper.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/AspectSourceHelper.java rename to src/api/java/thaumcraft/api/aspects/AspectSourceHelper.java diff --git a/src/main/java/thaumcraft/api/aspects/IAspectContainer.java b/src/api/java/thaumcraft/api/aspects/IAspectContainer.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/IAspectContainer.java rename to src/api/java/thaumcraft/api/aspects/IAspectContainer.java diff --git a/src/main/java/thaumcraft/api/aspects/IAspectSource.java b/src/api/java/thaumcraft/api/aspects/IAspectSource.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/IAspectSource.java rename to src/api/java/thaumcraft/api/aspects/IAspectSource.java diff --git a/src/main/java/thaumcraft/api/aspects/IEssentiaContainerItem.java b/src/api/java/thaumcraft/api/aspects/IEssentiaContainerItem.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/IEssentiaContainerItem.java rename to src/api/java/thaumcraft/api/aspects/IEssentiaContainerItem.java diff --git a/src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java b/src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java similarity index 100% rename from src/main/java/thaumcraft/api/aspects/IEssentiaTransport.java rename to src/api/java/thaumcraft/api/aspects/IEssentiaTransport.java diff --git a/src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java b/src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/CrucibleRecipe.java rename to src/api/java/thaumcraft/api/crafting/CrucibleRecipe.java diff --git a/src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/IArcaneRecipe.java rename to src/api/java/thaumcraft/api/crafting/IArcaneRecipe.java diff --git a/src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java b/src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/IInfusionStabiliser.java rename to src/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java diff --git a/src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java rename to src/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java diff --git a/src/main/java/thaumcraft/api/crafting/InfusionRecipe.java b/src/api/java/thaumcraft/api/crafting/InfusionRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/InfusionRecipe.java rename to src/api/java/thaumcraft/api/crafting/InfusionRecipe.java diff --git a/src/main/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java rename to src/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java diff --git a/src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java similarity index 100% rename from src/main/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java rename to src/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java new file mode 100644 index 00000000..1562d052 --- /dev/null +++ b/src/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java @@ -0,0 +1,32 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.Entity; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSourceIndirect; + +public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect { + + private boolean fireDamage; + private float hungerDamage; + private boolean isUnblockable; + + + public DamageSourceIndirectThaumcraftEntity(String par1Str, + Entity par2Entity, Entity par3Entity) { + super(par1Str, par2Entity, par3Entity); + } + + + public DamageSource setFireDamage() + { + this.fireDamage = true; + return this; + } + + public DamageSource setDamageBypassesArmor() + { + this.isUnblockable = true; + this.hungerDamage = 0.0F; + return this; + } +} diff --git a/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java b/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java new file mode 100644 index 00000000..bb55672b --- /dev/null +++ b/src/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java @@ -0,0 +1,47 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; + +public class DamageSourceThaumcraft extends DamageSource +{ + + public static DamageSource taint = new DamageSourceThaumcraft("taint").setDamageBypassesArmor().setMagicDamage(); + public static DamageSource tentacle = new DamageSourceThaumcraft("tentacle"); + public static DamageSource swarm = new DamageSourceThaumcraft("swarm"); + public static DamageSource dissolve = new DamageSourceThaumcraft("dissolve").setDamageBypassesArmor(); + + protected DamageSourceThaumcraft(String par1Str) { + super(par1Str); + } + + /** This kind of damage can be blocked or not. */ + private boolean isUnblockable = false; + private boolean isDamageAllowedInCreativeMode = false; + private float hungerDamage = 0.3F; + + /** This kind of damage is based on fire or not. */ + private boolean fireDamage; + + /** This kind of damage is based on a projectile or not. */ + private boolean projectile; + + /** + * Whether this damage source will have its damage amount scaled based on the current difficulty. + */ + private boolean difficultyScaled; + private boolean magicDamage = false; + private boolean explosion = false; + + public static DamageSource causeSwarmDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("swarm", par0EntityLiving); + } + + public static DamageSource causeTentacleDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("tentacle", par0EntityLiving); + } + +} diff --git a/src/api/java/thaumcraft/api/entities/IEldritchMob.java b/src/api/java/thaumcraft/api/entities/IEldritchMob.java new file mode 100644 index 00000000..79fc75b5 --- /dev/null +++ b/src/api/java/thaumcraft/api/entities/IEldritchMob.java @@ -0,0 +1,5 @@ +package thaumcraft.api.entities; + +public interface IEldritchMob { + +} diff --git a/src/api/java/thaumcraft/api/entities/ITaintedMob.java b/src/api/java/thaumcraft/api/entities/ITaintedMob.java new file mode 100644 index 00000000..83fb1fcb --- /dev/null +++ b/src/api/java/thaumcraft/api/entities/ITaintedMob.java @@ -0,0 +1,5 @@ +package thaumcraft.api.entities; + +public interface ITaintedMob { + +} diff --git a/src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java b/src/api/java/thaumcraft/api/internal/DummyInternalMethodHandler.java similarity index 100% rename from src/main/java/thaumcraft/api/internal/DummyInternalMethodHandler.java rename to src/api/java/thaumcraft/api/internal/DummyInternalMethodHandler.java diff --git a/src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java b/src/api/java/thaumcraft/api/internal/IInternalMethodHandler.java similarity index 100% rename from src/main/java/thaumcraft/api/internal/IInternalMethodHandler.java rename to src/api/java/thaumcraft/api/internal/IInternalMethodHandler.java diff --git a/src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java b/src/api/java/thaumcraft/api/internal/WeightedRandomLoot.java similarity index 100% rename from src/main/java/thaumcraft/api/internal/WeightedRandomLoot.java rename to src/api/java/thaumcraft/api/internal/WeightedRandomLoot.java diff --git a/src/api/java/thaumcraft/api/nodes/INode.java b/src/api/java/thaumcraft/api/nodes/INode.java new file mode 100644 index 00000000..61da1f77 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/INode.java @@ -0,0 +1,53 @@ +package thaumcraft.api.nodes; + +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IAspectContainer; + +public interface INode extends IAspectContainer { + + /** + * Unique identifier to distinguish nodes. Normal node id's are based on world id and coordinates + * @return + */ + public String getId(); + + public AspectList getAspectsBase(); + + /** + * Return the type of node + * @return + */ + public NodeType getNodeType(); + + /** + * Set the type of node + * @return + */ + public void setNodeType(NodeType nodeType); + + /** + * Set the node modifier + * @return + */ + public void setNodeModifier(NodeModifier nodeModifier); + + /** + * Return the node modifier + * @return + */ + public NodeModifier getNodeModifier(); + + /** + * Return the maximum capacity of each aspect the node can hold + * @return + */ + public int getNodeVisBase(Aspect aspect); + + /** + * Set the maximum capacity of each aspect the node can hold + * @return + */ + public void setNodeVisBase(Aspect aspect, short nodeVisBase); + +} diff --git a/src/api/java/thaumcraft/api/nodes/IRevealer.java b/src/api/java/thaumcraft/api/nodes/IRevealer.java new file mode 100644 index 00000000..14a19b54 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/IRevealer.java @@ -0,0 +1,22 @@ +package thaumcraft.api.nodes; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Equipped head slot items that extend this class will make nodes visible in world. + * + */ + +public interface IRevealer { + + /* + * If this method returns true the nodes will be visible. + */ + public boolean showNodes(ItemStack itemstack, EntityLivingBase player); + + +} diff --git a/src/api/java/thaumcraft/api/nodes/NodeModifier.java b/src/api/java/thaumcraft/api/nodes/NodeModifier.java new file mode 100644 index 00000000..885b8678 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/NodeModifier.java @@ -0,0 +1,6 @@ +package thaumcraft.api.nodes; + +public enum NodeModifier +{ + BRIGHT, PALE, FADING +} \ No newline at end of file diff --git a/src/api/java/thaumcraft/api/nodes/NodeType.java b/src/api/java/thaumcraft/api/nodes/NodeType.java new file mode 100644 index 00000000..355324b5 --- /dev/null +++ b/src/api/java/thaumcraft/api/nodes/NodeType.java @@ -0,0 +1,6 @@ +package thaumcraft.api.nodes; + +public enum NodeType +{ + NORMAL, UNSTABLE, DARK, TAINTED, HUNGRY, PURE +} \ No newline at end of file diff --git a/src/main/java/thaumcraft/api/package-info.java b/src/api/java/thaumcraft/api/package-info.java similarity index 53% rename from src/main/java/thaumcraft/api/package-info.java rename to src/api/java/thaumcraft/api/package-info.java index cceaf891..0de39267 100644 --- a/src/main/java/thaumcraft/api/package-info.java +++ b/src/api/java/thaumcraft/api/package-info.java @@ -1,4 +1,4 @@ -@API(owner = "Thaumcraft", apiVersion = "4.2.2.0", provides = "Thaumcraft|API") +@API(owner = "Thaumcraft", apiVersion = "4.2.0.0", provides = "Thaumcraft|API") package thaumcraft.api; import cpw.mods.fml.common.API; diff --git a/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java b/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java new file mode 100644 index 00000000..b950de0e --- /dev/null +++ b/src/api/java/thaumcraft/api/potions/PotionFluxTaint.java @@ -0,0 +1,67 @@ +package thaumcraft.api.potions; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.damagesource.DamageSourceThaumcraft; +import thaumcraft.api.entities.ITaintedMob; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class PotionFluxTaint extends Potion +{ + public static PotionFluxTaint instance = null; // will be instantiated at runtime + private int statusIconIndex = -1; + + public PotionFluxTaint(int par1, boolean par2, int par3) + { + super(par1,par2,par3); + setIconIndex(0, 0); + } + + public static void init() + { + instance.setPotionName("potion.fluxtaint"); + instance.setIconIndex(3, 1); + instance.setEffectiveness(0.25D); + } + + @Override + public boolean isBadEffect() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getStatusIconIndex() { + Minecraft.getMinecraft().renderEngine.bindTexture(rl); + return super.getStatusIconIndex(); + } + + static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); + + @Override + public void performEffect(EntityLivingBase target, int par2) { + if (target instanceof ITaintedMob) { + target.heal(1); + } else + if (!target.isEntityUndead() && !(target instanceof EntityPlayer)) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + else + if (!target.isEntityUndead() && (target.getMaxHealth() > 1 || (target instanceof EntityPlayer))) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + } + + public boolean isReady(int par1, int par2) + { + int k = 40 >> par2; + return k > 0 ? par1 % k == 0 : true; + } + +} diff --git a/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java b/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java new file mode 100644 index 00000000..cd7fc18c --- /dev/null +++ b/src/api/java/thaumcraft/api/potions/PotionVisExhaust.java @@ -0,0 +1,48 @@ +package thaumcraft.api.potions; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.util.ResourceLocation; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class PotionVisExhaust extends Potion +{ + public static PotionVisExhaust instance = null; // will be instantiated at runtime + private int statusIconIndex = -1; + + public PotionVisExhaust(int par1, boolean par2, int par3) + { + super(par1,par2,par3); + setIconIndex(0, 0); + } + + public static void init() + { + instance.setPotionName("potion.visexhaust"); + instance.setIconIndex(5, 1); + instance.setEffectiveness(0.25D); + } + + @Override + public boolean isBadEffect() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getStatusIconIndex() { + Minecraft.getMinecraft().renderEngine.bindTexture(rl); + return super.getStatusIconIndex(); + } + + static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); + + @Override + public void performEffect(EntityLivingBase target, int par2) { + + } + + +} diff --git a/src/main/java/thaumcraft/api/research/IScanEventHandler.java b/src/api/java/thaumcraft/api/research/IScanEventHandler.java similarity index 100% rename from src/main/java/thaumcraft/api/research/IScanEventHandler.java rename to src/api/java/thaumcraft/api/research/IScanEventHandler.java diff --git a/src/main/java/thaumcraft/api/research/ResearchCategories.java b/src/api/java/thaumcraft/api/research/ResearchCategories.java similarity index 100% rename from src/main/java/thaumcraft/api/research/ResearchCategories.java rename to src/api/java/thaumcraft/api/research/ResearchCategories.java diff --git a/src/main/java/thaumcraft/api/research/ResearchCategoryList.java b/src/api/java/thaumcraft/api/research/ResearchCategoryList.java similarity index 100% rename from src/main/java/thaumcraft/api/research/ResearchCategoryList.java rename to src/api/java/thaumcraft/api/research/ResearchCategoryList.java diff --git a/src/main/java/thaumcraft/api/research/ResearchItem.java b/src/api/java/thaumcraft/api/research/ResearchItem.java similarity index 100% rename from src/main/java/thaumcraft/api/research/ResearchItem.java rename to src/api/java/thaumcraft/api/research/ResearchItem.java diff --git a/src/main/java/thaumcraft/api/research/ResearchPage.java b/src/api/java/thaumcraft/api/research/ResearchPage.java similarity index 100% rename from src/main/java/thaumcraft/api/research/ResearchPage.java rename to src/api/java/thaumcraft/api/research/ResearchPage.java diff --git a/src/main/java/thaumcraft/api/research/ScanResult.java b/src/api/java/thaumcraft/api/research/ScanResult.java similarity index 100% rename from src/main/java/thaumcraft/api/research/ScanResult.java rename to src/api/java/thaumcraft/api/research/ScanResult.java diff --git a/src/api/java/thaumcraft/api/visnet/TileVisNode.java b/src/api/java/thaumcraft/api/visnet/TileVisNode.java new file mode 100644 index 00000000..204879e6 --- /dev/null +++ b/src/api/java/thaumcraft/api/visnet/TileVisNode.java @@ -0,0 +1,188 @@ +package thaumcraft.api.visnet; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.HashMap; + +import thaumcraft.api.TileThaumcraft; +import thaumcraft.api.WorldCoordinates; +import thaumcraft.api.aspects.Aspect; + +/** + * @author Azanor + * + * The tile entity used by nodes in the vis energy network. A node is either a source (like an aura node), + * a transport relay or vis receiver (like the infernal furnace). + * + */ +public abstract class TileVisNode extends TileThaumcraft { + + WeakReference parent = null; + ArrayList> children = new ArrayList>(); + + /** + * @return the WorldCoordinates location of where this node is located + */ + public WorldCoordinates getLocation() { + return new WorldCoordinates(this); + } + + /** + * @return the number of blocks away this node will check for parent nodes to connect to. + */ + public abstract int getRange(); + + /** + * @return true if this is the source or root node of the vis network. + */ + public abstract boolean isSource(); + + /** + * This method should never be called directly. Use VisNetHandler.drainVis() instead + * @param aspect what aspect to drain + * @param vis how much to drain + * @return how much was actually drained + */ + public int consumeVis(Aspect aspect, int vis) { + if (VisNetHandler.isNodeValid(getParent())) { + int out = getParent().get().consumeVis(aspect, vis); + if (out>0) { + triggerConsumeEffect(aspect); + } + return out; + } + return 0; + } + + public void removeThisNode() { + for (WeakReference n:getChildren()) { + if (n!=null && n.get()!=null) { + n.get().removeThisNode(); + } + } + + children = new ArrayList>(); + if (VisNetHandler.isNodeValid(this.getParent())) { + this.getParent().get().nodeRefresh=true; + } + this.setParent(null); + this.parentChanged(); + + if (this.isSource()) { + HashMap> sourcelist = VisNetHandler.sources.get(worldObj.provider.dimensionId); + if (sourcelist==null) { + sourcelist = new HashMap>(); + } + sourcelist.remove(getLocation()); + VisNetHandler.sources.put( worldObj.provider.dimensionId, sourcelist ); + } + + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + + + @Override + public void invalidate() { + removeThisNode(); + super.invalidate(); + } + + public void triggerConsumeEffect(Aspect aspect) { } + + /** + * @return + */ + public WeakReference getParent() { + return parent; + } + + /** + * @return + */ + public WeakReference getRootSource() { + return VisNetHandler.isNodeValid(getParent()) ? + getParent().get().getRootSource() : this.isSource() ? + new WeakReference(this) : null; + } + + /** + * @param parent + */ + public void setParent(WeakReference parent) { + this.parent = parent; + } + + /** + * @return + */ + public ArrayList> getChildren() { + return children; + } + + @Override + public boolean canUpdate() { + return true; + } + + protected int nodeCounter = 0; + private boolean nodeRegged = false; + public boolean nodeRefresh = false; + + @Override + public void updateEntity() { + + if (!worldObj.isRemote && ((nodeCounter++) % 40==0 || nodeRefresh)) { + //check for changes + if (!nodeRefresh && children.size()>0) { + for (WeakReference n:children) { + if (n==null || n.get()==null || !VisNetHandler.canNodeBeSeen(this, n.get())) { + nodeRefresh=true; + break; + } + } + } + + //refresh linked nodes + if (nodeRefresh) { + for (WeakReference n:children) { + if (n.get()!=null) { + n.get().nodeRefresh=true; + } + } + children.clear(); + parent=null; + } + + //redo stuff + if (isSource() && !nodeRegged) { + VisNetHandler.addSource(getWorldObj(), this); + nodeRegged = true; + } else + if (!isSource() && !VisNetHandler.isNodeValid(getParent())) { + setParent(VisNetHandler.addNode(getWorldObj(), this)); + nodeRefresh=true; + } + + if (nodeRefresh) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + parentChanged(); + } + nodeRefresh=false; + } + + } + + public void parentChanged() { } + + /** + * @return the type of shard this is attuned to: + * none -1, air 0, fire 1, water 2, earth 3, order 4, entropy 5 + * Should return -1 for most implementations + */ + public byte getAttunement() { + return -1; + } + + +} diff --git a/src/api/java/thaumcraft/api/visnet/VisNetHandler.java b/src/api/java/thaumcraft/api/visnet/VisNetHandler.java new file mode 100644 index 00000000..7ac4c699 --- /dev/null +++ b/src/api/java/thaumcraft/api/visnet/VisNetHandler.java @@ -0,0 +1,282 @@ +package thaumcraft.api.visnet; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.HashMap; + +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.WorldCoordinates; +import thaumcraft.api.aspects.Aspect; + +public class VisNetHandler { + + // NODE DRAINING + /** + * This method drains vis from a relay or source near the passed in + * location. The amount received can be less than the amount requested so + * take that into account. + * + * @param world + * @param x the x position of the draining block or entity + * @param y the y position of the draining block or entity + * @param z the z position of the draining block or entity + * @param aspect what aspect to drain + * @param amount how much to drain + * @return how much was actually drained + */ + public static int drainVis(World world, int x, int y, int z, Aspect aspect, int amount) { + + int drainedAmount = 0; + + WorldCoordinates drainer = new WorldCoordinates(x, y, z, + world.provider.dimensionId); + if (!nearbyNodes.containsKey(drainer)) { + calculateNearbyNodes(world, x, y, z); + } + + ArrayList> nodes = nearbyNodes.get(drainer); + if (nodes!=null && nodes.size()>0) + for (WeakReference noderef : nodes) { + + TileVisNode node = noderef.get(); + + if (node == null) continue; + + int a = node.consumeVis(aspect, amount); + drainedAmount += a; + amount -= a; + if (a>0) { + int color = Aspect.getPrimalAspects().indexOf(aspect); + generateVisEffect(world.provider.dimensionId, x, y, z, node.xCoord, node.yCoord, node.zCoord, color); + } + if (amount <= 0) { + break; + } + } + + return drainedAmount; + } + + public static void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color) { + ThaumcraftApi.internalMethods.generateVisEffect(dim, x, y, z, x2, y2, z2, color); + } + + public static HashMap>> sources = new HashMap>>(); + + public static void addSource(World world, TileVisNode vs) { + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + } + sourcelist.put(vs.getLocation(), new WeakReference(vs)); + sources.put(world.provider.dimensionId, sourcelist); + nearbyNodes.clear(); + } + + public static boolean isNodeValid(WeakReference node) { + if (node == null || node.get() == null || node.get().isInvalid()) + return false; + return true; + } + + public static WeakReference addNode(World world, TileVisNode vn) { + WeakReference ref = new WeakReference(vn); + + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + return null; + } + + ArrayList nearby = new ArrayList(); + + for (WeakReference root : sourcelist.values()) { + if (!isNodeValid(root)) + continue; + + TileVisNode source = root.get(); + + float r = inRange(world, vn.getLocation(), source.getLocation(), + vn.getRange()); + if (r > 0) { + nearby.add(new Object[] { source, r - vn.getRange() * 2 }); + } + + nearby = findClosestNodes(vn, source, nearby); + cache.clear(); + } + + float dist = Float.MAX_VALUE; + TileVisNode closest = null; + if (nearby.size() > 0) { + for (Object[] o : nearby) { + if ((Float) o[1] < dist && + (vn.getAttunement() == -1 || ((TileVisNode) o[0]).getAttunement() == -1 || + vn.getAttunement() == ((TileVisNode) o[0]).getAttunement())//) { + && canNodeBeSeen(vn,(TileVisNode)o[0])) { + dist = (Float) o[1]; + closest = (TileVisNode) o[0]; + } + } + } + if (closest != null) { + closest.getChildren().add(ref); + nearbyNodes.clear(); + return new WeakReference(closest); + } + + return null; + } + + static ArrayList cache = new ArrayList(); + public static ArrayList findClosestNodes(TileVisNode target, + TileVisNode parent, ArrayList in) { + + if (cache.size() > 512 || cache.contains(new WorldCoordinates(parent))) return in; + cache.add(new WorldCoordinates(parent)); + + for (WeakReference childWR : parent.getChildren()) { + TileVisNode child = childWR.get(); + + if (child != null && !child.equals(target) && !child.equals(parent)) { + float r2 = inRange(child.getWorldObj(), child.getLocation(), + target.getLocation(), target.getRange()); + if (r2 > 0) { + in.add(new Object[] { child, r2 }); + } + + in = findClosestNodes(target, child, in); + } + } + return in; + } + + private static float inRange(World world, WorldCoordinates cc1, + WorldCoordinates cc2, int range) { + float distance = cc1.getDistanceSquaredToWorldCoordinates(cc2); + return distance > range * range ? -1 : distance; + } + + private static HashMap>> nearbyNodes = new HashMap>>(); + + private static void calculateNearbyNodes(World world, int x, int y, int z) { + + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + return; + } + + ArrayList> cn = new ArrayList>(); + WorldCoordinates drainer = new WorldCoordinates(x, y, z, + world.provider.dimensionId); + + ArrayList nearby = new ArrayList(); + + for (WeakReference root : sourcelist.values()) { + + if (!isNodeValid(root)) + continue; + + TileVisNode source = root.get(); + + TileVisNode closest = null; + float range = Float.MAX_VALUE; + + float r = inRange(world, drainer, source.getLocation(), + source.getRange()); + if (r > 0) { + range = r; + closest = source; + } + + ArrayList> children = new ArrayList>(); + children = getAllChildren(source,children); + + for (WeakReference child : children) { + TileVisNode n = child.get(); + if (n != null && !n.equals(root)) { + + float r2 = inRange(n.getWorldObj(), n.getLocation(), + drainer, n.getRange()); + if (r2 > 0 && r2 < range) { + range = r2; + closest = n; + } + } + } + + if (closest != null) { + + cn.add(new WeakReference(closest)); + } + } + + nearbyNodes.put(drainer, cn); + } + + private static ArrayList> getAllChildren(TileVisNode source, ArrayList> list) { + for (WeakReference child : source.getChildren()) { + TileVisNode n = child.get(); + + if (n != null && n.getWorldObj()!=null && isChunkLoaded(n.getWorldObj(), n.xCoord, n.zCoord)) { + list.add(child); + list = getAllChildren(n,list); + } + } + return list; + } + + public static boolean isChunkLoaded(World world, int x, int z) { + int xx = x >> 4; + int zz = z >> 4; + return world.getChunkProvider().chunkExists(xx, zz); + } + + public static boolean canNodeBeSeen(TileVisNode source,TileVisNode target) + { + MovingObjectPosition mop = ThaumcraftApiHelper.rayTraceIgnoringSource(source.getWorldObj(), + Vec3.createVectorHelper(source.xCoord+.5, source.yCoord+.5,source.zCoord+.5), + Vec3.createVectorHelper(target.xCoord+.5, target.yCoord+.5,target.zCoord+.5), + false, true, false); + return mop == null || (mop.typeOfHit==MovingObjectType.BLOCK && + mop.blockX==target.xCoord && mop.blockY==target.yCoord && mop.blockZ==target.zCoord); + } + + // public static HashMap> + // noderef = new HashMap>(); + // + // public static TileVisNode getClosestNodeWithinRadius(World world, int x, + // int y, int z, int radius) { + // TileVisNode out = null; + // WorldCoordinates wc = null; + // float cd = Float.MAX_VALUE; + // for (int sx = x - radius; sx <= x + radius; sx++) { + // for (int sy = y - radius; sy <= y + radius; sy++) { + // for (int sz = z - radius; sz <= z + radius; sz++) { + // wc = new WorldCoordinates(sx,sy,sz,world.provider.dimensionId); + // if (noderef.containsKey(wc)) { + // float d = wc.getDistanceSquared(x, y, z); + // if (d=types.length) { + FocusUpgradeType[] temp = new FocusUpgradeType[id+1]; + System.arraycopy(types, 0, temp, 0, types.length); + types = temp; + } + + types[id] = this; + } + + public String getLocalizedName() { + return StatCollector.translateToLocal(name); + } + + public String getLocalizedText() { + return StatCollector.translateToLocal(text); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof FocusUpgradeType) { + return this.id == ((FocusUpgradeType)obj).id; + } else return false; + } + + // basic upgrade types + public static FocusUpgradeType potency = new FocusUpgradeType( 0, + new ResourceLocation("thaumcraft", "textures/foci/potency.png"), + "focus.upgrade.potency.name","focus.upgrade.potency.text", + new AspectList().add(Aspect.WEAPON,1)); + + public static FocusUpgradeType frugal = new FocusUpgradeType( 1, + new ResourceLocation("thaumcraft", "textures/foci/frugal.png"), + "focus.upgrade.frugal.name","focus.upgrade.frugal.text", + new AspectList().add(Aspect.HUNGER,1)); + + public static FocusUpgradeType treasure = new FocusUpgradeType( 2, + new ResourceLocation("thaumcraft", "textures/foci/treasure.png"), + "focus.upgrade.treasure.name","focus.upgrade.treasure.text", + new AspectList().add(Aspect.GREED,1)); + + public static FocusUpgradeType enlarge = new FocusUpgradeType( 3, + new ResourceLocation("thaumcraft", "textures/foci/enlarge.png"), + "focus.upgrade.enlarge.name","focus.upgrade.enlarge.text", + new AspectList().add(Aspect.TRAVEL,1)); + + public static FocusUpgradeType alchemistsfire = new FocusUpgradeType( 4, + new ResourceLocation("thaumcraft", "textures/foci/alchemistsfire.png"), + "focus.upgrade.alchemistsfire.name","focus.upgrade.alchemistsfire.text", + new AspectList().add(Aspect.ENERGY,1).add(Aspect.SLIME,1)); + + public static FocusUpgradeType alchemistsfrost = new FocusUpgradeType( 5, + new ResourceLocation("thaumcraft", "textures/foci/alchemistsfrost.png"), + "focus.upgrade.alchemistsfrost.name","focus.upgrade.alchemistsfrost.text", + new AspectList().add(Aspect.COLD,1).add(Aspect.TRAP,1)); + + public static FocusUpgradeType architect = new FocusUpgradeType( 6, + new ResourceLocation("thaumcraft", "textures/foci/architect.png"), + "focus.upgrade.architect.name","focus.upgrade.architect.text", + new AspectList().add(Aspect.CRAFT,1)); + + public static FocusUpgradeType extend = new FocusUpgradeType( 7, + new ResourceLocation("thaumcraft", "textures/foci/extend.png"), + "focus.upgrade.extend.name","focus.upgrade.extend.text", + new AspectList().add(Aspect.EXCHANGE,1)); + + public static FocusUpgradeType silktouch = new FocusUpgradeType( 8, + new ResourceLocation("thaumcraft", "textures/foci/silktouch.png"), + "focus.upgrade.silktouch.name","focus.upgrade.silktouch.text", + new AspectList().add(Aspect.GREED,1)); + + +} diff --git a/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java b/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java new file mode 100644 index 00000000..4ef8c849 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java @@ -0,0 +1,16 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * + * @author azanor + * + * Implemented by a class that you wish to be called whenever a wand with this rod performs its + * update tick. + * + */ +public interface IWandRodOnUpdate { + void onUpdate(ItemStack itemstack, EntityPlayer player); +} diff --git a/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java b/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java new file mode 100644 index 00000000..7c299deb --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandTriggerManager.java @@ -0,0 +1,15 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public interface IWandTriggerManager { + + /** + * This class will be called by wands with the proper parameters. It is up to you to decide what to do with them. + */ + public boolean performTrigger(World world, ItemStack wand, EntityPlayer player, + int x, int y, int z, int side, int event); + +} diff --git a/src/api/java/thaumcraft/api/wands/IWandable.java b/src/api/java/thaumcraft/api/wands/IWandable.java new file mode 100644 index 00000000..aeb9bac7 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/IWandable.java @@ -0,0 +1,25 @@ +package thaumcraft.api.wands; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +/** + * + * @author azanor + * + * Add this to a tile entity that you wish wands to interact with in some way. + * + */ + +public interface IWandable { + + public int onWandRightClick(World world, ItemStack wandstack, EntityPlayer player, int x, int y, int z, int side, int md); + + public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player); + + public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count); + + public void onWandStoppedUsing(ItemStack wandstack, World world, EntityPlayer player, int count); + +} diff --git a/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java b/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java new file mode 100644 index 00000000..e8938e91 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/ItemFocusBasic.java @@ -0,0 +1,276 @@ +package thaumcraft.api.wands; + +import java.text.DecimalFormat; +import java.util.LinkedHashMap; +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemFocusBasic extends Item { + + public ItemFocusBasic () + { + super(); + maxStackSize = 1; + canRepair=false; + this.setMaxDamage(0); + } + + public IIcon icon; + + @SideOnly(Side.CLIENT) + @Override + public IIcon getIconFromDamage(int par1) { + return icon; + } + + @Override + public boolean isDamageable() { + return false; + } + + @Override + public void addInformation(ItemStack stack,EntityPlayer player, List list, boolean par4) { + AspectList al = this.getVisCost(stack); + if (al!=null && al.size()>0) { + list.add(StatCollector.translateToLocal(isVisCostPerTick(stack)?"item.Focus.cost2":"item.Focus.cost1")); + for (Aspect aspect:al.getAspectsSorted()) { + DecimalFormat myFormatter = new DecimalFormat("#####.##"); + String amount = myFormatter.format(al.getAmount(aspect)/100f); + list.add(" \u00A7"+aspect.getChatcolor()+aspect.getName()+"\u00A7r x "+ amount); + } + } + addFocusInformation(stack,player,list,par4); + } + + public void addFocusInformation(ItemStack focusstack,EntityPlayer player, List list, boolean par4) { + LinkedHashMap map = new LinkedHashMap(); + for (short id:this.getAppliedUpgrades(focusstack)) { + if (id>=0) { + int amt = 1; + if (map.containsKey(id)) { + amt = map.get(id) + 1; + } + map.put(id, amt); + } + } + for (Short id:map.keySet()) { + list.add(EnumChatFormatting.DARK_PURPLE +FocusUpgradeType.types[id].getLocalizedName()+ + (map.get(id)>1?" "+StatCollector.translateToLocal("enchantment.level." + map.get(id)):"")); + } + } + + /** + * Purely for display on the focus tooltip (see addInformation method above) + */ + public boolean isVisCostPerTick(ItemStack focusstack) { + return false; + } + + @Override + public EnumRarity getRarity(ItemStack focusstack) + { + return EnumRarity.rare; + } + + /** + * What color will the focus orb be rendered on the held wand + */ + public int getFocusColor(ItemStack focusstack) { + return 0; + } + + + /** + * Does the focus have ornamentation like the focus of the nine hells. Ornamentation is a standard icon rendered in a cross around the focus + */ + public IIcon getOrnament(ItemStack focusstack) { + // TODO Auto-generated method stub + return null; + } + + /** + * An icon to be rendered inside the focus itself + */ + public IIcon getFocusDepthLayerIcon(ItemStack focusstack) { + // TODO Auto-generated method stub + return null; + } + + public enum WandFocusAnimation { + WAVE, CHARGE; + } + + public WandFocusAnimation getAnimation(ItemStack focusstack) { + return WandFocusAnimation.WAVE; + } + + /** + * Just insert two alphanumeric characters before this string in your focus item class + */ + public String getSortingHelper(ItemStack focusstack) { + String out=""; + for (short id:this.getAppliedUpgrades(focusstack)) { + out = out + id; + } + return out; + } + + + /** + * How much vis does this focus consume per activation. + */ + public AspectList getVisCost(ItemStack focusstack) { + return null; + } + + /** + * This returns how many milliseconds must pass before the focus can be activated again. + */ + public int getActivationCooldown(ItemStack focusstack) { + return 0; + } + + /** + * Used by foci like equal trade to determine their area in artchitect mode + */ + public int getMaxAreaSize(ItemStack focusstack) { + return 1; + } + + /** + * What upgrades can be applied to this focus for ranks 1 to 5 + */ + public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack focusstack, int rank) { + return null; + } + + /** + * What upgrades does the focus currently have + */ + public short[] getAppliedUpgrades(ItemStack focusstack) { + short[] l = new short[] {-1,-1,-1,-1,-1}; + NBTTagList nbttaglist = getFocusUpgradeTagList(focusstack); + if (nbttaglist == null) + { + return l; + } + else + { + for (int j = 0; j < nbttaglist.tagCount(); ++j) + { + if (j>=5) break; + l[j] = nbttaglist.getCompoundTagAt(j).getShort("id"); + } + + return l; + } + } + + public boolean applyUpgrade(ItemStack focusstack, FocusUpgradeType type, int rank) { + short[] upgrades = getAppliedUpgrades(focusstack); + if (upgrades[rank-1]!=-1 || rank<1 || rank>5) { + return false; + } + upgrades[rank-1] = type.id; + setFocusUpgradeTagList(focusstack, upgrades); + return true; + } + + /** + * Use this method to define custom logic about which upgrades can be applied. This can be used to set up upgrade "trees" + * that make certain upgrades available only when others are unlocked first, when certain research is completed, or similar logic. + * + */ + public boolean canApplyUpgrade(ItemStack focusstack, EntityPlayer player, FocusUpgradeType type, int rank) { + return true; + } + + /** + * Does this focus have the passed upgrade type + */ + public boolean isUpgradedWith(ItemStack focusstack, FocusUpgradeType focusUpgradetype) { + return getUpgradeLevel(focusstack,focusUpgradetype)>0; + } + + /** + * What level is the passed upgrade type on the focus. If it is not present it returns 0 + */ + public int getUpgradeLevel(ItemStack focusstack, FocusUpgradeType focusUpgradetype) { + short[] list = getAppliedUpgrades(focusstack); + int level=0; + for (short id:list) { + if (id == focusUpgradetype.id) + { + level++; + } + } + return level; + } + + public ItemStack onFocusRightClick(ItemStack wandstack, World world,EntityPlayer player, MovingObjectPosition movingobjectposition) { + // TODO Auto-generated method stub + return null; + } + + public void onUsingFocusTick(ItemStack wandstack, EntityPlayer player,int count) { + // TODO Auto-generated method stub + } + + public void onPlayerStoppedUsingFocus(ItemStack wandstack, World world, EntityPlayer player, int count) { + // TODO Auto-generated method stub + + } + + public boolean onFocusBlockStartBreak(ItemStack wandstack, int x, int y,int z, EntityPlayer player) { + // TODO Auto-generated method stub + return false; + } + + /** + * Internal helper methods + */ + private NBTTagList getFocusUpgradeTagList(ItemStack focusstack) + { + return focusstack.stackTagCompound == null ? null : focusstack.stackTagCompound.getTagList("upgrade", 10); + } + + private void setFocusUpgradeTagList(ItemStack focusstack, short[] upgrades) { + if (!focusstack.hasTagCompound()) + focusstack.setTagCompound(new NBTTagCompound()); + NBTTagCompound nbttagcompound = focusstack.getTagCompound(); + NBTTagList tlist = new NBTTagList(); + nbttagcompound.setTag("upgrade", tlist); + for (short id : upgrades) { + NBTTagCompound f = new NBTTagCompound(); + f.setShort("id", id); + tlist.appendTag(f); + } + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int p_77663_4_, boolean p_77663_5_) { + if (stack.stackTagCompound !=null && stack.stackTagCompound.hasKey("ench")) { + stack.stackTagCompound.removeTag("ench"); + } + super.onUpdate(stack, world, entity, p_77663_4_, p_77663_5_); + } + + + +} diff --git a/src/api/java/thaumcraft/api/wands/StaffRod.java b/src/api/java/thaumcraft/api/wands/StaffRod.java new file mode 100644 index 00000000..e7ae90f0 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/StaffRod.java @@ -0,0 +1,48 @@ +package thaumcraft.api.wands; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * + * @author Azanor + * + * This class is used to keep the material information for the various rods. + * It is also used to generate the wand recipes ingame. + * + */ +public class StaffRod extends WandRod { + + boolean runes=false; + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost) { + super(tag+"_staff", capacity, item, craftCost); + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + IWandRodOnUpdate onUpdate, ResourceLocation texture) { + super(tag+"_staff", capacity, item, craftCost, onUpdate, texture); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + IWandRodOnUpdate onUpdate) { + super(tag+"_staff", capacity, item, craftCost, onUpdate); + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+tag+".png"); + } + + public StaffRod(String tag, int capacity, ItemStack item, int craftCost, + ResourceLocation texture) { + super(tag+"_staff", capacity, item, craftCost, texture); + } + + public boolean hasRunes() { + return runes; + } + + public void setRunes(boolean hasRunes) { + this.runes = hasRunes; + } + + +} diff --git a/src/api/java/thaumcraft/api/wands/WandCap.java b/src/api/java/thaumcraft/api/wands/WandCap.java new file mode 100644 index 00000000..17b4581c --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandCap.java @@ -0,0 +1,129 @@ +package thaumcraft.api.wands; + +import java.util.LinkedHashMap; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.aspects.Aspect; + +/** + * This class is used to keep the material information for the various caps. + * It is also used to generate the wand recipes ingame. + * @author Azanor + * + */ +public class WandCap { + + private String tag; + + /** + * Cost to craft this wand. Combined with the rod cost. + */ + private int craftCost; + + /** + * the amount by which all aspect costs are multiplied + */ + float baseCostModifier; + + /** + * specifies a list of primal aspects that use the special discount figure instead of the normal discount. + */ + List specialCostModifierAspects; + + /** + * the amount by which the specified aspect costs are multiplied + */ + float specialCostModifier; + + /** + * The texture that will be used for the ingame wand cap + */ + ResourceLocation texture; + + /** + * the actual item that makes up this cap and will be used to generate the wand recipes + */ + ItemStack item; + + public static LinkedHashMap caps = new LinkedHashMap(); + + public WandCap (String tag, float discount, ItemStack item, int craftCost) { + this.setTag(tag); + this.baseCostModifier = discount; + this.specialCostModifierAspects = null; + texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + caps.put(tag, this); + } + + public WandCap (String tag, float discount, List specialAspects, float discountSpecial, ItemStack item, int craftCost) { + this.setTag(tag); + this.baseCostModifier = discount; + this.specialCostModifierAspects = specialAspects; + this.specialCostModifier = discountSpecial; + texture = new ResourceLocation("thaumcraft","textures/models/wand_cap_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + caps.put(tag, this); + } + + public float getBaseCostModifier() { + return baseCostModifier; + } + + public List getSpecialCostModifierAspects() { + return specialCostModifierAspects; + } + + public float getSpecialCostModifier() { + return specialCostModifier; + } + + public ResourceLocation getTexture() { + return texture; + } + + public void setTexture(ResourceLocation texture) { + this.texture = texture; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + + public ItemStack getItem() { + return item; + } + + public void setItem(ItemStack item) { + this.item = item; + } + + public int getCraftCost() { + return craftCost; + } + + public void setCraftCost(int craftCost) { + this.craftCost = craftCost; + } + + /** + * The research a player needs to have finished to be able to craft a wand with this cap. + */ + public String getResearch() { + return "CAP_"+getTag(); + } + + // Some examples: + // WandCap WAND_CAP_IRON = new WandCap("iron", 1.1f, Arrays.asList(Aspect.ORDER),1, new ItemStack(ConfigItems.itemWandCap,1,0),1); + // WandCap WAND_CAP_GOLD = new WandCap("gold", 1f, new ItemStack(ConfigItems.itemWandCap,1,1),3); + +} diff --git a/src/api/java/thaumcraft/api/wands/WandRod.java b/src/api/java/thaumcraft/api/wands/WandRod.java new file mode 100644 index 00000000..85954e46 --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandRod.java @@ -0,0 +1,158 @@ +package thaumcraft.api.wands; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * + * @author Azanor + * + * This class is used to keep the material information for the various rods. + * It is also used to generate the wand recipes ingame. + * + */ +public class WandRod { + + + private String tag; + + /** + * Cost to craft this wand. Combined with the rod cost. + */ + private int craftCost; + + /** + * The amount of vis that can be stored - this number is actually multiplied + * by 100 for use by the wands internals + */ + int capacity; + + /** + * The texture that will be used for the ingame wand rod + */ + protected ResourceLocation texture; + + /** + * the actual item that makes up this rod and will be used to generate the wand recipes + */ + ItemStack item; + + /** + * A class that will be called whenever the wand onUpdate tick is run + */ + IWandRodOnUpdate onUpdate; + + /** + * Does the rod glow in the dark? + */ + boolean glow; + + public static LinkedHashMap rods = new LinkedHashMap(); + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, ResourceLocation texture) { + this.setTag(tag); + this.capacity = capacity; + this.texture = texture; + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate, ResourceLocation texture) { + this.setTag(tag); + this.capacity = capacity; + this.texture = texture; + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + this.onUpdate = onUpdate; + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost) { + this.setTag(tag); + this.capacity = capacity; + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + } + + public WandRod (String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate) { + this.setTag(tag); + this.capacity = capacity; + this.texture = new ResourceLocation("thaumcraft","textures/models/wand_rod_"+getTag()+".png"); + this.item=item; + this.setCraftCost(craftCost); + rods.put(tag, this); + this.onUpdate = onUpdate; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + public ResourceLocation getTexture() { + return texture; + } + + public void setTexture(ResourceLocation texture) { + this.texture = texture; + } + + public ItemStack getItem() { + return item; + } + + public void setItem(ItemStack item) { + this.item = item; + } + + public int getCraftCost() { + return craftCost; + } + + public void setCraftCost(int craftCost) { + this.craftCost = craftCost; + } + + public IWandRodOnUpdate getOnUpdate() { + return onUpdate; + } + + public void setOnUpdate(IWandRodOnUpdate onUpdate) { + this.onUpdate = onUpdate; + } + + public boolean isGlowing() { + return glow; + } + + public void setGlowing(boolean hasGlow) { + this.glow = hasGlow; + } + + /** + * The research a player needs to have finished to be able to craft a wand with this rod. + */ + public String getResearch() { + return "ROD_"+getTag(); + } + + // Some examples: + // WandRod WAND_ROD_WOOD = new WandRod("wood",25,new ItemStack(Item.stick),1); + // WandRod WAND_ROD_BLAZE = new WandRod("blaze",100,new ItemStack(Item.blazeRod),7,new WandRodBlazeOnUpdate()); +} diff --git a/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java b/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java new file mode 100644 index 00000000..7224e12f --- /dev/null +++ b/src/api/java/thaumcraft/api/wands/WandTriggerRegistry.java @@ -0,0 +1,126 @@ +package thaumcraft.api.wands; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +/** + * This class serves a similar function to IWandable in that it allows wands to interact + * with object in the world. In this case it is most useful for adding interaction with non-mod + * blocks where you can't control what happens in their code. + * Example where it is used is in crafting the thaumonomicon from a bookshelf and the + * crucible from a cauldron + * + * @author azanor + * + */ +public class WandTriggerRegistry { + + private static HashMap> triggers = new HashMap>(); + private static final String DEFAULT = "default"; + + /** + * Registers an action to perform when a casting wand right clicks on a specific block. + * A manager class needs to be created that implements IWandTriggerManager. + * @param manager + * @param event a logical number that you can use to differentiate different events or actions + * @param block + * @param meta send -1 as a wildcard value for all possible meta values + * @param modid a unique identifier. It is best to register your own triggers using your mod id to avoid conflicts with mods that register triggers for the same block + */ + public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, Block block, int meta, String modid) { + if (!triggers.containsKey(modid)) { + triggers.put(modid, new HashMap()); + } + HashMap temp = triggers.get(modid); + temp.put(Arrays.asList(block,meta),Arrays.asList(manager,event)); + triggers.put(modid, temp); + } + + /** + * for legacy support + */ + public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, Block block, int meta) { + registerWandBlockTrigger(manager, event, block, meta, DEFAULT); + } + + /** + * Checks all trigger registries if one exists for the given block and meta + * @param block + * @param meta + * @return + */ + public static boolean hasTrigger(Block block, int meta) { + for (String modid:triggers.keySet()) { + HashMap temp = triggers.get(modid); + if (temp.containsKey(Arrays.asList(block,meta)) || + temp.containsKey(Arrays.asList(block,-1))) return true; + } + return false; + } + + /** + * modid sensitive version + */ + public static boolean hasTrigger(Block block, int meta, String modid) { + if (!triggers.containsKey(modid)) return false; + HashMap temp = triggers.get(modid); + if (temp.containsKey(Arrays.asList(block,meta)) || + temp.containsKey(Arrays.asList(block,-1))) return true; + return false; + } + + + /** + * This is called by the onItemUseFirst function in wands. + * Parameters and return value functions like you would expect for that function. + * @param world + * @param wand + * @param player + * @param x + * @param y + * @param z + * @param side + * @param block + * @param meta + * @return + */ + public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player, + int x, int y, int z, int side, Block block, int meta) { + + for (String modid:triggers.keySet()) { + HashMap temp = triggers.get(modid); + List l = temp.get(Arrays.asList(block,meta)); + if (l==null) l = temp.get(Arrays.asList(block,-1)); + if (l==null) continue; + + IWandTriggerManager manager = (IWandTriggerManager) l.get(0); + int event = (Integer) l.get(1); + boolean result = manager.performTrigger(world, wand, player, x, y, z, side, event); + if (result) return true; + } + return false; + } + + /** + * modid sensitive version + */ + public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player, + int x, int y, int z, int side, Block block, int meta, String modid) { + if (!triggers.containsKey(modid)) return false; + HashMap temp = triggers.get(modid); + List l = temp.get(Arrays.asList(block,meta)); + if (l==null) l = temp.get(Arrays.asList(block,-1)); + if (l==null) return false; + + IWandTriggerManager manager = (IWandTriggerManager) l.get(0); + int event = (Integer) l.get(1); + return manager.performTrigger(world, wand, player, x, y, z, side, event); + } + +} diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java index 26d324bc..c27a2b1b 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselTabs.java @@ -14,7 +14,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ChiselTabs { private static class CustomCreativeTab extends CreativeTabs { - + private boolean search; private ItemStack stack; @@ -37,25 +37,25 @@ public class ChiselTabs { public ItemStack getIconItemStack() { return stack; } - + @Override - @SideOnly(Side.CLIENT) - public String getBackgroundImageName() { + @SideOnly(Side.CLIENT) + public String getBackgroundImageName() { - return search ? "item_search.png" : super.getBackgroundImageName(); - } + return search ? "item_search.png" : super.getBackgroundImageName(); + } - @Override - public int getSearchbarWidth() { + @Override + public int getSearchbarWidth() { - return 89; - } - - @Override - public boolean hasSearchBar() { + return 89; + } - return search; - } + @Override + public boolean hasSearchBar() { + + return search; + } } private static boolean atLeastOneModIsLoaded = false; @@ -74,21 +74,26 @@ public class ChiselTabs { public static void postInit() { - if(Features.CHISEL.enabled()) - tabChisel.setTabIconItemStack(new ItemStack(ChiselItems.chisel)); - else tabChisel.setTabIconItemStack(new ItemStack(Items.stick)); - if(Features.HOLYSTONE.enabled()) - tabStoneChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.holystone)); - else tabStoneChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.stonebrick)); - if(Features.WOOD.enabled()) - tabWoodChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.planks[0], 1, 1)); - else tabWoodChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.planks)); - if(Features.TECHNICAL.enabled()) - tabMetalChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.technical)); - else tabMetalChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.iron_block)); - if(Features.JACKOLANTERN.enabled()) - tabOtherChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.jackolantern[0])); - else tabOtherChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.lit_pumpkin)); + if (Features.CHISEL.enabled()) + tabChisel.setTabIconItemStack(new ItemStack(ChiselItems.chisel)); + else + tabChisel.setTabIconItemStack(new ItemStack(Items.stick)); + if (Features.HOLYSTONE.enabled()) + tabStoneChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.holystone)); + else + tabStoneChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.stonebrick)); + if (Features.WOOD.enabled()) + tabWoodChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.planks[0], 1, 1)); + else + tabWoodChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.planks)); + if (Features.TECHNICAL.enabled()) + tabMetalChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.technical)); + else + tabMetalChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.iron_block)); + if (Features.JACKOLANTERN.enabled()) + tabOtherChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.jackolantern[0])); + else + tabOtherChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.lit_pumpkin)); if (atLeastOneModIsLoaded) { if (Features.ARCANE.enabled()) { @@ -96,9 +101,10 @@ public class ChiselTabs { } else if (Features.BLOOD_RUNE.enabled()) { tabModdedChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.bloodRune)); } else { - if(ChiselBlocks.voidstone != null) - tabModdedChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.voidstone)); - else tabModdedChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.obsidian)); + if (ChiselBlocks.voidstone != null) + tabModdedChiselBlocks.setTabIconItemStack(new ItemStack(ChiselBlocks.voidstone)); + else + tabModdedChiselBlocks.setTabIconItemStack(new ItemStack(Blocks.obsidian)); } } } From 5343825bf24fd33d15d82ba073b1880dffb2a401 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 28 Feb 2015 14:12:08 -0500 Subject: [PATCH 30/85] Force chisel durabilities to be short values, reduce obsidian default --- .../java/com/cricketcraft/chisel/config/Configurations.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/config/Configurations.java b/src/main/java/com/cricketcraft/chisel/config/Configurations.java index ff35243c..6afc0d41 100644 --- a/src/main/java/com/cricketcraft/chisel/config/Configurations.java +++ b/src/main/java/com/cricketcraft/chisel/config/Configurations.java @@ -91,9 +91,9 @@ public class Configurations { /* chisel */ category = "chisel"; allowChiselDamage = config.get(category, "allowChiselDamage", true, "Should the chisel be damageable and take damage when it chisels something.").getBoolean(); - ironChiselMaxDamage = config.get(category, "ironChiselMaxDamage", 500, "The max damage of the standard iron chisel. Default: 500.").getInt(); - diamondChiselMaxDamage = config.get(category, "diamondChiselMaxDamage", 5000, "The max damage of the diamond chisel. Default: 5000").getInt(); - obsidianChiselMaxDamage = config.get(category, "obsidianChiselMaxDamage", 50000, "The max damage of the obsidian chisel. Default: 50000").getInt(); + ironChiselMaxDamage = config.getInt("ironChiselMaxDamage", category, 500, 1, Short.MAX_VALUE, "The max damage of the standard iron chisel."); + diamondChiselMaxDamage = config.getInt("diamondChiselMaxDamage", category, 5000, 1, Short.MAX_VALUE, "The max damage of the diamond chisel."); + obsidianChiselMaxDamage = config.getInt("obsidianChiselMaxDamage", category, 2500, 1, Short.MAX_VALUE, "The max damage of the obsidian chisel."); ironChiselCanLeftClick = config.get(category, "ironChiselCanLeftClick", true, "If this is true, the iron chisel can left click chisel blocks. If false, it cannot.").getBoolean(); ironChiselHasModes = config.get(category, "ironChiselHasModes", false, "If this is true, the iron chisel can change its chisel mode just as the diamond chisel can.").getBoolean(); allowChiselCrossColors = config.get(category, "allowChiselCrossColors", true, "Should someone be able to chisel something into a different color.").getBoolean(); From 5846ce6a120a778490af415e7cabb29875fe70b0 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sun, 1 Mar 2015 11:45:01 -0500 Subject: [PATCH 31/85] Fix crash without TC installed --- .../com/cricketcraft/chisel/compat/Compatibility.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index 59ab864e..e83dc8ce 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -53,8 +53,9 @@ public class Compatibility { addSupport("PFAAGeologica", "strongCobble", "cobblestone", 3, 99); /* Thaumcraft TODO There is probably a cleaner way of doing this */ - ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestone, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); - ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestoneWall, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + if (Loader.isModLoaded("Thaumcraft")) { + loadThaumcraftAspects(); + } } public static void addSupport(String modname, String blockname, String name, int metadata, int order) { @@ -66,4 +67,9 @@ public class Compatibility { public static void addSupport(String name, Block block, int metadata, int order) { Carving.chisel.addVariation(name, block, metadata, order); } + + private static void loadThaumcraftAspects() { + ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestone, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestoneWall, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); + } } From 795f98adfe788db1b4c583f5ceb91076055b1e57 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Wed, 4 Mar 2015 13:25:33 -0500 Subject: [PATCH 32/85] Improve chisel container/slot code to prevent crashes/dupes Fixes #257 #236 --- .../chisel/inventory/ContainerChisel.java | 13 +++-- .../chisel/inventory/SlotChiselSelection.java | 48 ++++--------------- 2 files changed, 16 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/inventory/ContainerChisel.java b/src/main/java/com/cricketcraft/chisel/inventory/ContainerChisel.java index f6962945..93cd72af 100644 --- a/src/main/java/com/cricketcraft/chisel/inventory/ContainerChisel.java +++ b/src/main/java/com/cricketcraft/chisel/inventory/ContainerChisel.java @@ -16,7 +16,7 @@ public class ContainerChisel extends Container { public final InventoryChiselSelection inventory; public InventoryPlayer playerInventory; - int currentIndex; + int chiselSlot; public ItemStack chisel; public boolean finished; public ICarvingRegistry carving; @@ -24,7 +24,7 @@ public class ContainerChisel extends Container { public ContainerChisel(InventoryPlayer inventoryplayer, InventoryChiselSelection inv) { inventory = inv; playerInventory = inventoryplayer; - currentIndex = playerInventory.currentItem; + chiselSlot = playerInventory.currentItem; inv.container = this; int top = 8, left = 62; @@ -64,7 +64,10 @@ public class ContainerChisel extends Container { @Override public ItemStack slotClick(int par1, int par2, int par3, EntityPlayer par4EntityPlayer) { // we need to subtract away all the other slots - if (par1 - inventory.getSizeInventory() - 27 == currentIndex) + int clickedSlot = par1 - inventory.getSizeInventory() - 27; + + // if the player has clicked on the chisel or is trying to use a number key to force an itemstack into the slot the chisel is in + if (clickedSlot == chiselSlot || (par3 == 2 && par2 == chiselSlot)) return null; return super.slotClick(par1, par2, par3, par4EntityPlayer); @@ -128,7 +131,7 @@ public class ContainerChisel extends Container { } public void onChiselSlotChanged() { - ItemStack stack = playerInventory.mainInventory[currentIndex]; + ItemStack stack = playerInventory.mainInventory[chiselSlot]; if (stack == null || !stack.isItemEqual(chisel)) finished = true; @@ -137,6 +140,6 @@ public class ContainerChisel extends Container { General.setChiselTarget(chisel, inventory.getStackInSpecialSlot()); - playerInventory.mainInventory[currentIndex] = chisel; + playerInventory.mainInventory[chiselSlot] = chisel; } } diff --git a/src/main/java/com/cricketcraft/chisel/inventory/SlotChiselSelection.java b/src/main/java/com/cricketcraft/chisel/inventory/SlotChiselSelection.java index 2170a7f3..eb7d4a57 100644 --- a/src/main/java/com/cricketcraft/chisel/inventory/SlotChiselSelection.java +++ b/src/main/java/com/cricketcraft/chisel/inventory/SlotChiselSelection.java @@ -13,6 +13,9 @@ import com.cricketcraft.chisel.utils.GeneralClient; public class SlotChiselSelection extends Slot { + private final ContainerChisel container; + private final InventoryChiselSelection selInventory; + public SlotChiselSelection(ContainerChisel container, InventoryChiselSelection inv, IInventory iinventory, int i, int j, int k) { super(iinventory, i, j, k); @@ -35,18 +38,13 @@ public class SlotChiselSelection extends Slot { @Override public void onPickupFromSlot(EntityPlayer player, ItemStack itemstack) { - ItemStack stack = player.inventory.getItemStack(); + ItemStack heldStack = player.inventory.getItemStack(); ItemStack crafted = selInventory.inventory[InventoryChiselSelection.normalSlots]; - if (stack == null) { - if (crafted != null && crafted.stackSize > 0) - crafted.stackSize--; - if (crafted.stackSize == 0) - crafted = null; - - selInventory.setInventorySlotContents(InventoryChiselSelection.normalSlots, crafted); + if (heldStack == null) { + selInventory.decrStackSize(InventoryChiselSelection.normalSlots, 1); } else { - putStack(new ItemStack(itemstack.getItem(), itemstack.stackSize, itemstack.getItemDamage())); + putStack(itemstack.copy()); player.inventory.setItemStack(null); @@ -58,7 +56,7 @@ public class SlotChiselSelection extends Slot { } selInventory.updateItems(); - + if (((IChiselItem) container.chisel.getItem()).onChisel(player.worldObj, container.chisel, General.getVariation(crafted))) { container.chisel.damageItem(1, player); if (container.chisel.stackSize <= 0) { @@ -70,35 +68,5 @@ public class SlotChiselSelection extends Slot { String sound = Carving.chisel.getVariationSound(crafted.getItem(), crafted.getItemDamage()); GeneralClient.playChiselSound(player.worldObj, MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), sound); } - - /* - * ItemStack stack=player.inventory.getItemStack(); - * - * putStack(new ItemStack(itemstack.itemID, itemstack.stackSize, - * itemstack.getItemDamage())); - * - * super.onPickupFromSlot(player,itemstack); - * - * player.inventory.setItemStack(null); - * - * if(selInventory.items[InventoryChiselSelection.normalSlots]==null) - * return; - * - * player.inventory.setItemStack(new ItemStack(itemstack.itemID, - * selInventory.items[InventoryChiselSelection.normalSlots].stackSize, - * itemstack.getItemDamage())); - * selInventory.setInventorySlotContents(InventoryChiselSelection - * .normalSlots,null); - * - * selInventory.updateItems(); - * - * String sound=Carving.chisel.getVariationSound(itemstack.itemID, - * itemstack.getItemDamage()); player.worldObj.playSoundAtEntity(player, - * sound, 0.3f + 0.7f * General.rand.nextFloat(), 0.6f + 0.4f * - * General.rand.nextFloat()); - */ } - - ContainerChisel container; - InventoryChiselSelection selInventory; } From 601573eb8122059dcc9f6da05c3c7e04923c8a06 Mon Sep 17 00:00:00 2001 From: Cricket Date: Wed, 4 Mar 2015 16:40:02 -0500 Subject: [PATCH 33/85] They just need descriptions --- .../java/com/cricketcraft/chisel/Features.java | 10 +++++++++- .../chisel/textures/blocks/valentines/1.png | Bin 0 -> 499 bytes .../chisel/textures/blocks/valentines/2.png | Bin 0 -> 361 bytes .../chisel/textures/blocks/valentines/3.png | Bin 0 -> 383 bytes .../chisel/textures/blocks/valentines/4.png | Bin 0 -> 380 bytes .../chisel/textures/blocks/valentines/5.png | Bin 0 -> 366 bytes .../chisel/textures/blocks/valentines/6.png | Bin 0 -> 339 bytes .../chisel/textures/blocks/valentines/7.png | Bin 0 -> 351 bytes .../chisel/textures/blocks/valentines/8.png | Bin 0 -> 456 bytes .../chisel/textures/blocks/valentines/9.png | Bin 0 -> 450 bytes .../chisel/textures/blocks/valentines/bricks.png | Bin 512 -> 0 bytes 11 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/1.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/2.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/3.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/5.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/6.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/7.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/8.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/9.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/valentines/bricks.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 4cda79e8..abdf226f 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2490,8 +2490,16 @@ public enum Features { void addBlocks() { BlockCarvable valentines = (BlockCarvable) new BlockCarvable(Material.wood).setStepSound(Block.soundTypeStone).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(2F) .setResistance(10F); - valentines.carverHelper.addVariation("tile.valentines.0.desc", 0, "valentines/bricks"); + valentines.carverHelper.addVariation("tile.valentines.0.desc", 0, "valentines/1"); valentines.carverHelper.addVariation("tile.valentines.1.desc", 1, "valentines/companion"); + valentines.carverHelper.addVariation("tile.valentines.2.desc", 2, "valentines/2"); + valentines.carverHelper.addVariation("tile.valentines.3.desc", 3, "valentines/3"); + valentines.carverHelper.addVariation("tile.valentines.4.desc", 4, "valentines/4"); + valentines.carverHelper.addVariation("tile.valentines.5.desc", 5, "valentines/5"); + valentines.carverHelper.addVariation("tile.valentines.6.desc", 6, "valentines/6"); + valentines.carverHelper.addVariation("tile.valentines.7.desc", 7, "valentines/7"); + valentines.carverHelper.addVariation("tile.valentines.8.desc", 8, "valentines/8"); + valentines.carverHelper.addVariation("tile.valentines.9.desc", 9, "valentines/9"); valentines.carverHelper.registerAll(valentines, "valentines"); Carving.chisel.registerOre("valentines", "blockValentines"); } diff --git a/src/main/resources/assets/chisel/textures/blocks/valentines/1.png b/src/main/resources/assets/chisel/textures/blocks/valentines/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d7db129788d90ae707709489a08d018bb53ee58f GIT binary patch literal 499 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0c1%;K~y+TWs)&V#6S>*@2A;YS%{s8g_V_s z#zusLY>^@$NUGSRNtq^Cm_m=M!XZ{7Xcw%)$zdlJ@teF{lJg$RFuOBv-@I%l&bjLm z*xt18Jde0tHA0%E*%p!{>9Q<~;z0Hk3t)##>M!-W51dOCIGzd&3HAJKUp;JH$1x!;`UoVA@<*w!_x{>f9 z4>C=+bjW)(-eJSEM#8i`MY|wtk#oMf`1=2FY?#XTeWU<0#LT=By}Z;C1rt33 zJ=4@yqg0@pTb?eCAr}6n6Agu$4R~1oI%IvXQSg;>m_AK!{RidE*Rn*^d7=$2z2r;0 z+?Q~Bo8hs_dF8t2%MFVm61%hvqxDreES5U^UEVb+Nm?8~lLEd0rI zC49qs>rxi$tqT&qx>jZ!+cDp9m)H!cgj~5@clzVC7DyKxpS@&lF45uN*}&_XdP(Ak z+g$_x*y*)rH%Ky9-97S$e^>T0(GZ!9EE&%izMQILaeMV_seRj*Y^j^gmo<69_K@UX zrVac$S0#LT=By}Z;C1rt33 zJ=4@yqg0@p51uZLAr}6nlQ!}(28y`cZ`Ta<;+^Za{IZ6s(A=)H#X?f53xhkHUQVBL z_GVA-1fRn6cW3s#-+Q-6I&}KMU9Zl>oxYsB>A$qC>M9zJ<3fTEgBh z8eh_Io=0QFOh<+crDQn^ZgmYlhrRvVAKZvm@zf32w05US?w#uo*^Y=?+}nC~>0`U^ z;khacX1_dY;{AW8@CThz2d9ZXYj(}-2)!~rP5kP4p4o;Ao~yok|6tu0qv)ez-h0ab zdKIW0#LT=By}Z;C1rt33 zJ=4@yqg0@px1KJJAr}6n6Ak+g8Hl*l?pPb3)zu;V##Bk=mG9P&kmyAv9$)VCq}yk2 z5HsAg$o_NspWNj-yq8UKZ*N=oTK&}bI|0m}Z7zpRm0IvupV_NwLc~Yc?W_R~j=cYW zTTQy?a?EDIYfXnj<}1g)x0c?WyCRc0OPnjr{MGbjy}#>zq#m8_dYvKp_tMAv-qs(R z+K_kVsEM=vPT>sqOh!&uqm8f9-0v=kv+DmlFVTqY%O01%{JSonzNfWKf@#6mO9e~C z)_l3^%Nw_TiOD=)_N|^5;x%)BNE~3-F=G58-_Eu1+<`#Ow~P&1$AqngCoW=}_LOsW XeJRJiU2V-kk283>`njxgN@xNAK`EAG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/valentines/5.png b/src/main/resources/assets/chisel/textures/blocks/valentines/5.png new file mode 100644 index 0000000000000000000000000000000000000000..4455e542387b0e670b985399c5c861db8d36a9ad GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ=4@yqg0@p`<^b2Ar}6*lNNF@B?`2>SLJQvwrf1P9?OhT9Bo8nb#oXZvSi! zhli&%l$8$TF0<3WvC?(N(sypBE11p-{LEoh6MVq>h9R4K=h2OMzZ()2C*Hjj>+s#A z$W1rY$tB?j->J=Etm(VXzuLOy=aMh;8{BUO?huT1*qdCH@Nn8Y=E_7H7lwS9{muVe zzopr01=InQ~&?~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/valentines/6.png b/src/main/resources/assets/chisel/textures/blocks/valentines/6.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3101eb6badda5d46da6a98b92c83445b0e0f2c GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ=4@yqg0@pBc3jfAr}6*7Y+HC9C?@z{MP1`<(1W6@Psj>LnzL{|7`z<%&>i;PMeB4 zWz~0ApZ;A@FT3tha{bRa^BOiPAR)Zt~IY}Km(Tb8Oj(p8)n9Nkp^wgY` zkWzfH?TM{{TJGwFM!s)4jFOwnANZ~Pb6TT)q3l(z#}f}T*j(7BqM9q+mX*l4?9iEh zZ}w$L)~c$`S3jB0#LT=By}Z;C1rt33 zJ=4@yqg0@p3!W~HAr}5qCvD_9(&^-a z(ku24A5VSJ#xRFt?hmhu2@zb2_s47AU8sA>e1_vh3t#a9&Don%rhoe{R4QGuB;|+X sN%yi$u9_BShDF*dI}>_W?Wth)UU2?uu!z-Opx+ogUHx3vIVCg!02Gmd^8f$< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/valentines/8.png b/src/main/resources/assets/chisel/textures/blocks/valentines/8.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc1fb62879ee68f4ed372a5944787559a1d8fb7 GIT binary patch literal 456 zcmV;(0XP1MP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0Xa!TK~y+TZIZD{15pq~U!nitf7to~mNpg^ zDbfofD2O&%XpzW*Hi95lK?{)xHllVxgJ6+D&_=WpA>b#h=W&*CSp%10X5PJX-@M&4 zJ{W!#17ZU-10S7xK=QJARSBpc*LtI^OXK%`p9t<&P5@2g#Zo5=fII>Frk&n4j_Mkb z10qMD^ToaFKoN-X@`4KJWC06Er3MI|x>KXoZZu_!eyjKs1YWm~ z8z#WK5>UXi1rL+6xr7NN`_yGw@PCK0EXNP??5&a{G}W`hqabns>HT!(d3{={J`)7C zxIN=x16QxJNh*OgGH(1cn1!uLXeJ0^3?@3Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0W(QNK~y+TZIQt%L{SvR-#=+#VZnkdq^YqO zN=l?zJfRSo#j8OQCX~@A^e_v`Q>4biMp8CPHWvJD-*lXwsjshd&;5S)+;?B}Q+@hQ z9`T%Lnm#KTqIiohqOa9EwOTXvm)Uc<>2|V)Xv$BAD$&Q{4NNZQB}NLsbNS?9Vm}+- zWe-eZPfH40;*G(T=zXr4jqSj+rjB%^q?|<&odCSXDFC`IZE23uIZR3m$sb^I*!Z7T z-3G3TRnmB4c+D6kaE}E*-{8gFY>slqgjW*4*|?25D<+qv4U2XFbRVQb3~%7m6m39J z!!*z{9RQo)C5F2ZMSOAi5BzDR&HWOIAxs4W&BMM0n6!}m0*7+}gZ>0&a{vGU07*qoM6N<$g7)CL$^ZZW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/valentines/bricks.png b/src/main/resources/assets/chisel/textures/blocks/valentines/bricks.png deleted file mode 100644 index 57f3a8380893409da538007d6fbed96441cec970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0dYx0K~y+TZIVArf>9KQ?-xq#iv$+FX(mB) z4Mq_}Btm5nnr1X4L@q5&5r%{s8Z;F(1kq45G*m-dLqqS|^ZJW}MDTDq_x!)-T=%`+ z4RUS2&LeoECor;h-ogpaAi zN^HWB6_rqo%)r%T;&0-m&4}k{K*`K(@j^sMH8nk$CE z)33M2wJkzdmLG(bUl z3;BcrgDODKy!8XfVwE8bP#h=#;VNEKOUUMD{8q3#`3PV*?8j;<5hqrMS Date: Fri, 6 Mar 2015 23:15:16 +0100 Subject: [PATCH 34/85] Shingle Textures Here are the Shingle Textures. --- .../textures/blocks/shingles/Shingle1-v4.png | Bin 0 -> 1023 bytes .../textures/blocks/shingles/Shingle2-v4.png | Bin 0 -> 810 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle1-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle2-v4.png diff --git a/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle1-v4.png b/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle1-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..849f3e71167c25853a9948635ebbbd8f2066aded GIT binary patch literal 1023 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&18_-1K~zXfg_hrI6G0S(=MNEm5Tvw(C}L?e zmgs7mXhB7#)*8DvX9)P=gT;5n98qGvY!?0X%LMxC z)As(oD@3A!!OvG+8yu}IW59zLeAK(mU^E8M7{FjKSZ&zA3dNvn@v z4MR&fPr&mY(#{L>dl1RRV!&RvwpEK@N@a?U(JxhC$WO}f)V1AZV28*1*OB9ZYKA3evTj?udI`J zFNXPSAZT&{&={~n7@&P+Rq$R6^NEQt0CPA`R+=Ol4+@2#sVl3R*J7B@=ivS7tT+Nr zg6^ojuwu;bU(Z|CjI|gT8ATnqS4wjo3L?(_MeGl-UP-ykJpw=1>HkrqRLMd;CJWZIf@4=6ayV3+Fgi44nX&Hy2EShRFu-~2N(s9= z@)#g=@5j7#o`DQKDLhmtnz~ZZ@=&2lJVJ$XUc8ypzXvQDzXX_{RlzGSo_9(rE`4}1 zDb33oDDG|stLPPc%roz#;;O@iv*tzO?#6&51{HkN*+9kBjOf#3#c8rMUa5wH9t&qMM#a1jah tsoPf#+Rvr=vAATOycsrv^@wlP{{lT$@p$kC!>j-R002ovPDHLkV1g~%+tL64 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle2-v4.png b/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle2-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea99d738cd1643fbfc7d7db5a8e0f3b35122126e GIT binary patch literal 810 zcmV+_1J(SAP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0-H%hK~zXfy_Lag6hRb4`%eTB6%1m8VN^0` zKuC+x?5L7CY)M=9kZocZp9&*I+7tesGugyqLlNes)Owe7t~n9GKSN+mkzA zj&7#GoBd0#_bvdbr@`sN>+kMgO=J0t{{HqZOh!L{&>qNf;0K-sn&5(-s079833A724QNQ98eDRN$Sp6c`1gFXh=(H6L~0PD*Bqwi)#xA3_lUET**ZUH zXf=@=>Qi~0Fh>7+GCzHEW1Sy99L@;3X(9#mhak|Wa*c-P*%_T!=Lh-_opD`M=3n`N z6~e!2A}>hL99^TKog{SLoq*|hb@=R_fyD<@O-upr2&B>IP7*nzgz5OIXZI`{jGBmE zcZQQhF4OTf&+b|7g9NHMmFCg;t)hBjiXZr^pOk8%rjy6eOqfiqg&D1FtEhfbAT+U> z9z)}&47{~fueI$B>L*1L(W~jBpCfc@JKfsWfCoXUfnwy6U&ur*YY697egm(Z2O7r> zcLww*L#__*Bz64Cd7yDX?u-&3-2KgvMt`6fQb^P|vgM4bp zcrPNxxw^^KD?{#QY6A~2_^CnF(5cm3b3aoX_|_nw8oFs51);muo!s-Io(EGr%=XWN zn8kY$$_p#U4Y0muI>hn?ihE84bb7;4f4wd)wsGFG`ce6 zQ|HI}Zul?ffyR+*E`+O_Jch<-Cx+Y!gBh)Dt4QMlY3_#A?GA9l&_`?A8&u<}xvp;X oI!Se6oG^52(XHL`d9c{|1F4>;QAr@3zyJUM07*qoM6N<$f_Y(l+5i9m literal 0 HcmV?d00001 From 156827d5cc7cf3ed323ee6a644af32e13629c980 Mon Sep 17 00:00:00 2001 From: Mango Date: Sat, 7 Mar 2015 12:47:13 +0100 Subject: [PATCH 35/85] Description started #Shingles Made a small description for the Shingle Textures, more are comming soon! --- src/main/resources/assets/chisel/lang/en_US.lang | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 110b2a3d..0245eabf 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -30,6 +30,11 @@ item.upgrade_stack.desc=Allows it to manufacture stacks at a time #Chisel 2 +#Shingles +tile.chisel.shingles.name="Shingles" +tile.shingles.0.desc="Red Diagonal" +tile.shingles.1.desc="Red Tiny Squares" + #Valentines tile.chisel.valentines.name=Valentines Block tile.valentines.0.desc=Valentines Bricks From 1374ca5d1ff205bd0160a7d8fd842f25fe7f3548 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 08:03:26 -0800 Subject: [PATCH 36/85] Add Imperial+Rebel Blocks... :P --- .../com/cricketcraft/chisel/Features.java | 32 ++++++++++++++++++ .../chisel/init/ChiselBlocks.java | 1 + .../resources/assets/chisel/lang/en_US.lang | 17 +++++++--- .../blocks/nation/imperialCamo-v4.png | Bin 0 -> 5586 bytes .../blocks/nation/imperialCamoSecluded-v4.png | Bin 0 -> 5609 bytes .../nation/imperialCautionOrange-ctm.png | Bin 0 -> 4706 bytes .../blocks/nation/imperialCautionOrange.png | Bin 0 -> 3520 bytes .../nation/imperialCautionWhite-ctm.png | Bin 0 -> 4767 bytes .../blocks/nation/imperialCautionWhite.png | Bin 0 -> 3546 bytes .../textures/blocks/nation/imperialPlate.png | Bin 0 -> 3552 bytes .../textures/blocks/nation/rebelCamo-v4.png | Bin 0 -> 5649 bytes .../blocks/nation/rebelCamoSecluded-v4.png | Bin 0 -> 5676 bytes .../blocks/nation/rebelCautionRed-ctm.png | Bin 0 -> 4822 bytes .../blocks/nation/rebelCautionRed.png | Bin 0 -> 3553 bytes .../blocks/nation/rebelCautionWhite-ctm.png | Bin 0 -> 4750 bytes .../blocks/nation/rebelCautionWhite.png | Bin 0 -> 3554 bytes .../textures/blocks/nation/rebelPlate.png | Bin 0 -> 3548 bytes 17 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCamo-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCamoSecluded-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionOrange-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionOrange.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionWhite-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionWhite.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/imperialPlate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCamo-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCamoSecluded-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCautionRed-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCautionRed.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCautionWhite-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelCautionWhite.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/nation/rebelPlate.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index abdf226f..a39ef933 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1558,6 +1558,38 @@ public enum Features { } }, + NATION { + + @Override + void addBlocks() { + BlockCarvable imperial = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); + imperial.carverHelper.addVariation("tile.nation.0.desc", 0, "nation/imperialCamo"); + imperial.carverHelper.addVariation("tile.nation.1.desc", 1, "nation/imperialCamoSecluded"); + imperial.carverHelper.addVariation("tile.nation.2.desc", 2, "nation/imperialPlate"); + imperial.carverHelper.addVariation("tile.nation.3.desc", 3, "nation/imperialCautionWhite"); + imperial.carverHelper.addVariation("tile.nation.4.desc", 4, "nation/imperialCautionOrange"); + imperial.carverHelper.registerBlock(imperial, "imperial"); + imperial.carverHelper.registerAll(imperial, "nation"); + + BlockCarvable rebel = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); + rebel.carverHelper.addVariation("tile.nation.0.desc", 0, "nation/rebelCamo"); + rebel.carverHelper.addVariation("tile.nation.1.desc", 1, "nation/rebelCamoSecluded"); + rebel.carverHelper.addVariation("tile.nation.2.desc", 2, "nation/rebelPlate"); + rebel.carverHelper.addVariation("tile.nation.3.desc", 3, "nation/rebelCautionWhite"); + rebel.carverHelper.addVariation("tile.nation.4.desc", 4, "nation/rebelCautionRed"); + rebel.carverHelper.registerBlock(rebel, "rebel"); + rebel.carverHelper.registerVariations("nation", rebel); + + Carving.chisel.registerOre("nation", "nation"); + } + + @Override + void addRecipes() { + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChiselBlocks.nation, 32, 0), new Object[] { "xyx", "yzy", "xyx", 'x', "stone", 'y', + Items.iron_ingot, 'z', Items.gold_nugget })); + } + }, + NETHER_BRICK { @Override diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index 10b8b3cd..340c9e09 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -30,6 +30,7 @@ public final class ChiselBlocks { public static final BlockCarvableGlowstone glowstone = null; public static final BlockCarvable lapis_block = null; public static final BlockCarvable emerald_block = null; + public static final BlockCarvable nation = null; public static final BlockCarvable nether_brick = null; public static final BlockCarvable netherrack = null; public static final BlockCarvable mossy_cobblestone = null; diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 0245eabf..12a74faf 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -30,10 +30,19 @@ item.upgrade_stack.desc=Allows it to manufacture stacks at a time #Chisel 2 +#Nation +tile.chisel.imperial.name=Imperialistic Block +tile.chisel.rebel.name=Rebellious Block +tile.nation.0.desc=Camouflaged +tile.nation.1.desc=Camouflaged (Secluded) +tile.nation.2.desc=Bolted Plate +tile.nation.3.desc=White Caution Tape +tile.nation.4.desc=Teamed Caution Tape + #Shingles -tile.chisel.shingles.name="Shingles" -tile.shingles.0.desc="Red Diagonal" -tile.shingles.1.desc="Red Tiny Squares" +tile.chisel.shingles.name=Shingles +tile.shingles.0.desc=Red Diagonal +tile.shingles.1.desc=Red Tiny Squares #Valentines tile.chisel.valentines.name=Valentines Block @@ -107,7 +116,7 @@ tile.voidstone.7.desc=Beveled Voidstone tile.chisel.voidstonePillar.name=Voidstone Pillar tile.voidstonePillar.0.desc=Striped Voidstone Pillar --#Warning +#Warning tile.chisel.warningSign.name=Warning Sign tile.warningSign.0.desc=Radiation tile.warningSign.1.desc=Biohazard diff --git a/src/main/resources/assets/chisel/textures/blocks/nation/imperialCamo-v4.png b/src/main/resources/assets/chisel/textures/blocks/nation/imperialCamo-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..e01a696e9671e12b9dbd206d5ad6de8388c4e9e0 GIT binary patch literal 5586 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/nation/imperialCamoSecluded-v4.png b/src/main/resources/assets/chisel/textures/blocks/nation/imperialCamoSecluded-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..22c61e90667a56697374377641d036725c24763b GIT binary patch literal 5609 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionWhite-ctm.png b/src/main/resources/assets/chisel/textures/blocks/nation/imperialCautionWhite-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..aee80ece2c1a3a98becb3f06228b96ad10d24496 GIT binary patch literal 4767 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/nation/imperialPlate.png b/src/main/resources/assets/chisel/textures/blocks/nation/imperialPlate.png new file mode 100644 index 0000000000000000000000000000000000000000..0e856d83f63e9d4823ad8d3ea2d9131f4c41f977 GIT binary patch literal 3552 zcmV<64IlD}P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009ENklWCR3cz|YDAQn6V>IDzL z+rSduf&~j;Ln27ybZp0ohj?~ec6ln_s>=f8)sa4()zJ}G!ymM>tP}Vkg@N)tgfI{Y zq%iQck0A_vy+#8<>;E%Ex7Wg)teU*Otg%|InK&~HYfUD%hcjBD=91OgBaw^~*-U4qHkP%wIZS6*dH%-S)r{rb$CM&OE}P*O z@196r@nLEX%2jEg+Ezvl-=iYcfjA$AsyYqbPS{lmN>N7PH8MV#4PYg zMz=W1$7n6Oc$VU{n8l7tTw}ysPIz*VWTG}<6!l(@cruC^l1PDI^0?&t!*BSoxlgU#;J~(dD_`W%RSYLH-g)|h z=lKE;ZHKRekNMI$V=$Z&_+Uz5U|A8$kYNZk(r?3|a^py*{x>lS1kMUn_=AhtbTXaFn5tPjTITAZ10EJa#aBy{6k4 zG8rgtMom1SILaqjIwlvlS8PSY6!(ugvUj*D*KtO3;!%s(cARk7KpG-USSR^5{*sUC z$Eby-RBzFK?D8t{8J{+exvG>XHL5JebH1}b=aW{RZg+@U2S`uNxNFol5BuZd77=I$ zz469o%Qa90SoH2`;LU{rAKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000X-Nkl-aLK&K}0ruzs7%JwUy(=L;7AFB%hwE2>yi?4ESb(!J87W+G! zXbYk~%h}2VUs)cQE)VMP;ruBRfUbaKP8WcIDVaI;S}D< zXL#$sMzr-l0rMo(SkwoAVP|9+1u=8|l9fOBU52}NdHiS_&*mheLO3s2t)<+bK8Gzq z2hVVdfZ3{pKoG#^O-9@*e94|Hxi%iZl_bX4uUjOcTny#Ey=!c}D1fuOwC%gmFY- zePo{Jq)ASayj zP-!d^yB(C8VuELklN{F(SS$c9t-6@z3;g2q>nP8|8qNCI3jpkFZ=sZ;TCZ~PD}PFU zcoTF%e;lBu!GzJE$8;K#AKt=|l4{*!7-yho=&BXYdMC`g5lv}W?pSV(V!R7)phh>C zSzO22-RIu@C!Cqvz#R=({^}nwQ}sEs+`)<(OYJs?Cnr>ne?;%jBffaFgSI6_8Y9y* zCYpvs;e<}-G{ez^y}ez6T(Q9gsGY`jCF}DU7iT9p47l`-zoI^S3cMQ9tFv(S8c8@| zW9yh1WeB=Q%q^d0bo)OU-uZX(2j62(mN>YilP>kDOP1zXB+B)CTCI74=@glt;I|e? zqbX&fF;-!)^oj*0{u`_(A5)|b(Z=@?!o{N`4MyZgpJR)dQfo$2xZJwQ@RMJlt%n+J zz|1nP{xQv^E6kpjoZNYc@CvLos5F`~+Py(N?sK*i^7%>1Y<-q8A7bo0{eF)gKAnY( z19OE*ut(h<^DKa{w@VQZnNFrC307Eg0~-ec*pl-@CJlvo1G;bhu51UUg&GQ7om{q&YAPyN@iN;+P}~d2sIz8xOYW4imYgrd}7Eq=vEmj&Yf?Hl&!U>9j(mS!b+A&C=BSV{`5Io$%! zlUM|KsmQ6(FK397l;fR8eEp3V5!rxI;t&>+j4C>vAly2Btp(O1@&N#)bt!PMLQ<{G zkZXgQ_VySaKBd8cqoF{n7SW)O)|O%6VVZ`j4_PUxdYWNY=W(*kco?#A<3rxLc80;x z9-CvIOf3+O_pwG(t+==*qiTk9>OKu;iqx<>k&NUTxpmmxeu9ciOB@W?8BGZq7r5$= z$o3ylsv1=1c~Gn)n(JKRzsYllyi|;bL&B3Ck~m>f)c9gNM}Hh+OdqWcQc9}xD|8=z zzDA;lO5l} zw;F%4hYSaZydcQI@a12~_z0Etk;kFnv&}woV>zNef!%~7CTHcL$_?vuU$c-Fj<81U79bx!)`f`G2j(L7V=FzsS&L;lvFjO6i5W0 z|MGuX&bO$%@P|kYWA_|JXez$P8|s%hH*YgH_ZD{fO@{q0X7Od>ykK){i^FjfokgT+ z7wPm_^b$N*QC+)C?c%q1_Zocs&wq<>1peCVXj8|jcTqw*$ksVTT!Plbg~ERJ_YCqG z@=_y~f0b{3?RAoeyU45u;~Nx~p+z6Xp3xEN7}Ep_5{>m<4jGjVg{~skGN{>r0g5U4C+J_scI7L!iZEJR+EkQ641@ zf@KwBi$}O;-$PkA-rK?spHf+Tp6k~iQmehe#pf=<(;raV{thjzD6<5xEVV1lMPsb7 z1Y#A{zDz#pQtQ0L|2*1;-T)yTOqtSbwh^{E9QJ`6I&*K7F{S2a3 z;?-NMuARe_Df>H{U%cMG=yN#s4{c@*9ji}D?)3M%tI6@z707^7Rd9ISvRL4QbxN!Ctdw> zbgCInQi|jQY%svo+L-W&;ix2&DOyhm(w|d{1j)3Z=~~o-g9#gZBWi>D9R7c+h3lcB zJ>2*n+5Ut~HOb6~JjKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000YDNkl7oDR?-bdy%M8YwNc z=oXt^uz?*C>RmSM5W^N0utFecCWS!_O6ZV~m?X9n6WdjBm0fmCuU@_R-uv!&4vX+V ze4q3afAVL4X{T|5F$R++;0QLFF7DYaBr);D9}#wM(>Z)Vp5*`-E3m@h`8R$JdfP@Xp{eGB=q1HW)*_q{wmzq7($g#Whr%WGt<2aP!^2C69(U zg({8YJnrMW6gI!j_~u_Q6bpp3SQ5JkYq&p@2a*Xa?$0ixk?SI5M-6QsU zB$E!hzR28jZ(^-QHZCBgM2L);*MFPmE>tL$G_wV0c_~M!#&Z->f+9u;$s{sFITT!t z(gL?}4jF|ZX`B(KIeBi#lMw3<009WJbXf2LR`dzA3oj#dnZnYO)Ei|!e*Zm;a4@-p zlZ;t(r+DQWqxvgUuKt*6tx2I$Ln?)%T^h|Mv2iICB%x7^x(6uN^FTV*`0a!RJhtgmjd zv%3fNb+lU|Fezm{L>CqH`3n7ew{d>_JHPkV!Q*{Yp-Q#Ag&AypRZCXXmuya5qIb^#l5Xq3#o8@GhagxnorU83rQ{w3qivR(6o>R$twB3+e z-X{|t3M{h=ZKh#}upz5WjTQmk*7uRUp8^Vz!#lefM!Ce(2RJxP$3wpCCD5>phyO{u z{2W#bqVf{C$><;rrWZz3v;k`X!BeXmTmKp#-MEf&U98DjJAV;?hYxm9N>MBq zx%~7G$xdz{Ov2vr0M+ky=ncmRAV2vGM@ouimwp&SUgcCRao+9F(g8JTXwO-04Ff8h z-$L&`VE*z|g4-YR`RyInX78g1J=)K{Nww&)(w@VL5(_gk9CbPrPX2@LXZN_hvrn~J zBJ+nRe==q=8sRu_Zf=?T_wSL1`{>#{fpd{Ysf89@)><(R2|<#w`Kv!6%R6w;MS2z5 zo7XtF_3!MAVrmtK@#!(EFJ5DC>u)epVZ#p1xoae7g3&3JqGlRKSgCQo^X3oV(r$%l z>eIBx_*BT_0Hdl{B*kI@o8=tn7bwR2B$2}JKgN{_evlyZi1helg2{y3SfUgzlzL3} z-e($4F$bTJSqCRQraXUz`uq}|-h^B@_>%!@Jm@ie{5cKJaK1g|Mkk_CZjdE?jBRmt z)}@Qb+-%H&xyoq#h$m<%Q;3AwQ(26hg{U^CWBF}cu0kzjG-3fcv= z@+yT+6ZJqIW$T|CfUg$FvASy1Y zfy`w1DM%|3Lej2j$}aRHm!T|DbOb9eyp9$IJ@W*2cfZ8s8OHHI7g07o=E|I;PRB6!+Cx*n-4^Vv`TfbMXDa1=to*;$t)O_0(-YY%lC z6c`@{xMVCYxWuvHY$7Qs51UUZiwOfi!qWyHklq|YG$fivkQ(;(kI9n}aV!|b0i){E z^zs4e!9%=al{9O!|IWYi((B*k(+}Rm7z2P3Q1D#TlTSU#wumUGj7uw;Ad<9vLqC=T zamF)C;1(s;3jEk3ku~;`d6GCL85~ew-l8D~98YWH5qPpmvk)UoGn5)_gq4WkKH1|> z*g8K?BFb0^bMuQ-t5wwC;Z0J%N4u6V=sIM&Mbz)$W|mRnaq1X~1_h{U&eJKq_AjRLgpDx)IkCVW{I20W%_v?KMWCG z6;*E1SlS{UA5wFm`!0-5Sx@hzB^~czO-`C5s6e$T77xL?Oe2YLR_O|X5rTPn$kOx^lED)0+BabBHHyPi3c}!6 zgJ&Z2_?V)okT;qxH}BJ!O0j1QzMqZE4a z1*&uBNGyc?L#zaA4VSi_rgQ(lIBtEPQr1Bc6MXg$__uyW>QBkjm@Lb2k};082taB@ z{{Q<4Ks&H_@mc1*5zed6ZNBB7+++86%(?R$v|6*2>kaC&%lO?Ld_B+Jw84WfcUir% zMeGl0&MnedS|NJyJ{P|G6PydLU`N|bBEy-TAt<* zkV2zPKpp3`Z+-8r>G%{?U8LJRK^}a7T6hW}p)*K`WgT5A^GfL!PWN3rRiQM0l{g$T zc9y6VC3o)JBYqm+YnXPDgnD})g&%+KRjuMk)l8%_v<041X?cG$t_5?Or}8=uk%3#29| z$sxc0bNJ@VSSQ1jS1~B^pv%GC_o>vI2x(a_=h)H|kw(mtP^=Vj97|zl6kyINL!W;QW#Qz}F1Ei%Vg3@=uivFqdWp*$mtpVk zDee6^Ei=o$FJRVVWxjxrQvk-|9BO8hWOPbt?rXez?*Vjs2RWrp4+)pQ3< zg3hPxZ-2`1IA=+(qk*`*f+%IU}hn*86L0@(|^7SjlQn!?fhVI!B zoXjzR S34KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000O9Nkl(_&UB}`HFs6d>2wl}8W5sLjKL6$iGmSALzE~Q%}?;3 z_~e76CB)G9AUL3Qi0y#jL%_s@&~19G@mAHXTX#6qo_x4XRH*W$Ue9Lno&B9}SV#Q& zGjn0V4$;8^V1;6=GPYEQ-gB=KpMDV4XdoJG0D`lajl0<0byk1-6Mpg7H@NWdrzne@ ztsno0uXYuunuqgMS+IHUHU|d-<`?^45BGK|Gbaw#=2pwbAZc*L7&f?X}Ecgk_b{`!a zT5GDZ1fZ6h-7mawBwyaSPV4W#K?*^4b^+%s+MyVWl%YuJJ@YcjxrY#O3PJ+l@(FH# z2eWyH#cMz3q&*Wax|MAm4aWs>2m5_hnJS-;KF z)z?^Z(`v6pMB-}-l`+u`4n)GnQ{N^&d7kLR8H7|c+Z{|*O{;n`r2V&FvXoYb@|90m zd-Tf?0_{$h{@xBcIEUTcpuYJ5%YVMYoG(d(A$8N?;)JA-5k1jj`^ifr4}1bWw}em{ z03F2`Q&ZO!$=wfW&!{8$yN^FlGP8)0l0YDiW3=h5Q~&FIR{wg1nNZR3IVw1;&_Lio zw;0Hb-cv7;TzC{UyMWNqba4&$F;zub~knr=l?V zaMqxd#+VvsEqOj62u-E#`@sD2e|*5!)9pAO;5TnEs-egyG}|4-r8yBQp%6$$BBDO~ zC_ajb+A~NUcmN^U6B%A7?0@M+W*>PB)#@DT19NY`!2@ET3W>8B>YqV}9lIMfAdnqkTe5C+rznK{Dl! z?E@o`9E(4;4{U$sd&lCB?E~>K`D6RQartBWz;St9T1UwDsCL%zTWfUx_y$cs#(Be< z*USq;U!;^OV-zCR9{(mucM-j~N?8<4XLTRf--6x-3vXR!$sg?#x1YF#o?n5bQ{y1!+pTS z3B~pn%~qS)`6X&op>N*!fKGRg(O@5?6;Yhx@3#|h|HV4wlMz{?_3^)86vtR=QA#sA wzet>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009FNkl-_QgGw0pvzh}wJqqPji}gLLz3!EVjlPQX70Ra&KVa%_uuaKiTB?Bu$h}*q}!iI z>lzS9DJhE_&kq2|k{H`@P|Buh8uBcqu4`USPEnrMqTTJYbnZOSbd2k@2*VC(nxM6& zF`7=d2M8R;MMz0e2Q`ay<{*aqtO=jt;nVmPLXQ8Pe1IZvQW0j79Y^2u~LjjV6~0Aq1u|IIf2@TH|^x{2)N<8l`OX%Q4mI0W0_K z&^H-@PH>wNB|r#^rfCS<9m*m{Ap~_@l4lupkrV&3O>zJ$KYdGRN_sj*H3ongHWM7Y zmXDMcuIHojG^RJVh?EvpGNU*>V({!oJX5e_rqn_aV`HP)YkV>xu`ETNrL=q>8MHg3 zaYWNJtXcl$ZE?Vyr4qSNj3!{aSRdpk%=p&T1O2$9mF)AKO8#KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000NMNkl1{!w{JRUVR; z{1YlRE<-LD7lb(GYA!|~R?=#Bb}rpLJ)MV<<#Lte7tP~Le|4t&oId@v`1bC7zp}hU zs1yLsIcD>M?>9ENdg}p6k|L!dkP-mzJ*KWOM)S#g=lJ8F{=)0$-=wZes_{cU{q$4L zoLxVV*LB77XHS?;c33*T%Co26p@!K2-?jkc^MbOf*qKbZ`t?1+I6;U2L_pg*@B-&7 z#?*ZD)>)R9mOu#R^BGEo6lKYHdxu^&K9Fy$rFD)V2q?>();Uy?#K=HmZNqF{Fq`Fk z@%25zBt}YwRFc+vgcmf8L01JIUOLOM#S!V=m?TN5s}gH0Wm*3WZz<}Z%z38#$BXTgi%5mMSvg>pz9J{cEMLykMqjPGNFlD6(tAqZ=5+n8Y^x;+`yQcI8ISzRWaV$;o8jygh_%@5rGT< zXkC{#ZAw1Aw9bhW%S2&Bn#SFXwINQrJX>24hyWoZVWK4F|9RRqH0y~np6Yb~}heDLP$tgWrGxR4>G#5qT;HM`RsYYbr&Q`Z$<2&^@S z@=|!JVouXEltqrwHR|&lcZuQzr9xDw@V?s-x-Myq=EJwna_Zz7NfINaL>og81kCb+ zo!#l)*owwl;wVP#&Hf<1E=$H+TPUSKh%Rm%$Ar<3O9IeXLt`|*d;bDizfachA@}+~ z(==3-W}4@GapMlHbHqss_^zl_cqrc(v)@ayY{>Jck5DQ~5C~k`f_GSL(Wc^)ch57- zGL{w>_JbQ^*q!Fgi;^qX?~?TTAOyzL%<~zoZz=MevYa2t7e&EzmZQQ5fH>(90Ej?z z!S|~5lXuTETF5xDd>pYC*g41cWJ+EXe0KeRs3;_g66$hJwy;PTMfld^@rUv+UXGC} z#2QVJ=cK(JN(Nn*veshjijOXxWo>nZCA#dQ!9t^Rc*L-^A0jlWWy0V+hdgXEkntxHBaS0_Y0_<_wxy~x zo10r)y?KwMHz15c#NI|%VT82?V>HX7jD>~4q5PG9|Ccl!&{%`V6GaiqXhU5U{O-LA zj7CF-*#IR2Y|{`3!OmpL_Uw)}WVTnp> zjII#~=J||3>x$q1<|0eSMyxC?(o2)BVy$B`&6!MRe0Kc~Nisl%3elAfzV*09gAioH z5skGBhZ)(Re<&ZwfVOdar>+I>QNMlTm#m#wK`BWP1PCE;&M_|vUT*Dh<*RQ=`vU?g z_p7;WTAIdSbxl>y3F8>=TiUkWZ&U~I$|;gGMe7O?1Vl-S`tx7^MsF}gDTQ-QcX$K= zM%Udo1FB+97)2-*;=QM?O442*=NzxRdK%w4lC*~|6>Zy6R5dTg+g!c%fZib6_W{>P zJRWNdQIv4{%sOgy?IZ}n;^Gp!lO0qTk|YU6Yg+H|tz(c4X`Q3j&j{m~sw`+-Lm0+r zU9r2pg|P->3|l)BdYcFPfNLB=2&~cU?rhP|hA3+cQYj`oTiwk11Ip4-l?AS8h?5kf z>+XFqr_HBWYjKT5N`#f*Nx$1odEmL*{r;a$VAUdqC7mD`WTtgOC57VNs%jZYpkL&|q-h6N*{>VO% z_WDQSkL&|S<&W$GN9C2SN_^|6>k4NLZ?B&u>vhfN@sr1_EHAV9@+Gyl%gWRXMWZvF8|{eDvXGPq^?TT_{B4dc}`Up{CfQqlgXI7wqohn zA^#SAc!$v_JJbjM{?A*exVuHoXER*W zpnhnJN!sJ)y(d3*zd(|tDb`w|D5k1PqF$fI8jP-qqL{LrBc){fyrK;qxGJ~8e|}mDr7iHXsjVgdo-@;zDY$C zMYOGBI9g=5u*lO#4|wwEA#Yy%6;eu!X(+1dCq7_pO_|T>4>A^)Rxnnh9^U(g;piCo z?gXhMVU*B1#}7~UV?)X!C+!XP?}A|z(KHQGDi)WPiQ+X_C+9OH2 cj`{xq0Cm>)liC*|Jpcdz07*qoM6N<$f|KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009GNklB({Gdiz7Cd>l#LB`o zl1YqZSqLEnSt=P0hYSV-wqI;;es;pl>oz~*o3{BwN3!kuOA-hZF|%p6KewAM_s-!WM+m{$$$to)=h%**FbTc> z47cyS%lyp+gmBS1N1L2S5AHDk#vE0lv8{?{>)Qz7QkDe*K*@wmDH_c-on9Y52v9P? zII^Vmyv`w6aL6*`z<}qA23*{DPnsV%rXW z5F(VE(CJNM+YWiAP)hRg{kI8xm)Yq)#%SU=#`k^p|9VA|NE}C?Qb{cgvFptiauQQj z6^ly`DB@G{R8kd&qvIpA)|{N4^84mCJG;BQc)5o$nji>KO5uF?$>VQr$Ki{|A8@VL zjNHp!PfX>6(@Dkm zzii>UE?R49VI2s#xv==!z1rWybv;BfiD|XF{P=vE;o$+cBM_cTSZ`q44y{f=Sr{Bg zkgAj)HntcZ9#9qqd7dFI&PNE>LuVQFW&`2+BymiZrT{1KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009ANkli5oRJU%{1r0~f}H8+U#c zxB3mtS?a==XmWZ&a@rD4htkqQnSm*nVTOTsF79yq%d`6D5!d(6@q85$h7v^xf-pn~ zfe@e|2;-Q9A_$|HI0ius2q3~VE!4$2;ObqQweK^Z%}8h&DwQMVQyb}ftffTPb<+7F z{?Z}X_(-{-kjv3AdZLbR$;E&R0s7Z}m!{EnegwZqj%{pVJTqW`yzSZX# zU4z%@53nXP6k>2akDHqt48veFer8|arCQnBTBTCv_^`~{UvJG_Nqo;m{B=Ey+ix%E z^&ilZ3YAKg02OC8K~)6K(jg*AepjcE3h{iOcb!|xbS0 zsgR*wuQRYcHcFNkFPiAPd0eUDNtKh{L2ykXoemYC=xpl#Pf5`DcnX_htE{#6zPM35#wcRa! z$$I6XhEW7U;n#JIuv$Z(F8TPwa~g+xTy+P`mMcDb*n?0fT|`G zPFpQ9`2wfM2O!|#X+kcYq2xIJ-!}Hwb2!=5Mlt4S#N4*H zaVE%6p?1>1^A@~qcgbY3G#iK1kIGzj4CYgtLOx3_og)z%(|Ccf*UMo~no)#Ud_1*=h`vJTNwD%nhlKR2JynU*=$(nMiEGMVCMvqbvn zOY~fp$cj%|v literal 0 HcmV?d00001 From ec7f90a938eaa94a82d4c0b66210d5ae7f4e2f04 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 08:21:43 -0800 Subject: [PATCH 37/85] Nobody's getting my Thaumcraft Deobf jar! >:P --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 118594f1..f7c70ea9 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ logs screenshots mods world +lib *.txt *.json From 88aa1497d3ea2bda85e02c66c329704731b6a16c Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 08:27:16 -0800 Subject: [PATCH 38/85] Er, idk if this is the actual lib folder...? :S --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f7c70ea9..a253cc50 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ screenshots mods world lib +libs *.txt *.json From 102f56a7da2d59ee290cc206f651ded85ac445e6 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 08:46:29 -0800 Subject: [PATCH 39/85] Quick fix to Nation --- src/main/java/com/cricketcraft/chisel/Features.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index a39ef933..e8c71c0e 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1568,7 +1568,7 @@ public enum Features { imperial.carverHelper.addVariation("tile.nation.2.desc", 2, "nation/imperialPlate"); imperial.carverHelper.addVariation("tile.nation.3.desc", 3, "nation/imperialCautionWhite"); imperial.carverHelper.addVariation("tile.nation.4.desc", 4, "nation/imperialCautionOrange"); - imperial.carverHelper.registerBlock(imperial, "imperial"); + //imperial.carverHelper.registerBlock(imperial, "imperial"); imperial.carverHelper.registerAll(imperial, "nation"); BlockCarvable rebel = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F); From 1155bac58b0405c02f7a2e466b0c76a7f0ce282b Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 09:22:03 -0800 Subject: [PATCH 40/85] Fix derp in lang file --- src/main/resources/assets/chisel/lang/en_US.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 12a74faf..f3222116 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -31,7 +31,7 @@ item.upgrade_stack.desc=Allows it to manufacture stacks at a time #Chisel 2 #Nation -tile.chisel.imperial.name=Imperialistic Block +tile.chisel.nation.name=Imperialistic Block tile.chisel.rebel.name=Rebellious Block tile.nation.0.desc=Camouflaged tile.nation.1.desc=Camouflaged (Secluded) From b5448170d4f3c80eda64c1e762d66f4c37b66563 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sat, 7 Mar 2015 10:32:51 -0800 Subject: [PATCH 41/85] Add .psd files to git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a253cc50..66c2c4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ libs *.json /server.properties *.dat +*.psd From 4238109cbfa76190b1dd111880d0a4d42c26f758 Mon Sep 17 00:00:00 2001 From: Mango Date: Sat, 7 Mar 2015 19:24:14 +0100 Subject: [PATCH 42/85] 1 more Shingle Texture added Added another Shingle Textures, Whoop Whoop! --- .../textures/blocks/shingles/Shingle3-v4.png | Bin 0 -> 720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle3-v4.png diff --git a/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle3-v4.png b/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle3-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5b8de2b4d108082e6ceeb2eab9d0c3f1b34b2d GIT binary patch literal 720 zcmV;>0x$iEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0zpYcK~zXf#g#ovLqQNl_qSLX#1Dv|F@;4E zEd-;5LNtXoVxx5e7J>mAQAE(c>v>!mhTU1^6+t-4zIpe}?%tW~ruUms#>eg9WP5cs z>SfFi_O5o;Ue5*@Z|6hwSrQ-*`euUXY2Wj3x;5=~$avr1^jvSO5GUi}sOOpOuM@B3 zNzB72gPB<`88cWZ>m_3b`Y;dr#Gk>0`p*YKkAg=D3_a>qO`l3PpDqR&i_0NuuN2bz zItgE`RJuvV`AN@nH*8Em?Zu`iV_7ZJC-YJ80qZ4W2Jz5+;$gK+pBS-CCIrTMvpu+c#>s8V-_MbHaA6Eef2&t6Af0!m%dIyRm{X7 zef2&-k-5o!iIXv`R!v{M4{9#gdcUUskNdz!gxvIX5~`Lzd4#_|g8P7|4=Sz+!fKJx zP9DJtp$YglxDP@%iPuh~-|vs*-v@TWAoV^9-4nj+g-$A855X>pE2l{Qgdt<;CTk&M z*!yHGtAd`qc6KE@VfY|)lWm5*kG}RB@+a8x?*sL|cTK1&>Sd4gzD`2b%EZvLDKE%q zt_hij!v7#ZdNP*P3iZtdtf=j|A66^WFZn*`cD?}@U9`?I3@n%c0000 Date: Sat, 7 Mar 2015 20:02:21 +0100 Subject: [PATCH 43/85] More Shinglesssss!!! More more more! --- src/main/resources/assets/chisel/lang/en_US.lang | 4 ++++ .../textures/blocks/shingles/Shingle4-v4.png | Bin 0 -> 704 bytes .../textures/blocks/shingles/Shingle5-v4.png | Bin 0 -> 955 bytes .../textures/blocks/shingles/Shingle6-v4.png | Bin 0 -> 803 bytes 4 files changed, 4 insertions(+) create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle4-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle5-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/shingles/Shingle6-v4.png diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index f3222116..f0084519 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -43,6 +43,10 @@ tile.nation.4.desc=Teamed Caution Tape tile.chisel.shingles.name=Shingles tile.shingles.0.desc=Red Diagonal tile.shingles.1.desc=Red Tiny Squares +tile.shingles.2.desc=Red Big Squares +tile.shingles.3.desc=Black Diagonal +tile.shingles.4.desc=Black Tiny Squares +tile.shingles.5.desc=Black Big Squares #Valentines tile.chisel.valentines.name=Valentines Block diff --git a/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle4-v4.png b/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle4-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..26dcd5d289b8fe05cc8e969867a2526b8a4f6914 GIT binary patch literal 704 zcmV;x0zdtUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0x?NMK~zXf&6Tl^+b|4<^-M+#Wa^TonVO+X z)1euPy#FKIXMdDRJ5qWX0^A2&Akx1mn&esK?*sSy{ct#Zf8cyRACJdh4_vQT^szZX z9Q4Zpzqed2mwBFv_-)HHP56oUW6SAu!as^rIEU2^P9|R>?jTe0CE^bB-8kqAe+>@w zmkpvRnEbB7K+{K}DVY2g>nK(;j0AqvVIpi9)XMvYd%G?21L``q2|Hx>TW< zO<$H0CfLxe@)LizTTNeB@tPb6tTmelTsP0F`se|tA$6V6zmD|=W(NPC2X439E>85o zm&Mj>;3pR%#%xy@K@a%3g>s?KasKsy4c#j9n%x;kPrgLlfj-BH9tdk#OBWN})-DvR z+67G?X|}ZsJcTTEge4Ll%XRI#F;h%wt0N06OS;|kU2`j-R9 zs9R0^{5sbe{M~MK{l$`rYZ4LHYcZqxphjHBgMof{AFKu3Kz8i3Lm9gmqJ;Y4eSjjW zSmAx~6EV6}p^Q)T!~0-V<TW*0# z`|pGHg+aR1YztZ7ciuC8sq93Cx5RHuDgXV#kP8uG<|`&d#OOwaqM;|QVWIeW0XB52 z$!m6JAN}Zmh^G;Bn%;jOkTtgT%9x{_$fyq^VYk9aEMv+8B1X+Byqz1O8x{4R_b&&K mQLb78f43_y`QLmW%<~7V*ijk$AaqLr0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&11w2IK~zXfh1T6lTtN^7;PX;?VHQIaVkBZf zQ3--xD1z_*0{P~YRK{Ih8$8x@S5M9K{OxjdboBcA`ggU1gM*u!o1d$}cXxNcR)a4u zFTbybe|2^BW3?^L)!_U4``@cA8U&u7pDQ4rfQ}?zUtddx31AbzLAbcMs6aUc z^h*E+Zf|dgz-F_F#>2w{EJi~he);-}U-RVTBz_uaXJ_%3!%u@=`G&RlgBVu^7>hq? za6oVXzHtPzncs1+rNv6Zx7FbKQD@GKyI@;mWHp16QDf%i?{q;uq{6U zAoUn)Al4!@P(K`vaOwwyvS7P>AcY#c$iKLJHCcF!#{&8?Gz-YN%f|`eQG>x=`Lvf5 zQH;KJhEt668Q9TVCKLC&d<*Y%$zy*?LElK zgeTU57AGHV*H1&C;xC6^6X)G~AT5|VDZWWd9ai`MMZ(XdWATR;?bZGMJ$QL}F)s%9 zN_srMPdhL&Uzkd9g^X@$$@bvVgNqN3f=G{H>2>`j?XMgdSK?FM~8k&G+t`s;L z-7qsBNTKQvznrh%17r7PXzfe$Gk*LG&6t)HSB$1fWnRTd^X`_MqVM6)e)C?sK?Pd4 zVgs3XHvvupd-yXR0x520B$mmBm&t0*yPH#?_Va_oe|ryTgvauzrkR1nnv*WdZ@<1X z->(z=0CU&u%^NFc{ zi%&o&OMb@@?_!AM1aKxN$(s5~LExO2@Z;a*>tvjR7Lg^!gnQM%?N{^k^t62b03kIf de&cU8{{VQ$M2x_s07?J=002ovPDHLkV1k^`zG(me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle6-v4.png b/src/main/resources/assets/chisel/textures/blocks/shingles/Shingle6-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..02c1f87f0a77329c8c4eca33d314a86dcc40c966 GIT binary patch literal 803 zcmV+;1Kj+HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0+dNaK~zXfy_LbP+At7B^I5Qngjk?ffVwE` zTB-m46+QMbSAz*p-OwvN-uULsI3CBz^1JJPzwh_^Z(YaZab4H=yWQ?**ZF*giBJ5a z>vTH7|LMBjZt$rC()H2M#EbjF`W2?dC=6jNtLPbJ5^@k3E^LD zBGW4TG#WaagwNV-#l**lry5##)PQOerCB3T8jYV#BDM<5#8=;fV*&?=S`tEOG;ub` zqB0X-V^7aG2MTvYy?rBk`21EA{R_YF=Y4rldk;qw({$q2&i*>8OwEOfUvt}2B;hMX z!Zk{8mDnEI&oJ=Gt$xjIE07S9K=`%ko3A7Moz$nhS%o%od@?r*8_J$T0hEP2)FvMz2x+6OoO6kDC#FZebA zgwjPMNTcc-=lhY@)E7L==f4L`$UoNQ(zwtc^l=(mn;+kUF!(to@Hh$|2i4QCuofUQ zjq{`fS)I&@$tlSM`0$$9ZTvBT1fo_w4QX^`h%JP;RQ=b}@L#?Mt!RvI_ Date: Sun, 8 Mar 2015 12:17:55 -0400 Subject: [PATCH 44/85] RoyCurtis: Fixed chiselled bookshelves dropping invalid books --- .../chisel/block/BlockCarvableBookshelf.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableBookshelf.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableBookshelf.java index 95e3cdce..5d809a1e 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableBookshelf.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableBookshelf.java @@ -35,15 +35,20 @@ public class BlockCarvableBookshelf extends BlockCarvable { } @Override - public int quantityDropped(Random par1Random) { + public int quantityDropped(Random random) { return 3; } @Override - public Item getItemDropped(int par1, Random par2Random, int par3) { + public Item getItemDropped(int ammount, Random random, int meta) { return Items.book; } + @Override + public int damageDropped(int damage){ + return 0; + } + @Override public float getEnchantPowerBonus(World world, int x, int y, int z) { return 1; From 6d62a409e3ef73eb996a5cf59231c80beadc8079 Mon Sep 17 00:00:00 2001 From: Cricket Date: Sun, 8 Mar 2015 12:32:45 -0400 Subject: [PATCH 45/85] Addons can now use CTM --- .../chisel/carving/CarvableHelper.java | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index 73f5a8cf..f853b4b4 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -43,23 +43,39 @@ public class CarvableHelper { public boolean forbidChiseling = false; public String blockName; - public void addVariation(String description, int metadata, Block bb) { - addVariation(description, metadata, null, bb, 0); + public void addVariation(String description, int metadata, Block bb) { + addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID, Chisel.class); + } + + public void addVariation(String description, int metadata, Block bb, int blockMeta) { + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + } + + public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material) { + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + } + + public void addVariation(String description, int metadata, String texture) { + addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID, Chisel.class); + } + + public void addVariation(String description, int metadata, Block bb, String modid, Class mainModClass) { + addVariation(description, metadata, null, bb, 0, modid, mainModClass); } - public void addVariation(String description, int metadata, Block bb, int blockMeta) { - addVariation(description, metadata, null, bb, blockMeta); + public void addVariation(String description, int metadata, Block bb, int blockMeta, String modid, Class mainModClass) { + addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); } - public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material) { - addVariation(description, metadata, null, bb, blockMeta); + public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material, String modid, Class mainModClass) { + addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); } - public void addVariation(String description, int metadata, String texture) { - addVariation(description, metadata, texture, null, 0); + public void addVariation(String description, int metadata, String texture, String modid, Class mainModClass) { + addVariation(description, metadata, texture, null, 0, modid, mainModClass); } - public void addVariation(String description, int metadata, String texture, Block block, int blockMeta) { + public void addVariation(String description, int metadata, String texture, Block block, int blockMeta, String modid, Class mainModClass) { if (variations.size() >= 16) return; @@ -76,21 +92,21 @@ public class CarvableHelper { if (texture != null) { variation.texture = texture; - String path = "/assets/" + Chisel.MOD_ID + "/textures/blocks/" + variation.texture; + String path = "/assets/" + modid + "/textures/blocks/" + variation.texture; - boolean any = Chisel.class.getResource(path + ".png") != null; - boolean ctm3 = Chisel.class.getResource(path + "-ctm1.png") != null && Chisel.class.getResource(path + "-ctm2.png") != null && Chisel.class.getResource(path + "-ctm3.png") != null; - boolean ctmv = Chisel.class.getResource(path + "-ctmv.png") != null; - boolean ctmh = Chisel.class.getResource(path + "-ctmh.png") != null; - boolean side = Chisel.class.getResource(path + "-side.png") != null; - boolean top = Chisel.class.getResource(path + "-top.png") != null; - boolean bot = Chisel.class.getResource(path + "-bottom.png") != null; - boolean v9 = Chisel.class.getResource(path + "-v9.png") != null; - boolean v4 = Chisel.class.getResource(path + "-v4.png") != null; - boolean ctmx = Chisel.class.getResource(path + "-ctm.png") != null; - boolean r16 = Chisel.class.getResource(path + "-r16.png") != null; - boolean r9 = Chisel.class.getResource(path + "-r9.png") != null; - boolean r4 = Chisel.class.getResource(path + "-r4.png") != null; + boolean any = mainModClass.getResource(path + ".png") != null; + boolean ctm3 = mainModClass.getResource(path + "-ctm1.png") != null && mainModClass.getResource(path + "-ctm2.png") != null && mainModClass.getResource(path + "-ctm3.png") != null; + boolean ctmv = mainModClass.getResource(path + "-ctmv.png") != null; + boolean ctmh = mainModClass.getResource(path + "-ctmh.png") != null; + boolean side = mainModClass.getResource(path + "-side.png") != null; + boolean top = mainModClass.getResource(path + "-top.png") != null; + boolean bot = mainModClass.getResource(path + "-bottom.png") != null; + boolean v9 = mainModClass.getResource(path + "-v9.png") != null; + boolean v4 = mainModClass.getResource(path + "-v4.png") != null; + boolean ctmx = mainModClass.getResource(path + "-ctm.png") != null; + boolean r16 = mainModClass.getResource(path + "-r16.png") != null; + boolean r9 = mainModClass.getResource(path + "-r9.png") != null; + boolean r4 = mainModClass.getResource(path + "-r4.png") != null; if (ctm3) { variation.kind = 3; From beb986e7f71882800625af45f2814711bcfb8aac Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 8 Mar 2015 09:59:38 -0700 Subject: [PATCH 46/85] Fix up Masonry textures --- .../java/com/cricketcraft/chisel/Features.java | 8 ++++---- .../blocks/stonebrick2/masonBricksFelsic-v4.png | Bin 0 -> 5125 bytes .../blocks/stonebrick2/masonBricksMafic-v4.png | Bin 0 -> 5039 bytes .../blocks/stonebrick2/masonBricksMixed-v4.png | Bin 0 -> 5196 bytes .../blocks/stonebrick2/masonBricksPlain-v4.png | Bin 0 -> 5266 bytes 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksFelsic-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksMafic-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksMixed-v4.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksPlain-v4.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index e8c71c0e..600a04e3 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2220,10 +2220,10 @@ public enum Features { } } - stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.0.desc", 0, "stonebrick2/masonryPlain"); - stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.1.desc", 1, "stonebrick2/masonryFelsic"); - stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.2.desc", 2, "stonebrick2/masonryMafic"); - stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.3.desc", 3, "stonebrick2/masonryMixed"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.0.desc", 0, "stonebrick2/masonBricksPlain"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.1.desc", 1, "stonebrick2/masonBricksFelsic"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.2.desc", 2, "stonebrick2/masonBricksMafic"); + stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.3.desc", 3, "stonebrick2/masonBricksMixed"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.4.desc", 4, "stonebrick/smallbricks"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.5.desc", 5, "stonebrick/largebricks"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.6.desc", 6, "stonebrick/smallchaotic"); diff --git a/src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksFelsic-v4.png b/src/main/resources/assets/chisel/textures/blocks/stonebrick2/masonBricksFelsic-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0957d6f67dddf4689b9764729a07d779c32040 GIT binary patch literal 5125 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 Y03JvtZaFXy?EnA(07*qoM6N<$g4Y86od5s; literal 0 HcmV?d00001 From a3331646855219702872af63e07b8f183248b7db Mon Sep 17 00:00:00 2001 From: Cricket Date: Sun, 8 Mar 2015 15:23:35 -0400 Subject: [PATCH 47/85] You can wear pumpkins now --- .../com/cricketcraft/chisel/Features.java | 4 +- .../chisel/item/ItemCarvablePumpkin.java | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/cricketcraft/chisel/item/ItemCarvablePumpkin.java diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 600a04e3..6698fce0 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1153,7 +1153,7 @@ public enum Features { jackolantern[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(true).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("litpumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setLightLevel(1.0f); jackolantern[metadata].setInformation("pumpkin/pumpkin_face_" + (metadata + 1) + "_on"); - GameRegistry.registerBlock(jackolantern[metadata], ("jackolantern" + (metadata + 1))); + GameRegistry.registerBlock(jackolantern[metadata], ItemCarvablePumpkin.class, ("jackolantern" + (metadata + 1))); Carving.chisel.addVariation("jackolantern", jackolantern[metadata], 0, (metadata + 1)); } Carving.chisel.addVariation("jackolantern", Blocks.lit_pumpkin, 0, 0); @@ -1823,7 +1823,7 @@ public enum Features { pumpkin[metadata] = (BlockCarvablePumpkin) new BlockCarvablePumpkin(false).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(1.0F).setBlockName("pumpkin") .setCreativeTab(ChiselTabs.tabOtherChiselBlocks); pumpkin[metadata].setInformation("pumpkin/pumpkin_face_" + (metadata + 1) + "_off"); - GameRegistry.registerBlock(pumpkin[metadata], "pumpkin" + (metadata + 1)); + GameRegistry.registerBlock(pumpkin[metadata], ItemCarvablePumpkin.class, "pumpkin" + (metadata + 1)); Carving.chisel.addVariation("pumpkin", pumpkin[metadata], 0, (metadata + 1)); } Carving.chisel.addVariation("pumpkin", Blocks.pumpkin, 0, 0); diff --git a/src/main/java/com/cricketcraft/chisel/item/ItemCarvablePumpkin.java b/src/main/java/com/cricketcraft/chisel/item/ItemCarvablePumpkin.java new file mode 100644 index 00000000..0727fcfa --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/item/ItemCarvablePumpkin.java @@ -0,0 +1,61 @@ +package com.cricketcraft.chisel.item; + +import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.carving.CarvableVariation; +import com.cricketcraft.chisel.config.Configurations; +import com.cricketcraft.chisel.utils.General; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class ItemCarvablePumpkin extends ItemBlock { + + public ItemCarvablePumpkin(Block block) { + super(block); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public boolean isValidArmor(ItemStack itemStack, int armorType, Entity entity){ + return true; + } + + @Override + public int getMetadata(int i) { + return i; + } + + @Override + public IIcon getIconFromDamage(int damage) { + return Block.getBlockFromItem(this).getIcon(2, damage); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + if (!Configurations.blockDescriptions) + return; + + Item item = General.getItem(stack); + if (item == null) + return; + + Block block = Block.getBlockFromItem(this); + if (!(block instanceof ICarvable)) + return; + + ICarvable carvable = (ICarvable) block; + CarvableVariation var = carvable.getVariation(stack); + if (var == null) + return; + + lines.add(var.getDescription()); + } +} From 3e2a5cb5248d0b93dacc0e9e8ab9ac508091d6ca Mon Sep 17 00:00:00 2001 From: Cricket Date: Sun, 8 Mar 2015 16:48:05 -0400 Subject: [PATCH 48/85] You make special snow golems now --- .../java/com/cricketcraft/chisel/Chisel.java | 4 ++ .../chisel/block/BlockCarvablePumpkin.java | 65 +++++++++++++++++++ .../client/render/RenderChiselSnowman.java | 65 +++++++++++++++++++ .../chisel/entity/EntityChiselSnowman.java | 13 ++++ .../chisel/proxy/ClientProxy.java | 2 + .../resources/assets/chisel/lang/en_US.lang | 3 + 6 files changed, 152 insertions(+) create mode 100644 src/main/java/com/cricketcraft/chisel/client/render/RenderChiselSnowman.java create mode 100644 src/main/java/com/cricketcraft/chisel/entity/EntityChiselSnowman.java diff --git a/src/main/java/com/cricketcraft/chisel/Chisel.java b/src/main/java/com/cricketcraft/chisel/Chisel.java index 0f421eb0..26ca1602 100644 --- a/src/main/java/com/cricketcraft/chisel/Chisel.java +++ b/src/main/java/com/cricketcraft/chisel/Chisel.java @@ -2,6 +2,8 @@ package com.cricketcraft.chisel; import java.io.File; +import com.cricketcraft.chisel.entity.EntityChiselSnowman; +import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraftforge.common.MinecraftForge; @@ -136,6 +138,8 @@ public class Chisel { addWorldgen(Features.DIORITE, ChiselBlocks.diorite, Configurations.dioriteAmount, 40, 100, 0.5); GameRegistry.registerWorldGenerator(GeneratorChisel.INSTANCE, 1000); + EntityRegistry.registerModEntity(EntityChiselSnowman.class, "snowman", 0, this, 80, 1, true); + proxy.init(); MinecraftForge.EVENT_BUS.register(this); FMLCommonHandler.instance().bus().register(instance); diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java index 6e132405..2099f89f 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java @@ -1,8 +1,12 @@ package com.cricketcraft.chisel.block; +import com.cricketcraft.chisel.entity.EntityChiselSnowman; +import com.cricketcraft.chisel.init.ChiselBlocks; import net.minecraft.block.Block; import net.minecraft.block.BlockPumpkin; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.monster.EntityIronGolem; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -14,6 +18,7 @@ import com.cricketcraft.chisel.carving.CarvableVariation; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.world.World; public class BlockCarvablePumpkin extends BlockPumpkin implements ICarvable { @@ -32,6 +37,66 @@ public class BlockCarvablePumpkin extends BlockPumpkin implements ICarvable { carverHelper = new CarvableHelper(); } + @Override + public void onBlockAdded(World world, int x, int y, int z){ + if(world.getBlock(x, y - 1, z) == Blocks.snow && world.getBlock(x, y - 2, z) == Blocks.snow){ + if(!world.isRemote){ + //Let's grab the pumpkin before we start + ItemStack pumpkin = new ItemStack(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + + world.setBlock(x, y, z, Blocks.air, 0, 2); + world.setBlock(x, y - 1, z, Blocks.air, 0, 2); + world.setBlock(x, y - 2, z, Blocks.air, 0, 2); + EntityChiselSnowman snowman = new EntityChiselSnowman(world); + snowman.setCurrentItemOrArmor(2, pumpkin); + snowman.setLocationAndAngles((double) x + 0.5D, (double) y - 1.95D, (double) z + 0.5D, 0.0F, 0.0F); + world.spawnEntityInWorld(snowman); + world.notifyBlockChange(x, y, z, Blocks.air); + world.notifyBlockChange(x, y - 1, z, Blocks.air); + world.notifyBlockChange(x, y - 2, z, Blocks.air); + } + + //Spawn some lovely particles + for(int c = 0; c < 120; ++c){ + world.spawnParticle("snowshovel", (double)x + world.rand.nextDouble(), (double) (y - 2) + world.rand.nextDouble() * 2.5D, (double) z + world.rand.nextDouble(), 0.0D, 0.0D, 0.0D); + } + } else if(world.getBlock(x, y - 1, z) == Blocks.iron_block || world.getBlock(x, y - 2, z) == Blocks.iron_block){ + boolean flag = world.getBlock(x - 1, y - 1, z) == Blocks.iron_block && world.getBlock(x + 1, y - 1, z) == Blocks.iron_block; + boolean flag1 = world.getBlock(x, y - 1, z - 1) == Blocks.iron_block && world.getBlock(x, y - 1, z + 1) == Blocks.iron_block; + + if(flag || flag1){ + world.setBlock(x, y, z, Blocks.air, 0, 2); + world.setBlock(x, y - 1, z, Blocks.air, 0, 2); + world.setBlock(x, y - 2, z, Blocks.air, 0, 2); + + if(flag){ + world.setBlock(x - 1, y - 1, z, Blocks.air, 0, 2); + world.setBlock(x + 1, y - 1, z, Blocks.air, 0, 2); + } else { + world.setBlock(x, y - 1, z - 1, Blocks.air, 0, 2); + world.setBlock(x, y - 1, z + 1, Blocks.air, 0, 2); + } + + EntityIronGolem ironGolem = new EntityIronGolem(world); + ironGolem.setPlayerCreated(true); + ironGolem.setLocationAndAngles((double) x + 0.5D, (double) y - 1.95D, (double) z + 0.5D, 0.0F, 0.0F); + world.spawnEntityInWorld(ironGolem); + + world.notifyBlockChange(x, y, z, Blocks.air); + world.notifyBlockChange(x, y - 1, z, Blocks.air); + world.notifyBlockChange(x, y - 2, z, Blocks.air); + + if(flag){ + world.notifyBlockChange(x - 1, y - 1, z, Blocks.air); + world.notifyBlockChange(x + 1, y - 1, z, Blocks.air); + } else { + world.notifyBlockChange(x, y - 1, z - 1, Blocks.air); + world.notifyBlockChange(x, y - 1, z + 1, Blocks.air); + } + } + } + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RenderChiselSnowman.java b/src/main/java/com/cricketcraft/chisel/client/render/RenderChiselSnowman.java new file mode 100644 index 00000000..55953901 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/client/render/RenderChiselSnowman.java @@ -0,0 +1,65 @@ +package com.cricketcraft.chisel.client.render; + +import com.cricketcraft.chisel.entity.EntityChiselSnowman; +import net.minecraft.block.Block; +import net.minecraft.client.model.ModelSnowMan; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.MinecraftForgeClient; +import static net.minecraftforge.client.IItemRenderer.ItemRenderType.*; +import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.*; +import org.lwjgl.opengl.GL11; + +public class RenderChiselSnowman extends RenderLiving{ + + private static final ResourceLocation snowManTextures = new ResourceLocation("textures/entity/snowman.png"); + private ModelSnowMan snowMan; + + public RenderChiselSnowman() { + super(new ModelSnowMan(), 0.5F); + snowMan = (ModelSnowMan)super.mainModel; + setRenderPassModel(this.snowMan); + } + + @Override + protected void renderEquippedItems(EntityLivingBase entityLivingBase, float size){ + this.renderEquippedItems((EntityChiselSnowman) entityLivingBase, size); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityChiselSnowman) entity); + } + + protected ResourceLocation getEntityTexture(EntityChiselSnowman snowman){ + return snowManTextures; + } + + protected void renderEquippedItems(EntityChiselSnowman snowman, float size){ + super.renderEquippedItems(snowman, size); + ItemStack itemStack = snowman.getEquipmentInSlot(2); + + if(itemStack.getItem() instanceof ItemBlock){ + GL11.glPushMatrix(); + this.snowMan.head.postRender(0.0625F); + + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(itemStack, EQUIPPED); + boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(EQUIPPED, itemStack, BLOCK_3D)); + + if(is3D || RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemStack.getItem()).getRenderType())){ + float f1 = 0.625F; + GL11.glTranslatef(0.0F, -0.34375F, 0.0F); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glScalef(f1, -f1, f1); + } + this.renderManager.itemRenderer.renderItem(snowman, itemStack, 0); + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/cricketcraft/chisel/entity/EntityChiselSnowman.java b/src/main/java/com/cricketcraft/chisel/entity/EntityChiselSnowman.java new file mode 100644 index 00000000..bffbc7ab --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/entity/EntityChiselSnowman.java @@ -0,0 +1,13 @@ +package com.cricketcraft.chisel.entity; + +import net.minecraft.entity.monster.EntitySnowman; +import net.minecraft.world.World; + +public class EntityChiselSnowman extends EntitySnowman{ + + public EntityChiselSnowman(World world){ + super(world); + } + + //No special features just needed to get around the hardcoding +} diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index 1e3d7f60..a76a97db 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -8,6 +8,7 @@ import com.cricketcraft.chisel.client.render.item.ItemChiselRenderer; import com.cricketcraft.chisel.client.render.tile.RenderAutoChisel; import com.cricketcraft.chisel.client.render.tile.RenderPresent; import com.cricketcraft.chisel.entity.EntityBallOMoss; +import com.cricketcraft.chisel.entity.EntityChiselSnowman; import com.cricketcraft.chisel.entity.EntityCloudInABottle; import com.cricketcraft.chisel.entity.EntitySmashingRock; import com.cricketcraft.chisel.init.ChiselBlocks; @@ -58,6 +59,7 @@ public class ClientProxy extends CommonProxy { RenderingRegistry.registerEntityRenderingHandler(EntityCloudInABottle.class, new RenderSnowball(ChiselItems.cloudinabottle)); RenderingRegistry.registerEntityRenderingHandler(EntityBallOMoss.class, new RenderSnowball(ChiselItems.ballomoss)); RenderingRegistry.registerEntityRenderingHandler(EntitySmashingRock.class, new RenderSnowball(ChiselItems.smashingrock)); + RenderingRegistry.registerEntityRenderingHandler(EntityChiselSnowman.class, new RenderChiselSnowman()); MinecraftForgeClient.registerItemRenderer(ChiselItems.chisel, renderer); MinecraftForgeClient.registerItemRenderer(ChiselItems.diamondChisel, renderer); diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index f0084519..c81c3829 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -1,5 +1,8 @@ # Key localizations +# Entity localizations +entity.chisel.snowman.name=Snow Golem + # Item localizations item.chisel.chisel_iron.name=Chisel From 2dcb2b51b4182663e400b44d159eed74902bf743 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 8 Mar 2015 14:05:34 -0700 Subject: [PATCH 49/85] Added Large Hex Plating --- .../com/cricketcraft/chisel/Features.java | 21 +++++++++++++----- .../resources/assets/chisel/lang/en_US.lang | 3 +++ .../textures/blocks/hexPlating/hexNew-v9.png | Bin 0 -> 14664 bytes 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/hexPlating/hexNew-v9.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 600a04e3..ae983547 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -965,12 +965,21 @@ public enum Features { @Override void addBlocks() { - BlockCarvable hexPlating = (BlockCarvable) new BlockCarvableGlow("hexPlating/hexAnim").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10.0F); - for (int i = 0; i < 16; i++) { - hexPlating.carverHelper.addVariation("tile.hexPlating." + ItemDye.field_150921_b[i] + ".desc", i, "hexPlating/hexBase"); - } - hexPlating.carverHelper.registerAll(hexPlating, "hexPlating"); - Carving.chisel.registerOre("hexPlating", "hexPlating"); + BlockCarvable hexPlating = (BlockCarvable) new BlockCarvableGlow("hexPlating/hexAnim").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10.0F); + for (int i = 0; i < 16; i++) { + hexPlating.carverHelper.addVariation("tile.hexPlating." + ItemDye.field_150921_b[i] + ".desc", i, "hexPlating/hexBase"); + } + hexPlating.carverHelper.registerAll(hexPlating, "hexPlating"); + Carving.chisel.registerOre("hexPlating", "hexPlating"); + + BlockCarvable hexLargePlating = (BlockCarvable) new BlockCarvableGlow("hexPlating/hexAnim").setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10.0F); + for (int i = 0; i < 16; i++) { + hexLargePlating.carverHelper.addVariation("tile.hexPlating." + ItemDye.field_150921_b[i] + ".desc", i, "hexPlating/hexNew"); + } + + hexLargePlating.carverHelper.registerBlock(hexLargePlating, "hexLargePlating"); + hexLargePlating.carverHelper.registerVariations("hexPlating", hexLargePlating); + Carving.chisel.registerOre("hexPlating", "hexPlating"); } @Override diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index f0084519..7eca024a 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -224,6 +224,9 @@ tile.hexPlating.white.desc=White Plating tile.hexPlating.yellow.desc=Yellow Plating tile.hexPlating.gray.desc=Gray Plating +#Hex Large Plating +tile.chisel.hexLargePlating.name=Large Hex Plating + #Grimstone tile.chisel.grimstone.name=Grimstone tile.grimstone.0.desc=Grimstone diff --git a/src/main/resources/assets/chisel/textures/blocks/hexPlating/hexNew-v9.png b/src/main/resources/assets/chisel/textures/blocks/hexPlating/hexNew-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4dcdd8ae85df17b4b2bec636c093477fcf3c82 GIT binary patch literal 14664 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 F{U0E9ouU8$ literal 0 HcmV?d00001 From 45bd487a0734a4d182014f6879aa8e8ef704208c Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 8 Mar 2015 14:07:02 -0700 Subject: [PATCH 50/85] This didn't get committed? --- .../blocks/technical/hexArmorPlating-v9.png | Bin 0 -> 4404 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/technical/hexArmorPlating-v9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/technical/hexArmorPlating-v9.png b/src/main/resources/assets/chisel/textures/blocks/technical/hexArmorPlating-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3329f8d4367f5d0035e01f9d1f69a7d2eaea86 GIT binary patch literal 4404 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 F{|}IYdK&-$ literal 0 HcmV?d00001 From 91bd6dca2677a0fbb51b3e33c5bc91f600894c26 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Sun, 8 Mar 2015 17:56:44 -0700 Subject: [PATCH 51/85] Commit new textures for the 1.8 stones --- .../assets/chisel/textures/blocks/PBTex.png | Bin 0 -> 2826 bytes .../blocks/andesite/andesiteLBrick-ctm.png | Bin 0 -> 3710 bytes .../textures/blocks/andesite/andesiteLBrick.png | Bin 0 -> 3483 bytes .../textures/blocks/andesite/andesiteOrnate.png | Bin 0 -> 3494 bytes .../textures/blocks/andesite/andesitePrism.png | Bin 0 -> 3520 bytes .../textures/blocks/andesite/andesiteTiles.png | Bin 0 -> 3485 bytes .../blocks/diorite/dioriteLBrick-ctm.png | Bin 0 -> 3735 bytes .../textures/blocks/diorite/dioriteLBrick.png | Bin 0 -> 3558 bytes .../textures/blocks/diorite/dioriteOrnate.png | Bin 0 -> 3577 bytes .../textures/blocks/diorite/dioritePrism.png | Bin 0 -> 3584 bytes .../textures/blocks/diorite/dioriteTiles.png | Bin 0 -> 3556 bytes .../blocks/granite/graniteLBrick-ctm.png | Bin 0 -> 3704 bytes .../textures/blocks/granite/graniteLBrick.png | Bin 0 -> 3494 bytes .../textures/blocks/granite/graniteOrnate.png | Bin 0 -> 3558 bytes .../textures/blocks/granite/granitePrism.png | Bin 0 -> 3553 bytes .../textures/blocks/granite/graniteTiles.png | Bin 0 -> 3513 bytes 16 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/PBTex.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/andesite/andesiteOrnate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/andesite/andesitePrism.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/andesite/andesiteTiles.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/diorite/dioriteLBrick-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/diorite/dioriteLBrick.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/diorite/dioriteOrnate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/diorite/dioritePrism.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/diorite/dioriteTiles.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/granite/graniteLBrick-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/granite/graniteLBrick.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/granite/graniteOrnate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/granite/granitePrism.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/granite/graniteTiles.png diff --git a/src/main/resources/assets/chisel/textures/blocks/PBTex.png b/src/main/resources/assets/chisel/textures/blocks/PBTex.png new file mode 100644 index 0000000000000000000000000000000000000000..b106d30959d47fef99b0f6666607fdcdf324efcb GIT binary patch literal 2826 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick-ctm.png b/src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c0a3a72e3427be573f7cb89016ae0b0b01f8a9 GIT binary patch literal 3710 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick.png b/src/main/resources/assets/chisel/textures/blocks/andesite/andesiteLBrick.png new file mode 100644 index 0000000000000000000000000000000000000000..121633ce1ad370d6deb4c95e9577784aa4c91485 GIT binary patch literal 3483 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 U8VB*T2><{907*qoM6N<$f*&A*lmGw# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/andesite/andesitePrism.png b/src/main/resources/assets/chisel/textures/blocks/andesite/andesitePrism.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb933f7fb3a309be9a97e2f5bdb529ea7f2d415 GIT binary patch literal 3520 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 B0TciL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/diorite/dioriteLBrick.png b/src/main/resources/assets/chisel/textures/blocks/diorite/dioriteLBrick.png new file mode 100644 index 0000000000000000000000000000000000000000..5558ce9ad5860a0d240352963a99a3a6844f7044 GIT binary patch literal 3558 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/diorite/dioritePrism.png b/src/main/resources/assets/chisel/textures/blocks/diorite/dioritePrism.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8edb0f887941e7604ac12cdc69db452643476b GIT binary patch literal 3584 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 UNY30;zyJUM07*qoM6N<$f^W=;iU0rr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/granite/graniteOrnate.png b/src/main/resources/assets/chisel/textures/blocks/granite/graniteOrnate.png new file mode 100644 index 0000000000000000000000000000000000000000..6c60a6d84eee98605d1f8bd334bc8f6b163dce76 GIT binary patch literal 3558 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009KNklH-)xjKrd1fkwcBHvm@bkdWB$ z7CZ$D1V}7~#b`7mRY<5^OsSwZ+DWIE&?K#MaW1xFJ5J)TsOWitbIy0p+{w$Qvx|BI zLlyv-hKW1qF^gk_kVr@}imG6H0rGTAJe?3p8VTUHpMF3zZyGrN{K@YZH8$USn+|t! z>^A?)$S(r0b9ln~LI%@JL$-(~bi}+QF&MbqcDg*@*(I7xk;OdPLXn_jp`{Fh*H;Kh z0^qRT!!sx@Da?QP%05us(kVFw+6|6bu+wfp#$H(-=E2x{j5{M8B2PERrNizMSKM1MHM zvD=IXHbRn^^xM2Vs8A@c;oa5{l7xSJ&Zm#x1t92Htgo-Ld-#fktRPaFdI#yEPPN%Z zEv}*~r+oG0=S2RHXcTg_x5IICKG6&ZTjxXQ*bD ze#_!$f1k?s7BBXWnT*G5Zf+8I4!-9S4qeP_mPB3_sKr$zMI-&z3PygBaL_|Y5=V#o z$f}B&$&yT^!R?_f6sdPzR6R{DW0Dw*BAn_Of#*=aJip(+vb}{Lj(D+mj5nL3Wp{Dx zHbKW?IhO{&YPAtbk)Y#`&{77brqBW2Su6AC$!Dy6;4+>}k;FWir6NJ!Myub!zO2=e zWf^g8wJ7CGuKgGxNm$O1)ulX@oh<-V{m!j+unWLht%0nlJX~4k^{tIq$Yj`Q*#w;y zmF+EVq68QFr}sb5QU<6=f{q11E~(&q?p@V*iV*X2Y&MBB#P?9N(@&@{K6A>k3!lBDjp~%tJGXRd>{EboGz^R^b)M)em+6t_Z)PXwmrT1BBcYKIpzAt87|`f>luVs&G^LPI@xzFC7L&`E gG~E$%BaiKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009FNkliJiy4 zjH}HGNW z^|ck+MCCa)&vp;Ue{c)?-&X)U+uGs!Yzo8BAf4q*P9RUlVz{o)>Ouz3vFQ&&;!`p7 zLJ@Wkm`-YVj*X(K+`N_tKuu`Wk6VQOb0o$vm&?&UAJ87fFboa7P(-xqG&(-PK+rxP z5F|_jAqa#($;^`)2}YwKl98AOV0mSgSt&$LW$7m7S7 zmC(%$)1wf%+v`OVdp?S)GVIy_%-&d|SJ|Uc*~E4I=x!izY;N7Y&GFt#BxMRI8CTKG z3;@ro4bWUBt>*D%UpF)0cbLoNIBmC)+~F9}^8q4|HH+s*UG9AK zCEMjPdr$x1&fTvmm0z*GzK-YEc#e(e`55UmlBvk3*(KD3#_WwXUNjxArOL_*Ydco z4_cbiZ$I&XhmC5J{eLPrAuLLQO0$i%zt86DBh*QWa?_@Lddf-1MGMZ@Irxw5mWwtq bKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008yNkl24E%HKXYX}5Ztm;EOPC-Y<&LNr^`oS; zlEX(2ne@Au-K#5lFJA!Q`XL3C`VTAO^g3*e8eiL#wFCBIptytj)gRZzBrkdj8bLn4vDsJFWmb7`=$2q|&>kZo%d9R|dOAZObs z+gZ8bwm3emB2yOSyV+NHs zN(>E&vK@|(kJoRa@`U~fzgeSm8vr1rL`aD$Rj@WC#w3 Date: Sun, 8 Mar 2015 18:12:17 -0700 Subject: [PATCH 52/85] Implement new 1.8 textures --- .../java/com/cricketcraft/chisel/Features.java | 14 +++++++++++++- src/main/resources/assets/chisel/lang/en_US.lang | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index c5edd899..593b200a 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -98,7 +98,11 @@ public enum Features { andesite.carverHelper.setChiselBlockName("andesite"); andesite.carverHelper.addVariation("tile.andesite.0.desc", 0, "andesite/andesite"); andesite.carverHelper.addVariation("tile.andesite.1.desc", 1, "andesite/andesitePolished"); - andesite.carverHelper.addVariation("tile.andesite.2.desc", 2, "andesite/andesitePillar"); + andesite.carverHelper.addVariation("tile.andesite.2.desc", 2, "andesite/andesitePillar"); + andesite.carverHelper.addVariation("tile.andesite.3.desc", 3, "andesite/andesiteLBrick"); + andesite.carverHelper.addVariation("tile.andesite.4.desc", 4, "andesite/andesiteOrnate"); + andesite.carverHelper.addVariation("tile.andesite.5.desc", 5, "andesite/andesitePrism"); + andesite.carverHelper.addVariation("tile.andesite.6.desc", 6, "andesite/andesiteTiles"); andesite.carverHelper.registerAll(andesite, "andesite"); Carving.chisel.registerOre("andesite", "blockAndesite"); } @@ -579,6 +583,10 @@ public enum Features { diorite.carverHelper.addVariation("tile.diorite.0.desc", 0, "diorite/diorite"); diorite.carverHelper.addVariation("tile.diorite.1.desc", 1, "diorite/dioritePolished"); diorite.carverHelper.addVariation("tile.diorite.2.desc", 2, "diorite/dioritePillar"); + diorite.carverHelper.addVariation("tile.diorite.3.desc", 3, "diorite/dioriteLBrick"); + diorite.carverHelper.addVariation("tile.diorite.4.desc", 4, "diorite/dioriteOrnate"); + diorite.carverHelper.addVariation("tile.diorite.5.desc", 5, "diorite/dioritePrism"); + diorite.carverHelper.addVariation("tile.diorite.6.desc", 6, "diorite/dioriteTiles"); diorite.carverHelper.registerAll(diorite, "diorite"); Carving.chisel.registerOre("diorite", "diorite"); } @@ -921,6 +929,10 @@ public enum Features { granite.carverHelper.addVariation("tile.granite.0.desc", 0, "granite/granite"); granite.carverHelper.addVariation("tile.granite.1.desc", 1, "granite/granitePolished"); granite.carverHelper.addVariation("tile.granite.2.desc", 2, "granite/granitePillar"); + granite.carverHelper.addVariation("tile.granite.3.desc", 3, "granite/graniteLBrick"); + granite.carverHelper.addVariation("tile.granite.4.desc", 4, "granite/graniteOrnate"); + granite.carverHelper.addVariation("tile.granite.5.desc", 5, "granite/granitePrism"); + granite.carverHelper.addVariation("tile.granite.6.desc", 6, "granite/graniteTiles"); granite.carverHelper.registerAll(granite, "granite"); Carving.chisel.registerOre("granite", "granite"); } diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 2715e12c..6d88b2b8 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -80,18 +80,30 @@ tile.chisel.diorite.name=Diorite tile.diorite.0.desc=Generates in your world tile.diorite.1.desc=Polished Diorite tile.diorite.2.desc=Diorite Pillar +tile.diorite.3.desc=Diorite Bricks +tile.diorite.4.desc=Ornate Diorite +tile.diorite.5.desc=Prismatic Diorite +tile.diorite.6.desc=Diorite Small Tiles #Andesite tile.chisel.andesite.name=Andesite tile.andesite.0.desc=Generates in your world tile.andesite.1.desc=Polished Andesite tile.andesite.2.desc=Andesite Pillar +tile.andesite.3.desc=Andesite Bricks +tile.andesite.4.desc=Ornate Andesite +tile.andesite.5.desc=Prismatic Andesite +tile.andesite.6.desc=Andesite Small Tiles #Granite tile.chisel.granite.name=Granite tile.granite.0.desc=Generates in your world tile.granite.1.desc=Polished Granite tile.granite.2.desc=Granite Pillar +tile.granite.3.desc=Granite Bricks +tile.granite.4.desc=Ornate Granite +tile.granite.5.desc=Prismatic Granite +tile.granite.6.desc=Granite Small Tiles #Auto Chisel tile.chisel.autoChisel.name=Auto Chisel From 0f3a28bdc34b6242bbdb3eeed96678785be7117c Mon Sep 17 00:00:00 2001 From: Drullkus Date: Mon, 9 Mar 2015 15:46:16 -0700 Subject: [PATCH 53/85] Untested - Added TCon Chisel blocks --- .../com/cricketcraft/chisel/Features.java | 107 ++++++++++++++++-- 1 file changed, 99 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 593b200a..41c1ffde 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -569,7 +569,14 @@ public enum Features { diamond_block.carverHelper.addVariation("tile.diamond.10.desc", 10, "diamond/terrain-diamond-fourornate"); diamond_block.carverHelper.addVariation("tile.diamond.11.desc", 11, "diamond/terrain-diamond-zelda"); diamond_block.carverHelper.addVariation("tile.diamond.12.desc", 12, "diamond/terrain-diamond-ornatelayer"); - diamond_block.carverHelper.registerAll(diamond_block, "diamond_block"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 7, 0); + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 7, 0); + } + + diamond_block.carverHelper.registerAll(diamond_block, "diamond_block"); Carving.chisel.registerOre("diamond_block", "diamond"); } }, @@ -649,6 +656,30 @@ public enum Features { } }, + END_STONE { + + @Override + void addBlocks() { + //BlockCarvable end_stone = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); + Carving.chisel.addVariation("end_stone", Blocks.end_stone , 0, 0); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 12, 0); + Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 12, 0); + } + + if (Loader.isModLoaded("Botania")) + { + Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("Botania", ""), 12, 0); + Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("Botania", "endStoneBrick"), 12, 0); + } + + //end_stone.carverHelper.registerAll(emerald_block, "endStone"); + Carving.chisel.registerOre("end_stone", "end_stone"); + } + }, + FACTORY { @Override @@ -915,7 +946,14 @@ public enum Features { gold_block.carverHelper.addVariation("tile.gold.12.desc", 12, "gold/terrain-gold-space"); gold_block.carverHelper.addVariation("tile.gold.13.desc", 13, "gold/terrain-gold-spaceblack"); gold_block.carverHelper.addVariation("tile.gold.14.desc", 14, "gold/terrain-gold-simple"); - gold_block.carverHelper.registerAll(gold_block, "gold_block"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("gold_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 5, 0); + Carving.chisel.addVariation("gold_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 5, 0); + } + + gold_block.carverHelper.registerAll(gold_block, "gold_block"); Carving.chisel.registerOre("gold_block", "gold"); } }, @@ -1161,7 +1199,14 @@ public enum Features { iron_block.carverHelper.addVariation("tile.iron.13.desc", 13, "iron/terrain-iron-spaceblack"); iron_block.carverHelper.addVariation("tile.iron.14.desc", 14, "iron/terrain-iron-vents"); iron_block.carverHelper.addVariation("tile.iron.15.desc", 15, "iron/terrain-iron-simple"); - iron_block.carverHelper.registerAll(iron_block, "iron_block"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("iron_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 4, 0); + Carving.chisel.addVariation("iron_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 4, 0); + } + + iron_block.carverHelper.registerAll(iron_block, "iron_block"); Carving.chisel.registerOre("iron_block", "iron"); } }, @@ -1230,7 +1275,14 @@ public enum Features { lapis_block.carverHelper.addVariation("tile.lapis.6.desc", 6, "lapis/a1-blocklapis-panel"); lapis_block.carverHelper.addVariation("tile.lapis.7.desc", 7, "lapis/a1-blocklapis-smooth"); lapis_block.carverHelper.addVariation("tile.lapis.8.desc", 8, "lapis/a1-blocklapis-ornatelayer"); - lapis_block.carverHelper.registerAll(lapis_block, "lapis_block"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 6, 0); + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 6, 0); + } + + lapis_block.carverHelper.registerAll(lapis_block, "lapis_block"); Carving.chisel.registerOre("lapis_block", "lapis"); } }, @@ -1661,7 +1713,14 @@ public enum Features { netherrack.carverHelper.addVariation("tile.hellrock.12.desc", 12, "netherrack/a1-netherrack-meatrock"); netherrack.carverHelper.addVariation("tile.hellrock.13.desc", 13, "netherrack/a1-netherrack-red"); netherrack.carverHelper.addVariation("tile.hellrock.14.desc", 14, "netherrack/a1-netherrack-wells"); - netherrack.carverHelper.registerAll(netherrack, "netherrack"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 2, 0); + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 2, 0); + } + + netherrack.carverHelper.registerAll(netherrack, "netherrack"); Carving.chisel.registerOre("netherrack", "netherrack"); } }, @@ -1688,7 +1747,16 @@ public enum Features { obsidian.carverHelper.addVariation("tile.obsidian.13.desc", 13, "obsidian/tiles"); obsidian.carverHelper.addVariation("tile.obsidian.14.desc", 14, "obsidian/greek"); obsidian.carverHelper.addVariation("tile.obsidian.15.desc", 15, "obsidian/crate"); - obsidian.carverHelper.registerAll(obsidian, "obsidian"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 0, 0); + Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 13, 0); + Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 0, 0); + Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 13, 0); + } + + obsidian.carverHelper.registerAll(obsidian, "obsidian"); Carving.chisel.registerOre("obsidian", "obsidian"); } }, @@ -2032,7 +2100,14 @@ public enum Features { redstone_block.carverHelper.addVariation("tile.redstone_block.13.desc", 13, "redstone/supaplex"); redstone_block.carverHelper.addVariation("tile.redstone_block.14.desc", 14, "redstone/a1-blockredstone-skullred"); redstone_block.carverHelper.addVariation("tile.redstone_block.15.desc", 15, "redstone/a1-blockredstone-redstonezelda"); - redstone_block.carverHelper.registerAll(redstone_block, "redstone_block"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 8, 0); + Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 8, 0); + } + + redstone_block.carverHelper.registerAll(redstone_block, "redstone_block"); Carving.chisel.registerOre("redstone_block", "redstone"); } }, @@ -2078,7 +2153,14 @@ public enum Features { sandstone.carverHelper.addVariation("tile.sandstone.13.desc", 13, "sandstone/blocks"); sandstone.carverHelper.addVariation("tile.sandstone.14.desc", 14, "sandstone/mosaic"); sandstone.carverHelper.addVariation("tile.sandstone.15.desc", 15, "sandstone/horizontal-tiles"); - sandstone.carverHelper.registerAll(sandstone, "sandstone"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("sandstone", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 1, 0); + Carving.chisel.addVariation("sandstone", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 1, 0); + } + + sandstone.carverHelper.registerAll(sandstone, "sandstone"); Carving.chisel.registerOre("sandstone", "sandstone"); } @@ -2257,6 +2339,15 @@ public enum Features { stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.13.desc", 13, "stonebrick/sunken"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.14.desc", 14, "stonebrick/ornatepanel"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.15.desc", 15, "stonebrick/poison"); + + if (Loader.isModLoaded("TConstruct")) + { + Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 3, 0); + Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 3, 0); + Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 14, 0); + Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 15, 0); + } + stonebricksmooth.carverHelper.registerAll(stonebricksmooth, "stonebricksmooth"); Carving.chisel.registerOre("stonebricksmooth", "stonebricksmooth"); From 29b0e92164a7b70a5ab76d1503660bc23bbc7d02 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Mon, 9 Mar 2015 15:52:52 -0700 Subject: [PATCH 54/85] Forgot to comment this out. --- src/main/java/com/cricketcraft/chisel/Features.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 41c1ffde..9cb245eb 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1751,9 +1751,9 @@ public enum Features { if (Loader.isModLoaded("TConstruct")) { Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 0, 0); - Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 13, 0); + // This block is 1/2 of an obsidian block Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 13, 0); Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 0, 0); - Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 13, 0); + // This block is 1/2 of an obsidian block Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 13, 0); } obsidian.carverHelper.registerAll(obsidian, "obsidian"); From 9b0e54038ff1e2b50a98f76870ee0bd339e757d7 Mon Sep 17 00:00:00 2001 From: Cricket Date: Mon, 9 Mar 2015 20:55:51 -0400 Subject: [PATCH 55/85] Added a banner --- src/main/resources/banner.jpg | Bin 0 -> 20278 bytes src/main/resources/mcmod.info | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/main/resources/banner.jpg diff --git a/src/main/resources/banner.jpg b/src/main/resources/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c1b6ce5c4a7445a54c09a273378ae57d2046a96 GIT binary patch literal 20278 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≪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 Date: Wed, 11 Mar 2015 13:44:02 -0700 Subject: [PATCH 56/85] Add Iron/Gold blocks and to Oredict, Recolored Antiblocks a little --- .../com/cricketcraft/chisel/Features.java | 26 ++++++++++++++++-- .../resources/assets/chisel/lang/en_US.lang | 2 ++ .../blocks/antiblock/black-antiBlock.png | Bin 2822 -> 2824 bytes .../blocks/antiblock/blue-antiBlock-ctm.png | Bin 386 -> 2914 bytes .../blocks/antiblock/blue-antiBlock.png | Bin 258 -> 2842 bytes .../blocks/antiblock/brown-antiBlock-ctm.png | Bin 293 -> 2911 bytes .../blocks/antiblock/brown-antiBlock.png | Bin 212 -> 2841 bytes .../blocks/antiblock/cyan-antiBlock-ctm.png | Bin 320 -> 2912 bytes .../blocks/antiblock/cyan-antiBlock.png | Bin 258 -> 2841 bytes .../blocks/antiblock/green-antiBlock-ctm.png | Bin 389 -> 2911 bytes .../blocks/antiblock/green-antiBlock.png | Bin 258 -> 2841 bytes .../antiblock/light_blue-antiBlock-ctm.png | Bin 321 -> 2913 bytes .../blocks/antiblock/light_blue-antiBlock.png | Bin 259 -> 2840 bytes .../blocks/antiblock/lime-antiBlock-ctm.png | Bin 323 -> 2911 bytes .../blocks/antiblock/lime-antiBlock.png | Bin 260 -> 2841 bytes .../antiblock/magenta-antiBlock-ctm.png | Bin 288 -> 2913 bytes .../blocks/antiblock/magenta-antiBlock.png | Bin 208 -> 2840 bytes .../blocks/antiblock/orange-antiBlock-ctm.png | Bin 322 -> 2911 bytes .../blocks/antiblock/orange-antiBlock.png | Bin 259 -> 2841 bytes .../blocks/antiblock/pink-antiBlock-ctm.png | Bin 293 -> 2913 bytes .../blocks/antiblock/pink-antiBlock.png | Bin 212 -> 2842 bytes .../blocks/antiblock/purple-antiBlock-ctm.png | Bin 291 -> 2912 bytes .../blocks/antiblock/purple-antiBlock.png | Bin 209 -> 2841 bytes .../blocks/antiblock/red-antiBlock-ctm.png | Bin 390 -> 2907 bytes .../blocks/antiblock/red-antiBlock.png | Bin 258 -> 2839 bytes .../blocks/antiblock/yellow-antiBlock.png | Bin 258 -> 2843 bytes .../textures/blocks/metals/gold/adv.png | Bin 0 -> 3450 bytes .../textures/blocks/metals/gold/bolted.png | Bin 0 -> 3412 bytes .../blocks/metals/gold/caution-ctm.png | Bin 0 -> 4751 bytes .../textures/blocks/metals/gold/caution.png | Bin 0 -> 3440 bytes .../textures/blocks/metals/gold/crate-ctm.png | Bin 0 -> 4600 bytes .../textures/blocks/metals/gold/crate.png | Bin 0 -> 3374 bytes .../blocks/metals/gold/egregious-ctm.png | Bin 0 -> 4442 bytes .../textures/blocks/metals/gold/egregious.png | Bin 0 -> 3359 bytes .../textures/blocks/metals/gold/thermal.png | Bin 0 -> 3277 bytes .../textures/blocks/metals/iron/adv.png | Bin 0 -> 3495 bytes .../textures/blocks/metals/iron/bolted.png | Bin 0 -> 3473 bytes .../blocks/metals/iron/caution-ctm.png | Bin 0 -> 4474 bytes .../textures/blocks/metals/iron/caution.png | Bin 0 -> 3437 bytes .../textures/blocks/metals/iron/crate-ctm.png | Bin 0 -> 4278 bytes .../textures/blocks/metals/iron/crate.png | Bin 0 -> 3325 bytes .../blocks/metals/iron/egregious-ctm.png | Bin 0 -> 4759 bytes .../textures/blocks/metals/iron/egregious.png | Bin 0 -> 3454 bytes .../textures/blocks/metals/iron/thermal.png | Bin 0 -> 3350 bytes .../textures/blocks/metals/steel/adv.png | Bin 3495 -> 3539 bytes .../textures/blocks/metals/steel/bolted.png | Bin 3473 -> 3518 bytes .../blocks/metals/steel/caution-ctm.png | Bin 4474 -> 4702 bytes .../textures/blocks/metals/steel/caution.png | Bin 3437 -> 3476 bytes .../blocks/metals/steel/crate-ctm.png | Bin 4278 -> 4597 bytes .../textures/blocks/metals/steel/crate.png | Bin 3325 -> 3396 bytes .../blocks/metals/steel/egregious-ctm.png | Bin 4759 -> 4813 bytes .../blocks/metals/steel/egregious.png | Bin 3454 -> 3459 bytes .../textures/blocks/metals/steel/thermal.png | Bin 3350 -> 3398 bytes 53 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/adv.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/bolted.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/caution-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/caution.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/crate-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/crate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/egregious-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/egregious.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/gold/thermal.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/adv.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/bolted.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/caution-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/caution.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/crate-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/crate.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/metals/iron/thermal.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 9cb245eb..3b3d767c 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -953,8 +953,19 @@ public enum Features { Carving.chisel.addVariation("gold_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 5, 0); } + BlockCarvable gold2 = (BlockCarvable) new BlockBeaconBase(Material.iron).setStepSound(Block.soundTypeMetal).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setHardness(5F) + .setResistance(10F); + gold2.carverHelper.addVariation("tile.metalOre.0.desc", 0, "metals/gold/caution"); + gold2.carverHelper.addVariation("tile.metalOre.1.desc", 1, "metals/gold/crate"); + gold2.carverHelper.addVariation("tile.metalOre.2.desc", 2, "metals/gold/thermal"); + gold2.carverHelper.addVariation("tile.metalOre.3.desc", 3, "metals/gold/adv"); + gold2.carverHelper.addVariation("tile.metalOre.4.desc", 4, "metals/gold/egregious"); + gold2.carverHelper.addVariation("tile.metalOre.5.desc", 5, "metals/gold/bolted"); + gold2.carverHelper.registerBlock(gold2, "gold2"); + gold2.carverHelper.registerVariations("gold_block", gold2); + gold_block.carverHelper.registerAll(gold_block, "gold_block"); - Carving.chisel.registerOre("gold_block", "gold"); + Carving.chisel.registerOre("gold_block", "blockGold"); } }, @@ -1206,8 +1217,19 @@ public enum Features { Carving.chisel.addVariation("iron_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 4, 0); } + BlockCarvable iron2 = (BlockCarvable) new BlockBeaconBase(Material.iron).setStepSound(Block.soundTypeMetal).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setHardness(5F) + .setResistance(10F); + iron2.carverHelper.addVariation("tile.metalOre.0.desc", 0, "metals/iron/caution"); + iron2.carverHelper.addVariation("tile.metalOre.1.desc", 1, "metals/iron/crate"); + iron2.carverHelper.addVariation("tile.metalOre.2.desc", 2, "metals/iron/thermal"); + iron2.carverHelper.addVariation("tile.metalOre.3.desc", 3, "metals/iron/adv"); + iron2.carverHelper.addVariation("tile.metalOre.4.desc", 4, "metals/iron/egregious"); + iron2.carverHelper.addVariation("tile.metalOre.5.desc", 5, "metals/iron/bolted"); + iron2.carverHelper.registerBlock(iron2, "iron2"); + iron2.carverHelper.registerVariations("iron_block", iron2); + iron_block.carverHelper.registerAll(iron_block, "iron_block"); - Carving.chisel.registerOre("iron_block", "iron"); + Carving.chisel.registerOre("iron_block", "blockIron"); } }, diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 6d88b2b8..515c1687 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -287,6 +287,8 @@ tile.technical3.1.desc=Industrial Armor Plating tile.chisel.aluminumblock.name=Block of Aluminum tile.chisel.bronzeblock.name=Block of Bronze tile.chisel.copperblock.name=Block of Copper +tile.chisel.gold2.name=Block of Gold +tile.chisel.iron2.name=Block of Iron tile.chisel.leadblock.name=Block of Lead tile.chisel.silverblock.name=Block of Silver tile.chisel.steelblock.name=Block of Steel diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/black-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/black-antiBlock.png index 896bbc2cc13e1ebf7764fff3a79f55f037861d72..64534b96e86a4e9ed540dfa4f12743310379b979 100644 GIT binary patch delta 80 zcmZn@>k!*;fXlaTZiy$H2hw|35Q> Xq7b8fP0is(AeX_@)z4*}Q$iB}_h}Zx delta 78 zcmeAWYZKdWfXmI$)5S5Q;?|pUii`{lJS+=e$5(ZKWNTdh>KF?u*w)C-!0`V+GsE_+ VfAkI;yuHi-1fH&bF6*2UngA2N8UX+R diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/blue-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/blue-antiBlock-ctm.png index b8fa831dd3a5ecf578b7c3af9ada0dc420137c60..68da442735a48804f9024e8cc15f6a3740fe4b2a 100644 GIT binary patch delta 2875 zcmaJ@O|lr)A7BQm|4&F;+ruuzic^>+W4ym(fAfiv|F!w2dA@ zPcB3#fYT@qjoZR_n$G}5=p+LzfHyD1%U(|)v+O|fohVST6!_rGJEpWKPCzF-4N?Z^ z7*L=vd15v|F%{r4gmiaX1MW%#F5<||NdSd8&5xh}9A64?Q50taf*hWSdVse&P&0Zj zSs#GQ0-Ro^-KxN>G$3ni=Vb)cHv@PAD?7_$IsmW|95sF^1#Y~CQm01wUB0=s zPvw1|q4*zCidO@RP7_ePJ#Tju@b5bMB^kK6xsCPpS(9#vqwAnu0p9N7(eEgv z#yRQa+vinLw7fIgkm~eX=kT#v>GjbUbg^y=o9Tw<%?#vofl1+RV>cWe#JOh09+;+A zka{FvDx3s)A=z_lg6y%nEOkbywX6ixKh&a#$ds;dcBlMhD$WWI#;=k9;IP%d9qaCtQo-a$Cb9I zL!u2$N2S|O%i$_CpGe`B3>QhG<;jmb73wgeVownj97yD}5;o0LGLo}KCc^}6jRX!g zgRZD1I2p8Ls`mr((dY4PhH@{_4OW_88JnQE3YBZI25%U~Jc8v4(z%NZ$AUgy(@a$^ z*&3_%W|>ddg7(Sczw^>4bU%`n>Ft7ixFbcE%Ayn*W zeLS5qRR~1T^@gqy+zf7koHeQtye_K9HczKQM;U9?DK4B&1!^7@JbM z1EjVDYyI9Tp@Kv4p90m97;a$VpJ!IaH<`lM2a{Ei+s)g`XUX@sg@dr5XIzHK*FP3UhbYhTjHJsa}y#g{bg{ zX}^oIzeu9C?=tJMgub&X{_tR}tyhr2ov$%eO30U~I{qKDQn%QLk-2A2L9KZg0<9^U zRh1>GPz4hOyGHAymtNX5Yk7gEuYxV;wj|1PkD`*7I1eOOk&^snie@-DPbc51oZK9E zwNbTIwc&2Na@}4zrmS7R)&304tlMWI?j&xANGDvyY}w4&ESA%kbDL|boz%%x`IhpR zwCaU?d0f7qSM>Qls>sa0d?~Db>(BK_@CEF`?@#%OAtRi+kx`VI$VlMT=uryv*AM{r z5r0}iox609&{EfI*W8uZOx(D}+bM(R1}v#Qy-sVQYks|cy>G>+#e~F6&3DZA3#`p? zWs+s;X6j~rBf}$aMyB(X3N__sDJoTa<+1uMV3W%(KMo~{wEeWfURuitKXQVCe~s7u#v6^Hy%WD zPhHo3R(n=tOXTwlO&X?zIp%5s2Z5+3AA>m6?x`&m5MJ$TNA?`&Y=aT-QP$B}g*7b4 zkYu+H#-?!65W$1MJ&8F=Oi4109+Jt`k}2fxUF>gPHwiuobY2OcIKdP)7IyAc5Z~`B z?<0No6Bb?%E54R2vR8OA*3}RFX01Rv(OyHVe# z$7ozPT~oTE7{%if;_TwJ(*hFV*T&^?l|sfBpih?d{^;fCEfpf-YDax0BKtW%&9Aq*Z@9#5QwI)QFj92$Yl!(aT! zY*Pvo?NKO|+Q7w%S7x-CF_|qEsugh;JQehl*Hmkli+Pcm5eTUgGS9*yb`YChPlswe z;~Fk|9;Y;eZ)DR9_%>$LT(y^`M`9sm-(e0CGa#A?<#@rSYbA(gN_!_L_&P4H|)AMEW(ZtGDCtQP*gEO2&fxrYx)X>~ia( z+Qq`nebM(j2BSNgD13JrZ0R@RB6k;N_M9!@VEg4J*FW(Xel4z~TaCJsMmzo_U4jwkt1_XRqkdk^JAvD`HxJ?_df2O{L&|ab4MhI ztua_A?(G+iPi>y%1B4NEZP+{5G3*aad4FQD$#v%R@%TP}MB6XLA5%ofHqwRGz-OW@ zg{}FN*Ocd(@mV8DyDq5;xqX^*=I2~%;TO2qM>#=xK_kM9oxy#b5}440S*K6m-Zfe2Cq!$lT)_T+tdk8ho6EE8;BbmcAxAD-m5+E+X>#$xXhZg>}!41T2O~` z^2P0kw>L$2k+%7ZR0xa5?O{K;$ULnh~qM7gYlqC=p#ynmW(TnUZz_5r0i@6`-Bb0xy z>wiKZybG#*8A{gx literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$g=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;3=*B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&OjBEpQh{ooc)B=-WH?_vtH{UV$isZ_&;QHi2hLPvtGK&5 z-6{WmIOEVdcHbLc7jW*DGfBMOtoEkrLQ5?FtPQUnh0APdBH6!gmHejH`Csgp|F`^m v{$;)2|KeZsFaMwO?>Xs0aWSgOz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAun1*NklfO3MP66dZwwZMyWtGDV{ElAs*g)Pb?HBbfwwtNqU7)bX*TRa#(0$7Hv7!Db4|l4Nxj)TKnoc>UHx3vIVCg! E0AYhi=>Px# diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/brown-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/brown-antiBlock-ctm.png index 4ad8e32d6478b090a5d11a7d2014ffd0cfabcbac..89991e1028d8cbd60d13a7e7b6f57c1298d885a6 100644 GIT binary patch delta 2872 zcmaJ@_dnE+1AdE~P4#ql$GtQ%rmk> z_+~^|-#-7q=Xt%J*YnHs{O~+KJtfzc*weT$lmGx!diX8=6>497>n8v}%knSDfV@|n z06=5r0f*na=k62W^Tgf9m)`&m=lAvZar1cW3IIWKI7>9ba*JKyN zQKSPVEYoxMpl>(@UytaYXk18K=sJ| zL>&Mn4Y0Zybt?lil7O@U(oG+zYXaJdOtkd?6&)aL9v>qHP=o>weS(5PKy)s^s(XNh z{=8Gmv?=~~tK51hK}cCA!j?+X4}?TY@re=*IPPFr6&CYZ!m;zn`#=ij z2%UCnMT$TezayWPKFSznikZB41vgTQH-4&c(AHr2JBX z|4v`b8g8v?O>T{64SZlrgLBgKdwXiRB5E=4$dGHDXdz8w;6yrrD#&@xd*<@7dqU zj{@oFW7(p5I#fvE;EtSE!c9Riev% z5E^g8tuGQNt-Fl7%;0a$3*SFnZSCQwb>?aak^p(QYo8|Z{6NpwU`=obY)A1E)R zm-N#dZr`PeftNUDI%Y3NrxV7Y#gn@K=rSgI^w_Nmt$Ou%^%M(J3WJ4>Otww-@+?dU zrDCP3#;V4>!$ZSwhNp5B^3`OfWjFIT^QZHdnjCC`Y$WjI_>Zmz^=mez)_eF??-(0p z>k^cejeUb|4X)<)R7*`u*^M%SX@+T4!4$fy?k678kFRLrs#~9-B-P@*@L`TWuBwFN<=Mwmus%{1}(tkl(pmPI|Ye zxQFrBi<^HvB>!5hz*_FfXjdQnoB8^f2JP!iY0stVa5K1B1iEok5aJ9;N7hW&HI)Qb zo;dDvsQ*&;f4!={3RPN^U9^5Uq}1Nj*EDF>7Q9()sRT+zM`mb~ThE2hwNn8(c)}#2m$x zu~$ejOQ>XN8poU7efd8vCh>Ci4CnuNyv*I z>8%RELSN)cB-RPhA{A+^#`MMu`6>nMdC&O0WYtvKWTIZAr}@Du!6q4a^fr3K?b%?p zYfSy+7w@Dd2wx_s-?JgD`nt6w4F(S@{f@8^ofZexqg|11pNA6$l(VV|?hNk^H4Ko_ zlwR$>zS?E(WL|!OFNrlmO7fyM+NvKZ*F*h+Ni?f$*YCvMr>us4OvHgzd~v@7kN8Al6Hbj(=itJnC!-iM6aG3`aH_W=3>A zXq_j{XW(=0{L2p&Row)a5w~%-t&K&=0$YZx%IuA7258B_Aih00}bSrwLytdB@cd7O7KrcJvr} zZ+*JN?FUNIE7Dv2^Qvb>&{sQnZR>=3>4cA7W$syWX!SB^;?^@>G%w^4EbkysH{UYv z%+|@a*=$ICY-)QkMk5Yg{3w-q^&fj$^X#%1C#Vc}B0=N(9I@S&T| z#HB}!KKso~0n6h$S4o?yt*S)3gO33R^`vzc?EE%+z<)zoBxvf4u1VTjMkmy_cq_JweNkqhEr%WR;?UQMf6 z>%$|>U9DO8Lfj-q!}fB1W`7>@s6DXoaBN=hgfb>-V3lzot$@!9Kn$;Ed24%a(UPiGI` zr~V*0nFmMr&vrWk=L327iqq9D&XJa?9pB&CBP zm_!3@Ekw}V50Vx=0H)LF7;)QmBsZVY10v68!$9WVhyMl*bWF8tVGfc1 E2QQ0B+yDRo delta 234 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 IJ=7)k|HPX}WB>pF literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$g=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;3=*B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&OjBEpQh{m~dAc};WH`S)Z^(5(L4+mnef>+733*-T#k6?V z>`Bv^68pOH+%LX7Gppaf)-$Wg3cP6WWM{ETxWw4VH>1R10Y0HV{v8D$Uc05o?{8jv w_*&xY4W&1%a%8vhMYj{lHRs!RCu6PnQ|Vi$mnaH50bR@B>FVdQ&MBb@06KPXi~s-t diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/cyan-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/cyan-antiBlock.png index f128f9c2218ea15a06c7990944ab201977df8554..1561607b27aa1b6645fa2302091bab967c7b2be8 100644 GIT binary patch delta 2801 zcmVOz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAum}(NklfO3MP66dZwwZMyWtGDV{ElAs*g)Pb?Hb%7 diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/green-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/green-antiBlock-ctm.png index 2733a321cc058a2568d93e0611057b639d37edae..e137bbd8ef99684ce8728b1b54ff3d1688fea1f8 100644 GIT binary patch delta 2872 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 F{{v@cOius+ literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$g=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;3=*B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&OjBEpQh{ood%8G=WH?_vYslqdC~)|~o&T41%iq~~j=Lh@ zvF4KEx*6|Z6$@tbn>=xpn_S zb>F?>FY^|Em)ZOLg{}L0%c}DiNfxRooVw?PW&Oc~+_Zw@Oz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAum}(Nkl delta 199 zcmbO!*2FYHl7oqXf#HwD+r^V7a_QG|7I;J!Gca%qfiUBxyLEqnvJxe(5hcO-X(i=} zMX3x0iJ5sNdU>fO3MP66dZwwZMyWtGDV{ElAs*g)Pb?HBbfwwtNqU7)bX*TRa#(0!Pn}24sN@-Yi{PZ3J diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/light_blue-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/light_blue-antiBlock-ctm.png index 60b494ed85f99bccaaf9db5d00aefdb134c75131..50bf8822f817383541344deb3b13bed4b4e6859b 100644 GIT binary patch delta 2874 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 literal 321 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 F2>>;-N+$pS diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/lime-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/lime-antiBlock-ctm.png index 939cdafabea1415311e412e223a0b374fac78822..5930203d5d398b618ab9d70b7dde559a4f872766 100644 GIT binary patch delta 2872 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 E4_uQ;00000 literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$g=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;3=*B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&OjBEpQh{ogdb&7D8drhzxn(A2WJkYh}KvI zEL`wZHFd$4sPpgF{6BcsEj|8!$$=%zOtJzopr0E1d~ A^#A|> diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/lime-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/lime-antiBlock.png index 75ff99d674836d4c7adbd955b1abef8aada15103..474349225431c11e191b3180e1df2864c1a7aed7 100644 GIT binary patch delta 2801 zcmVOz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAum}(NklfO3MP66dZwwZMyWtGX`U{QAs*g)Pb?H%U$i-z^Xy8zz}uWBQF3^JG}~PRY(l1ZmEG7ilRa|-Z=_(nT?)`j22WQ%mvv4F FO#tPrND=@5 diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/magenta-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/magenta-antiBlock-ctm.png index 7c4c4dab771589108798b67a7f8aab3be6b6f7ae..a310d0b2604a794c24bafe96df4d25e64af7f132 100644 GIT binary patch delta 2874 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 Krc(!XivB-KCrd#9 delta 229 zcmaDTwt#7ZBnJ}%1A{8}v(CvAx%BHf3p^r=85p>QK$!8;-MT+OS&0(Yh?3y^w370~ zqEv>0#LT=By}Z;C1rt33J=4@yqg0@pCQlc~kPPRy=MDK99C(-y{`r5|!B;S-AiYs- zmesXufyaYFxz*P_XPU?Hf!f}nxI0_6k;2loRF4SfxajIxZ(Ojb;6fh;8~JP;K> zT@SSFUb`>j?RQ(2C7d3@6Vw!Z9cDF{FlI7cLKfKao;_#B?I+!`)^B diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/magenta-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/magenta-antiBlock.png index 6530686f496000fe65dd339f6afe006e129103e0..1189e79f1613433c04b9928fd9fe317f0c7506b1 100644 GIT binary patch delta 2800 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 F{|DzoN?!l~ literal 322 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 K*R6**NBQK$!8;-MT+OS&0(Yh?3y^w370~ zqEv>0#LT=By}Z;C1rt33J=4@yqg0@pc25__kPPRy=Qr{mcHm)g{C2-7I#_>OGOGyl zUwIWCLqq=P`{y@?Ts_qJznC$crG$lt;{}I=zy(1Ag$2q94i4@I8XEcgTe~DWM4fIloPj diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/pink-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/pink-antiBlock.png index 61470ff1f35bc5030ee8195fd95a9bab3eb0347c..7fe52de8b9745308bb9035c1232c2e61339757fd 100644 GIT binary patch delta 2802 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 G$o~U))k#tS delta 232 zcmaDLwwP&xBnJ}%1A{8}v(CvAx%BHf3p^r=85p>QK$!8;-MT+OS&0(Yh?3y^w370~ zqEv>0#LT=By}Z;C1rt33J=4@yqg0@pR!9R9pIv6h?I%v5Us;*kgi;0m SKgt8Th{4m<&t;ucLK6UZ22jKR diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/purple-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/purple-antiBlock.png index ebe1f83e8c80da63751f24110c5cc8bd7e28ad58..93057badac9d45dda1ddec41cf3f7f168f3b3534 100644 GIT binary patch delta 2801 zcmVOz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAum}(Nkly3jfL|0a8NDP1`mZhE6RZI) zFEW1EEW!y8AV7cs0RjXF5FkK+00EW0=K}x$|NjF3uj>RqQB3`_00000NkvXXu0mjf Dxl}zT delta 150 zcmbO!c9C&{BnJ}%1H&JQw~HrF4Fna(1 diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/red-antiBlock-ctm.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/red-antiBlock-ctm.png index 50519b6a7924c758a0161ea6cc49c441fe6e7bb9..d24953e6f6681216657a19119203084bcf6fe5c5 100644 GIT binary patch delta 2868 zcmaJ@=R4brAN?v7o7%J2s*xhLB35G0BAQsO9ja>7tyN<0YgCC9rL8?nMPsy9ZBf*W zQM)L9H5#q;>-`7r=XuU^UYv7Yob&1vPf6m;;K5J>08r)Szx0P_{S0lN002GPzn}o} z3%LP+&cX{0zkAoyH_-Qqr>~!&5gab)7vSsR^~fCng6DD8XoU4Prv`cH7-o_f`NG84 zii1Yb3YHSdo+$8oxC}E**v4URda-E8UuCGFyt62SSm#_RKjlF_!`sS+qbeVqa8&j>IbmU zG`R^qxe%cMP9vbu+rpio4**5*Bs~q#X;#oF%b#$?yaUT~poom6=nTxfV?qVE|+;6XPTSsxZK5Ktv=Mh|L4o z^$(HIAGhmRw!nY3%4>uYL{;^o>}jO^K}e*`O$nkA*KG{Dvhy|Pd~KQTkUSpwC`IP4 zM}!^+ z{%N}TsYmjq!bz~_lAmr(T)C|-OPx__E-L{I4>c*mGNmgVT`7N>h_j#qJ6Fj7aMZIoH zy1vjwf9|9l3lr__hOxlt+#>k{oFr?aVG{A94FX^%$QNw^#ZF7l_$)srnQoi+Od5X7 zzny7{x+L18XsL7tXxN;E<`XGgl2IaQG+cRcr$SwZRIDkYf`f_dmck~PN``V)m}G>Y zjiJDyM!+@I1PA@rO!WakKKeYq-9YX|RHLQF7lvjyp+bc>R{s_KXSYDP{B+LZg3kf( zcr{X$OSV2&dos_bYr^|wJHK&*6nY=Y%JlWX-rkX-&2k-nD_p}+-N)N-uZFTM>BM#H zZ4eb}lwK#TGF1>v(D|m0A<7hGj+r&A5abtCyfII!LQ5HI*)1-dRblc@to6pPUTzn8 zxdfDx1aDPunNY!|_;`7ivE>E&o{kOo@8;jXD&9R@66T{mE z->}~(kAoN(<2hpb6VVbp1>7KRG*1wBeXeO4&twWuKSEYTZZ~%;k2%lR1_j20pK)Xk z(PbNFi)HhHA&APVvZ|#j486^f%`hUp^1gL=oxY8N^;#wEmz-*wD%{;&Yd&jqrFum| z6}rL~q4g%h_9BVew#T%`0{+Ib`0azW_C7&+SDvO|DIssh>iEB-lzPS9j?O)M3U152 z5NJ!$sH!Ycg)0~<5yo7)ib|MN@*DyMuRC z4mJl>ZCGttZLr&+T(?(_E9=l}vptJq(&;xAcMvx~rxUN^wyfu@7t86&In6ZGPU>W; zyi55?+H`|HJ}%$SE&6ajvdGl8d?}=3>o*^b$M zzLgoFOtMVfRNb_HbY%3^=yaY^fri|S{8qtM!A!w&i<4cjofN(T|K8oGaow)Wb|2sV zIL=PhwiIP!=h&oQi>tjg-B#OHexsaVo@HKLG>z_Q_<_d^;wxKt8a8IBNp*N1e7G~( zg$v#Csjg=~t0ODCHT<6o4G?3(98JiU zr22j3eT>(B!otfD#g~#rwhB)^_YALmClxdmSKw?-=YU`%W#aymD^S5)i_Wdd5Z!~ znG~fHWq*VUdq%Agc`KKgN%Ufh zyBqOs`ZLIR(>bLlf1y z<~XjLvr>jtN-am*G|~Ldi~s4cfGaptZymA)-Abbi=@#fl3q!`0#}jAa4&a;ShlXIY z(C6PX+m%8@KPi+-Z4hF`D>K?n8BG@p)QULsp9=cOYp8X|#XQf<@P}0inPuV8JLpZ1 zr^7YwagCRs9;dWGZf1i9y_+&>uG>n}VeqiBZwNby88E03?T+;LIGQx1np0hLdvtH4 zX^51eQh4z4YLB&>b>%s}G~NU$Er8nWsClT`2=xyk(XDY@za4*%x(50_84vcEvZ&re zV(TJ0#6r!yqwaSNMRzq*c<<8N&~3zp?=H;jIa;6~w#&`VzvFRynjA^Vb?hVz7nTDv zE3pu~!I$7W^f7PY#k4vOtlWCX9HyPFDpQeV@tbiu}dMbbxfINidALi>9 zSm&SFyV$o{jA)Ke?<|F$8<75DE>with8Q0q2EFFDqbIY_hhwR@Y#b&$Lgv?k6X_K` zY|E9n{E*rApp_+XWkT;NWlOzXo#=4*KJc)Sw84gakIb)Ed*HJZxC6b+nzZO|D{RZJ zBRF^y_Cq_G!#v2_d_^k6#p8~UADmayQ$?y8iycRyzT{8jlV#4uhyd{m;&9tskobOW zyG8qhW9>biIrw726h_Pba$)vh0rRjksQ74n!GKI17c+L5d6Lcyzn-3#J{->&zgu)i zQ&n|UE8t@Lyc|B}HYQfYb@}RYxQ>ex5^*}UJ3}1L9WTKiVzWN_JS)A}>D=Y1C-rsr z-TW{ZtRQ#)_}%CBV8Rt@ceg@C2glHgWfn+-sq&hxJZp_Sa6G%hJOG#uQq7rsy^sd*dY)7^R@ox z$(Ep*K^6NT)_ebH`y*;r9LDVWZIStZaRI>96(#V)85EA?4wL^kXryPZTL*KB{y#uL BMT-Cc literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$g=CK)Uj~LMRR)HJW(J0z|AF*N z28L1t28LG&3=CE?7#PI!C&eFi1FGdL@Q5sCVBi)4Va7{$>;3=*B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&OjBEpQh{n-c)B=-WH?_vYslqdC~)|~o&T41%iq~~j=Lh@ zvF4J`*3;gb`r$U*;|TF0=Rf3tRX1mR093k}OnFICakn%jf)hS8~&I_53PbP0l+XkK DYrmkz diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/red-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/red-antiBlock.png index e73ad4b598287f10df136bec638220fdda3b4d1f..f8d21dc479eff1d51e011db5d4f4404839413068 100644 GIT binary patch delta 2799 zcmVz0+$w$8Gi-<0047(dh`GQ010qNS#tmY3ljhU3ljkVnw%H_018iOLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}ol|F2Q|T5x_ulkEONfA!OK(yY2q02Ii+~i7 zCMqEb5K4$4q1hEt!4XA81RKbphy#v}fQ%JUEDVYY*azexqJNHqqlk*i`{8?|Yu3E? z=FR@K*FNX0^PRKL2fzpnmPj*EHGmAMLLL#|gU7_i;p8qrfeIvW01ybXWFd3?BLM*T zemp!YBESc}00DT@3kU$fO`E_l9Ebl8>Oz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAum@#NklfO3MP66dZwwZMyWtGDV{ElAs*g)Pb?HBbfwwtNqU7)bX*TRa#(0$7Hvi1Ho3~+Altkk(poI*cu6{1-oD!M< DU93nG diff --git a/src/main/resources/assets/chisel/textures/blocks/antiblock/yellow-antiBlock.png b/src/main/resources/assets/chisel/textures/blocks/antiblock/yellow-antiBlock.png index 726b1039b855611eee6396328ba8406c3c2b1311..615d9aa7c4c1eb8c49042189639b35f3cf984f46 100644 GIT binary patch delta 2803 zcmVOz@Z0f2-7z;ux~O9+4z06=< z09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p00esgV8|mQcmRZ%02D^@ zS3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D}NL=VFF>AKrX_0nHe&HG!NkO z%m4tOkrff(gY*4(&JM25&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv};eCNs@5@0DoRYBra6Svp>fO002awfhw>;8}z{# zEWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~ zxDGvV5BgyUp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$ zQh$n6AXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>Xu_CMttHv6zR;&ZN ziS=X8v3CR#fknUxHUxJlp|(=5QHQ7#Gb=$GgN^mhymh82Uyh-WAnn-~WeXBl@Gub51x8Pkgy$5b#kG3%J;nGcz7Rah#v zDtr}@$_kZAl_r%NDlb&2s-~*ms(%Yr^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3 zXQ?}=hpK0&Z&W{|ep&sA23f;Q!%st`QJ}G3IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?2D1z#2HOnI z7(B%_ac?{wFUQ;QQA1tBKz~D}VU=N*;e?U7(LAHoMvX=fjA_PP<0Rv4#%;! zuC{HqePL%}7iYJ{uEXw=y_0>qeU1G+2MveW4yzqn9e#7PauhmNI^LSjobEq;#q^fx zFK1ZK5YN~%R|78Dq z|Iq-afF%KE1Brn_fm;Im_iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$3*&ni zm@mj(aCxE5!hiIIrxvL$5-d8FKum~EIF#@~5Gtq^j3x3DcO{MrdBPpSXCg1rHqnUK zLtH8zPVz`9O?r~-k-Rl|B*inOEaka`C#jIUObtxkn>wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKatOZ#u3V*gjrsz~!DAy_nvS(#iX1~pe z$~l&+o-57m%(KedkT;y~pa1O=!V=+2Q(!ODWcwE=7E3snl`g?;PX*X>OX6feMEuLErma3QLmkw?X+1j)X z-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myURP#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA@fQEq)t)&$-M#aAZ}-Lb_1_lV zesU-M&da;mcPH+xyidGe^g!)F*+boj)qg)*{@mE_+<$7occAmp+(-8Yg@e!jk@b%c zLj{kSkIRM)hU=a(|cFn9-q^@|Tmp zZG5Hu>cHz6uiM7L#vZ=Ocr!6x^j7=r!FSwu9q*&x4^QNLAb%+TX!)`AQ_!dTlMNY@ zlm7$*nDhK&GcDVZAun4-Nkl3jYG009600{|Oy1wZu7Y(fA4002ovPDHLk FV1jh(KM()_ delta 199 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/gold/bolted.png b/src/main/resources/assets/chisel/textures/blocks/metals/gold/bolted.png new file mode 100644 index 0000000000000000000000000000000000000000..dda01e39167b82f177714f0f56f99c42371288e0 GIT binary patch literal 3412 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/gold/caution.png b/src/main/resources/assets/chisel/textures/blocks/metals/gold/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..b1da20362f5ca1dc67cab5298e490d4642d7dac8 GIT binary patch literal 3440 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 Eg5%j&VE_OC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/gold/egregious-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/gold/egregious-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..27712b9dccd64d9e9cec9e437d58cc6e09ae47ef GIT binary patch literal 4442 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/gold/thermal.png b/src/main/resources/assets/chisel/textures/blocks/metals/gold/thermal.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1b5940399c95129872a36f77bc0924aa0a78b6 GIT binary patch literal 3277 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 LNkvXXu0mjfTjLHY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/adv.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/adv.png new file mode 100644 index 0000000000000000000000000000000000000000..8faaa5984459246f48575c6fb5c2d9d8d01343f8 GIT binary patch literal 3495 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/caution-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/caution-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..413ceaa9287fca121758654f19f23233cd62f3bf GIT binary patch literal 4474 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 M07*qoM6N<$f`;*oIRF3v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/caution.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..855ea19e7eef49fab9fb805518264af1d4fe993c GIT binary patch literal 3437 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 P00000NkvXXu0mjfCH-#0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/crate-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/crate-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..4edeb3146e42f022918cc08532a6e3c3f923774c GIT binary patch literal 4278 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 Y0Bl%=nrO_bIsgCw07*qoM6N<$g5rK01poj5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/crate.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/crate.png new file mode 100644 index 0000000000000000000000000000000000000000..88583716ea7188af528787100abe0805a7e34755 GIT binary patch literal 3325 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 Hu0mjfr?ND4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..28ab92cb5b4c961f9effcc46d379fc060d41b0c5 GIT binary patch literal 4759 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/egregious.png new file mode 100644 index 0000000000000000000000000000000000000000..c865cd26296e6d35c73998b0314608baa2d537a0 GIT binary patch literal 3454 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%0DWSDSDNRa|loH>*euL7Q zzkmM?rS=*CZ46nK6Jx{z96W!)$&YYYG>C3d?Vr!Oz?!Bdtc8b#eUbk5Oz z{D?)tVt&B;ckj5oyyWccj4aDouh$r3n9XL~-rh2uP64Rv8i4PAc}*>XHpU_%Y&ILt z&(E12Oj)njEEfxokB=#eg7at30GLjvoSdBCoMSW^0_;~%N@2BSxmIu4{I?9aU8kW2E;U zQbdyy&U^Z{=lc4Zo0}VqH5?uuQVa$J5t_QDu3NnKv~7!s(6${(f&J#EpV`$7wy?}+ zGm4_1?|W9O6)7d^x~A(oL_9G@TyRV#6HtlycQ3Faf-#!KVu4bM@pw!Kfv)T5`<|2% zDJ3S8$>XufAczp7ps)Y@gAfA77>c5xZfcsQ;bHTDbMAAx;Jqh=K$aC`Sw{wrR1}avwjRt$jasj2VC{1QFLI`;8>HD7XcudnY zIOiA+hmTNY*#*8ljAk?((mBVM@jmeUhaV~L@A;J2zw!3JfAPL2%0GNTJEg=|FJIw<=l;WAD5V~& g9%E#q6afDZ0D7^2&&tUc!2kdN07*qoM6N<$f*)RPzW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/iron/thermal.png b/src/main/resources/assets/chisel/textures/blocks/metals/iron/thermal.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e1bb7b7468ad6f7a186cb5488d4a356a8df912 GIT binary patch literal 3350 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 delta 756 zcmVbtvzzToTNklJb5Qe|*X}1Th!5ibXg9HMhUFCuZdsrzK zkg^iu4R`^>aivHccovk0*xWcp+RJj|0kDvW#Ky5B8=D!=^mI>8PY%vfr>aZ+_5Hs} zTwGk#Qc9$hL{Y@|KF@PbPEL?ga(#VG9LGp0@!n&tMF;_a0(gJ>_AOgmTRcBM6UQ-H zYwEhDEK7_r?CzMg`j#5fdmL)<6uCA_VwOR}Y1HAWWt@-iI8}!Nw!{HEP4AxpMFE4rh zy2ETXLkb~~Qc{1{6;TwizP`@;_dlbx2B6hyp>_0fO{>*nI-N2e|AV!5=|KnqV=Rx4 zkM#R}R#)5n_URLiI3~|?j4|BZ{m$m*CcR!4Yc0+>@;pa6=P=e1Lclr4?d>gldwayM zUJ*qRjYb22v$HccHa1vYZ8M+D8I495V^Bv&N2F;=p67pPtqCEZwPre<^7->0eEasu z`T03TRxlh6vDWhL-A_Q^;NSpdj6n!Nr_-U|@6+q`&{`veU^x7nX0y4>-di3X9uPvX zySqzW*A#_8efjeXAAb43Xfy&K&vVA(F-1{udU{F-f!S=vcOmaRLI^?#eEoWZnr8_~ zlJNBOM3R5Zm`oRck^~_H-ENnDzmNAGfGCP6%MxX+W%BQYMYfpHS z7J!gYx2#z4@Awg2u_&cOhSrYlI*#qciSZEIFMjs>Mix=U-JQkV9NjDaeEK|&1_O#q zMTC?jN@KmlS;zjHUG8r^U^*FNtwHMq1o#lh(vc zSFTdZG8#(p+wXrc9QFb50j{s#q<3=6wHxc4v=6!R;Rg^wDTO>64sp(5twkzHu}~n( zW}Kf5=^eG`Hfu}Z=o&hw^H zzL2=cbA*2oSmTI98r2HBJKI=iNfM2B0p~1*r4mX>tO@wwan_a?Ns_R3=`w#mdqzQPLW}@t9|FC>kVlUm)2Q#$IP8#~r&!}? z9n`qBxkP5V5(#`HM-1 z5UAA~)DK!093wIvk0}+4RO?M<*_^f26}HvMhGELN^x~{#kX&VWXmN=DFC$AeAQyHK=x+ z-6eT{$6AX}N@0xQ?(U8_{*U}mvr-DrIgE2ut5rPD!#T&@-9HQl1B@~2m4y%lK|mOW ztX3;tUS8O)Z&QEd1*I|cdp%mM7M|yEdV0!uJSI(3gb-NgkO02#v$L~95Cljm`SJG; zk|Y7ZTG-p$BaUMljRsK^v9t3R&VlrO#B@5PEK9W3_`XlIT4l9bF`v&FjYbRxZzM@V ztJT8yeS#oB2p?-LS(YJ(!y)Z<8>Q6dd}*4JWf?_LV6A`MK)k=dCk#WZwJ4=fN+Fxg zCXGg818OuHp|wVp3g;Y3De^qW^E}Sa&pAFmCd)FMbG*L3BGWWwJRTDS0iVlHe%}A& z`udu(EXlK+N~MBx4k;yZ91}$m)>^dIYmor*Vm-kqgL95B40(8XSld^T7;P}du(h>? z5CUTi*4lq{?wkV$v)K%#6elMq92^|5zrRlyhFn}+FqurKR4UZ#b#8BOsZ=T(Hqu(l z`};eWmzRWLNWb4_u~<-+CB0scqoX4_oelt>pP!taozd_2iJ}N01mY|B_vM9dx65=o zCChVs-^V$JR(hkfbB<1@L$})nz!-y=&*#)?HM&-vS5~VP^?Ds^3`LQ%TrT-YKlu3g zz!(Ft(fF(6a5yB6V>}@!l|o9%csyRiGlnRNczb)J*X#Z7-F@FjYt8Qg0N2;q@Pxby Q*#H0l07*qoM6N<$f=QiS_5c6? diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/steel/caution-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/steel/caution-ctm.png index 413ceaa9287fca121758654f19f23233cd62f3bf..0ff37d7deb5d93bc87a7474651ba72a5610cbddd 100644 GIT binary patch delta 1974 zcmV;n2TAz)BHkphzY2c`iAh93RCwB?ms^h%*A<1os&lJrcTW!(FklB`f(Oqan@Gt| z%6s1OmcN%okqrZb0h@pU6Xx2N>Z&^DR8{ApdRjuBaUxAit$zBntM}S_?Nz~_|MJ&m zoTMnF=(>*Oa*1<}MKR;sZ@wkZQiKSJqX;2Ftn*A~bDZ-$+TDNU@pu2^ldIPmZfu~m zA&O(dP@Ks-@7X^%;^nK?)K$q3j~^nHHY}G*0Ian%-qAD-JKH;Gtq8*ar4-J4@Zg-M zEGu>&?-C~|p^#Kn$#7$XVm_s5JX)JG`Le9=O@nuq7f&A}gdmhsBBjK8k9T%ee499q zFj^BCL)*5i2Xuc-rZaXQ@1nIqh@LgZU~P@Jj%C-K&pXG_$%L0Lo&nIdEnygjSZi^v z|L$yWBc&kEQt~VTKuO7DI%7JU^Jw=G#zdr9P8fzLrKqb4?>t@Cac_I)Tz)c}^TX~# zwAO5FUZ(3hWY={cwf$7HAP4}ct);3hWmU7g`-s7CgCKth2!a49B>>B1N82>q{d$K% zmXf8(nf$;0@pp#fG1KE?+NL3jBEqI=u(syj))q+;V~i$EVzg3N=c#JTyjZZe_k=9V z5kjD~2B2vgf*{0u&$Syj(Z-;aI+q`eMs#gUl4S%z&`VG*3hwXRCrM)B$gH&KaNbi@ zHO_fN>Z(NUY;O}q z2BZ6b-nJdxa>-;mTdi8(b|C~o5a68ae{GF(mTT8u|QFZCmbs^%Y8M2Ez?5U%o_H zSHzJymshHn&eayB4Wo@QGL9p{Fr>DQuInhPnt8F{>C>kurHJBwpibL0GoMWe0gUcl&{~JJZVjhdz8AqKxL+jhooIVzjY|G+I;D7Hb{FqU6zP zV1$sgZHv~Lx~}og;=N~UYl}Qf$+DC%3>l3#DHjWb5LoAV_Vfvxm#>`3hhfO4H$Dd- zNi$B44|^Xd%ZiifjHgfc)(#g%(b}!r##4V)C0kqf*cc9o;|L`MVHhHWpeh%%ZNu@w z0coC}%U}QOcO-Fybsp~=#ze?@vEXPj;rX-Y{lJ)hCcO9kY*Z!AIqu#2dR<(KzWBUY zFrQ7abxmEBXcG~|$+^5%ipthl=Lv#<B7_iU^42+;MZ20ei?@#O`-k5X#R*Cqgb?etd1tAs zirZh_UfHw2XpPYd-!xe3sB6pXmoJFp1R;7`4p-Wr#m7;^#&E!Lxx{-%CKtu;;4Fq@trrQ*%2mndxrf`H+8j4{#LVymkB zRUQB+s|s7!bZyJ=;XX3UhXi3rn&nJSjsXb5kT36Up|mCpL$Z88+qNieFj0)HE8e_% zNtO>*tG7f-#iE#>p4c<fWd!oL{*k# zdGFyxG3UekUsiX)kfa$&nsWN-i*KW~TIT`ZG^@^Z%oht@|MY?=iV;#G^Wm^R3Q}QA z#Mj?Ez}7WauU;XIW6HYX(<`6w`psK}5WIW+iotNiXuQdMHX%tfY+Yl*a9#W~4@5@O zwjD}J4v$Z8&hx|G6Y|lBBuRgnO()1CN$J{_PzWCU@lRYDZ%|e>QV2%FoTh0g>xw9j z*?aVT?_#z_8^h+MPap{By1uOs9{k~d=84hx5?$M%v|+3?QYwwonw{+(k|ZY2Qm$Oy zWVr6}V4Y+4;dkVN5#D=_4)@s@Ut&5rUbU{_^Dn-n?K&c3SdB{eR_&B#9Xga%z8T`)l~&@QCST!kd5pL?{G{V$NVVLMcTtpHWv8Wl?bR)@`(s zv|Y=hEZ4h!GMzCm7QFlU6=|0LW}e8i-ZhJ2LECl6*Kgi(u>T*9_CL^d9anedUE2`F$@)}!@2JWJ0H5Cc94RG>MM2lLNTpd61;>Z`C~eq(|8DhWoS>9GHxGni z$b34(x<39L9(+J(t^XFq2~}0nb?rKKTU%3AB_@i9;+WZFf{+p+1oPR1y6$Cp`FxMz zXbjN58JWKI-dQf{y5`RB?=T(>SMjaC7l+3aius)RY|4KJ0CnffJQC{__5c6?07*qo IM6N<$f+9cks{jB1 delta 1744 zcmV;>1~2*EB>Ez-zY2c_rAb6VRCwB?mtAku%oc?o&y2?(iR+}LqM`^PR8=TY5JLPe z{=)nJxG60ypW>r{1f-;OYG-VZ?VO7qkLWoq??rQEDO%n$d#|bfS+bDlhT!f-f5N=X=oNGYl7n)!TAUDxdG?XkPN%f^4k2BXmktu;{;A%wUT zZ>?oIo$~3^CyX&192}su)-0Dx0II6OT1(S3?Ck8IwMGbm@B3J5vDQ-8HH*c9{r!F7 zI7Ui|F^17-#M#*yP1B&Yz7)S$ENGgBx~_Ti<_%Ixgi;EnlzVw!Jc=T;)&xO7+qUk2 zS(dTCzmL`$DJ6eODS{xNsw(Qbrt7*Z@pWA@o6Y#};R66|+aiPz4qVqYJ3Bilr5Fx} z42MGilu~3_#(X|!Z*Pwv2pA5B?smo)thIDq$HRvYuf%6r#;aGa&|0&$wno==sIKcS zw7s91=XvhdWm#g3VQ+7bG)?h556|;ZN&&E3E@_&E$z*>*k|YcUgG=!*Uc6vD9&>VX zLen&aVTfp&hN`NVOeVx}Ob`V0q^#?jvMkB-oP&b{cQ~yz08P{2c^=kUHa9m3f&kz5 zuf(TmO53*XfNk3%ilX4rqesMXOc;i4Hr85{CzyKbNB9D=JPoMKx^%8R#lY)_cCglhPG`n#?ZDclgR|FHA#|C z6vg>Xl%i=GmdoXp`1yQ})|$=DP0F%7$7!u8%aW?9D2l=nMoLNBw)Fqkb&a)_$zZK9F$6*2meGG@c;EM3H$2bd_wV252YCPfJz8tRFhnWE za=D~!TgtM;TFcJPj`Im2gi}iY@+`~HS~DCD-PXJe-|w29Z*^TGc6WCjo28VlZN1TK zZEam}K&>^sdzNL%$B!RfR{&T1GJF_@j7B4t%O%#@^JR8$a6pnI_`dIapzAvFJZFDv zYm2vU-?|0V7tgW`r4(Pjd_ilC=Xs3BV}c-X7Hf?8zdQh7jG-(`#~GC*2|@^l!yzXp zCjbZ`*xufD`#eb!$LQW@zI^#Yk|a)gN-6R@?^o=ld7zggz=sbX7z_reG)d-jaAwKa?}NGVCv)M+@1BKG(9+1!8Jq^c@{ zAmGN08+e{a*L46qefsoY^Tg`vsvD>8`>4L{y;O$7A?xewj;V1Rljk|#zJ24?ty@lR ze_E^%;zFMIb7fzaCxRewBU61Ih@$9%d-Y82S89?Z7c_3Ibs_dT_-p5ZM~@y|3$J<> zYpws92YQF>y3V!!{{8!07k_{4JaAq7we!Gr@yc3DQ558PPE}RBeEE`8Weoy?giQx{e?SSS%LK0soZRzvYQIj#*h*IVWMB=S-(lPESwy{P{CdO7c9X zcgVA|GmJ45MZw*>ciqldEEZ1dr>CdndCt+%(O>gGA7%jZJU{<1IXZtj;@7WVOs7-2 zu0w0>ZWM+gMNt57^X5&WC~~)H+m`8ciq@LhY{qOhb7cElp6CxRrR3|^uc+yC%J=Wz zY1@`4ikt!U*&X2a?b|4&T;}(EpFGbwK0Zck&5s{H+?TQM`&Z@xAp}{Lx%fAoPLW#c zf1)VD7(>@}7s%Ad>@Y|S$+8S7B~nV}^EqW%QWOR6-o0Zq8UYXlfpfXu1-G}i8I49R mz6l|i&1RgPoiU%!`Og41+RwNPq$q~~0000;eZ_!XoRp*prI8}_ANKz> zQY%oyrz(OF2#ztvJKouy*-Jk-;r)Eh(b0JyvH0~(H$FHd$ufix1VMn53axYAoShTJ zJ#1AHgb|+Sk#9FV+&-P@7{%1i62~#lR@8Nk@H~Dye@A~9?M-RcM@orOie8f9 z2O-P*JAxoU#l0R$)(60oiX_cAfBymJECBt%5K|PSS;kIlbiQT1TH;9wfJ)MowyE)? zB8nn@|L_Mw2#$}BNaC2HG|Z0bifXC=F2@bNTm2=8M;?mJj=O!yzgNLaeQLb^4akctVyYjD~%>4y<$Z zdNGY|xx2k#cCw(UYbMh}3au$kfoDv?>Df6!7$H4@-W4=Wi**iTO00EUUS1IQ5|T6{ zNi&?a6vd9x6sXxR3%afY;9xu^2z=VEWAnVlTF1rZ1^s`)2q`7bSvF6PNF}MA1>vFm zAfP`OF`XVzl!ie+r7SC~b^QD36G0H}-=!2k&z2Q_5E4f5KA?7%$Hz63$(Z})ccdq| zy1K&meWJLB5Q47jC{2MaE84c@)#+RE?FO&Vn!#v{Qi{5+={jD_Ntyvr*ELPkkZ+&y z!+_bzf~tQs3`dhaNSpQJi}0V1e{ndQA#K~@oW(hdDRuzN7q3xDvC}!* z%@fU!O?Em*0)M7iA6u0OA%2YMsHzfU3c@HNiet8$4MGS!DcL-&v6aCT1^*8K_(^T> T7&5*K00000NkvXXu0mjfYR+b< delta 698 zcmV;r0!96l8|@mfzzTnuNklrxdzTD2dWZj#Mr-wUyGH5YS+;W=l5%gakY9*;@WlpqLDN+EyF0+3}H$K#Q+voo~T91aIIn+-w;0OVjWz&VEyf+&i( zy}cy}0;ba`Ns?fUVLF|%TCH%-v0AN2)0D|%!t3iRvfuCHoI^^<_4PGHQP6cALI|=f zqitJ^F~o7q{r!JEv)PRGdVRW1Dy3+ehWUI>p68@#%K7;@-g~UIBuRqSnwOUsilU%x zTgKxtWm#g3AvDIYSS(JI%d*5dhqV@C3{BJU@bJJNt29lq)^a=^F~%T^qQH9(z-Tl= zDTVi*-EMahXIX|20&6WlKR>5F2m)lU*CWd^E-o%G#_)gd-#@CVqG=i)A0JUl{n{lZ ze^u8tN-3f!`ek6P#!!|ed7kqZ z{i>=6!w~uT`H9w=uImWH@U)<+DxxT&EK2|;lL<+ZP}enDYl0wPxm+T()~BH?%jmie zYwgKvfZ1$@loG8qyWQ@@L~D&)E|*Lu6RN7>csw$mp2Rsv+qPs`M$| gyTv(&_n!X)0K)`zNmHl}I{*Lx07*qoM6N<$f?}0au>Pv{26i_2D-LI z2#FgOor(Bs@d&H&)OW53%Vq_`CyVtVJnBN(o&Q1n(J#0mSr?7$P}mgpdU9F}6equ-4+;h*BD3%iHlW z;G9EB#W;@SoRRi3fTA!+DJhDAloB~lj}U^Kp(qNBvD3T8Fb)G+YwEf}Dvi?m|KgR> z00?o|5g^BLz&l3_flNjz#W)POaX>0f&Y*RHF$SeInM{955y7+}?>t@ClVU_liPrj7 ze9rm!tFJ9)-@?cQcARKhm;Z_ z1m3$_@xg!l>7!C&j6rLK?AtvlMe>1_Qc4O_AjEW5RoxInpePKPsdZ9LohXdKdk;Ai z{8a74j~C-pN_g+EwnS?+aX@JeLQLl&1xo49DZv;^VG49%XlC4MO8PHRfRDny3l_JA(2vIZApxg!dOy@q!@`YGWI$QjB;v9_40ic{CL7Jhm*6N&-xr z$mvM97vYss2qEa&mhE;sbs(igPKmy2i6J1RJT8(_!q^fi1;fy@xn3VC6r>o4F_K~; z=Zt@M?%;0eR(!kP;hj5H-*-K7B40cZ$xnu%HBu?6rXlByQW}AvC=9kNNh#9I7o-?S zDIGfE@Z(5M=~lcDlCr80Qliv>gqciE`AEdfWbWQM`mV(oLkNB{DXobiQZ+L;Sn`dt z*|H?WaCEsB;mfKdr%Y8$)k54ae8{fZnv9kd>jv6pU{P&ZW@%5NTnG1p5Q%h9NAp0`Rc1*sVovSP#8nq%&2EGPVU|3<%h2jV`RBH!Il;C`I4$`K6QW1|H%X1 zJ9J?vjAgc1@ZjtrLI|`Faw3or%;pQ0t7$_+-_gt$D5YrTbMEIey0&F?a*t*Kd&J+<5i5Jg{7y^6cpo=8FY&Gb4D#K<*QsJFr90$6trJl{{yOwshWqt7pWmPkd12F`=a|nMSxL&Urx|Y7{ zFvi}R2QHsKLn*~>vmtoTZgY(u$C35r1-s2PoAo8Zd#=_O#1Jsn((QM+ab&mMG7baA zT6UXjq*6FH-EOWfpEC{v`|So>mU!>JkOyuQR1}83ZAm#Xjsv>y+QZodcH0dI!TRDk zUAyP{@{)QsV|#tYe!G7m#>jrRWwBh5GxS|c@PQN~g)t06f9Q-q=7D?nUm^rgiV>{~ z#&N(_6=UDC-|f)v{@{oBLqdJ~(L2Y415CG^!yPV!Kv5J^ia8{jZ+`17Y-#b%^WGnR zOWn+nN+ASa$OE=4vDT9EbW8g7cOOkw{PB~Ir)+X;30Ldj?IfRu{9?A`6 delta 1547 zcmV+m2K4#$Beo&1zY2c^;Ymb6RCwB?mdkDvOBaQ|x^#8B+wRyzN(d7q!UG^CC^L|F z16~21ktq^P^8g5m2_lJ>`PUs)^`JbU&GYb}4@zklb$hYx)D@`Z2T zzOi1fnNFuXfBt+YKF@O&iv`EW$6Q=oAltTOyWJwCr0Y7;G-WcG;Jv5sd%CV;yWP@t z9o~C}VW8_e+P00q0a$C-!$16lt3N6(52M!OH+J#*iclQc98}i4l755kla-CrJ{L zBtdIUk|Z=ugVvfn&rwRDwf-w!DHRh4kL;UDvneloGA=PQ3RXV@#}&a}H^(MF_z#3^Ywc-}iq2c<*t}p|xflN0d@1rAU&5 zVHmL1#-N>Zkr!>-?!<>6!d*%!q}Do?H)Pl}4FEScH!PP+fS8qYjx5W_^Bm_K<2bV2 zZX?!OyAwYQLwvC@=C);_eBS$8Qv9!nLI{Kq6h*->3^DqOfhR_XHwjBBf+9nE>3A z=l!I#tOS65_wHT1G|Xr?6vnEqYXIK7d4rTPo_YQHHT(PfY&IL}y1vJQBuU8g z94Tegjj+ns>orfGKIP@hm*~^e(6g!7?-f)r_*WF_o67svMhgQAI2yUHvFfQVi<zd7G!`0Q* zt(6~!fxhp#zP_eyTcngx!RoqZI-SxqO$23G77b=_)T`Bsx~^%O=AJ3}-4B0UUS6V< zqN*x}VW6ribl>+ZmrJg%uUV~D48st=!vYG5*S0Oj7^(uD$+E? zTKg|Q5Gt1>NhEI9b?EJO8=Xy6RR|&Y_3Ibg?UvPQMNt&2*K4Y(!a2vy%?*2ddwB2T z=5)?sjJa2t;0N+NXBdX430;5J#VT$#8}!?^Z=*v!IXQ_$0U{u{r6ftB-Ycbe@!|zp zmeKb;pFVwxf)q%2*AJv=8lAH-hF7m%A%sBx{P{C3lEBd54?+n;$?gUqr9=q9$;k;n xe*B1QIxL*u{eYB`rfH%Adha{PP0Bl%=nrO_bIsgCw07*qoM6LruV1f`F1)%@{ diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/steel/crate.png b/src/main/resources/assets/chisel/textures/blocks/metals/steel/crate.png index 88583716ea7188af528787100abe0805a7e34755..a78a9f0b2d46cbd971af385db22482ab168f7a61 100644 GIT binary patch delta 657 zcmV;C0&e~N8N?c}zzTnFNkl{!hUj2MY0fWV~F$t0cXu8XVeV-`hvys^AEzyI@JigzFW%zyuN%j?NGV~nAyE1Ywv zD$_UtV2r^SL(ZAP7!LObWWPV~$NLWes44($+ae-}6PBT{E3`1A|iO-(C&7q zCc3LD>c*q04A&>hs^;d~HyrjKseOyJhPv?=MzSs|<2X@P6^(D{uD_)5o_QK+yDO}< zv|Y#7`G)@GNYj6Kj4_A^DJ4wKnUoSKCE~i0RcX79+P6T)?>efwp>22gw#AB2)-~2z zthE?bWf(?`F%(6?x-J*h&!-c|r$+!nn2GDU4H-jOmWWu)x~`BjagA6J#5r8)C<-Ww zg2uO`7;&ydRaw`Cs;UvOo3$c>6-!mukTZ4NV68<}5$As>%L-RI#Fgy2t4mgvW!(U* zwRrEz{|~4tMX?2@s%lb7xUxbu5o09ANY47%1!D~WwfAUNR26IOMmZ(cB@pHr5y4tZ zQ51~BK;QQpfF>p9%rp+H%R-pv?G7{JIN*03(>O4kdS0HNE>Q=V#tBhXQcCp4BTERl zvgG;ckraO;WmPerPb?vD>U%;6IOkYGz}ihjflciV@yvMkJUu=z4rh*^KH+ye`r|X_ z{sq;5zx}2kt)JU78l= rz$>f9HT^zre*?WL5EQc{*B#u#FZOw$B_loBarj`{rjM4wJ4 z-rn8-h%o}-y+><}F@|+rS(YUi2q6Gqt^EZEA+Xl+`ua-W_dI_*Jn;1NMAvn+ZHxDw zySqC=2()dBQi`gocz%8+rG(a6UTRaHnS(OMHiK&F%kArL~~I1XZr z)OC$>j+7GKd&+;Z#Cwl(4y6>^A3&(Nf z#G)wBS|j&;C#A%`?|Jja7=#cAA@JUF90x^F5MyND_nZtMwbp2@vDT7OqAW|4Qp6ZD ztSAbMF*Hq+Z)MxIUw~37&wD!@Ap}xNthK}#|5OhlkWzojD#+XH&bb_@l)@N82!Uze;*nyBlVd7immuXJ5UO6d6Jc zm&+wDZWspEb>(`!vTYk$Yu0tm5Dg%N$i!h7`1<-{97isf3*LLWuA}dJLI_zctu;z1 zv~v#U94|pHFWFEx!`!N+lsJw9V@!5szJ>GoOxw2EX*cHyA#l#+&Tg{)Z|l?P#J>Rm XXNys|ZV``400000NkvXXu0mjfjnEoo diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/steel/egregious-ctm.png b/src/main/resources/assets/chisel/textures/blocks/metals/steel/egregious-ctm.png index 28ab92cb5b4c961f9effcc46d379fc060d41b0c5..3214a32e7f1dd8a4054947ff5aa825233b5269ad 100644 GIT binary patch delta 2085 zcmV+=2-^3TCCw$UzzTo(NklA*7a*_ zZ*5-6AIy$f>kogZUj7cPcPJ$hX_BI~MjJy}7KG3pqN_$%74JL%N^3*}0NNNH?tVfP z!Or>yt+kw-EHFktm5+@fD+}_fV4w`vI+Rh8rfG22qO`_&Pg&+jDJjYVtu?_r0HR1> zjKO=)YPIC}WPuotX`Q8R8pdnG?z?Pt!5gJ2kltqEkkNE^46ir=| z75l7@hO|vfYi)M`fU2rVdwsm~2q{RCln_9i*Sjooj*jO5^m{3@*_@_s>Gx9rtan&% z34n8!BuRfEf+&iB=z?EmIm=as^Nz~4M8To*qU6ezE3B4hSm#kvkoJ0v#uM^lMO!xH zWl3I?Kwy4yN*u>re1a#p4RzJ=N!wrBmk!|7)=R8^oLhx7@Fh(Pyh$M-L04=)2Y?|&BZcN5(Ovj($g^1|)5>A&5 zCW0msh{m=QSw>ZsELRy-RiTw4gn;uNr8IwyZ7!~j5MA&25U8q}5J|LBSnF8jIjb!D zFJ95KmeyLNlvrzVu8VpA<*ny2|fT3vC$;)gtm29YiXUuT1(Tk z6h#4}DGi>cZQ0)3AWh;=@sJopGBvbqSD_?{S)45|(oz9rMNU~)q;c0&&3R%K=MR69 zO0qT_uv}$K$72qUjw#COq8zI%WB+i5_ny((kY1Wz%CGVqqcwX6hvyM(5dhu?oO9%# zI=NPgLBESj?>$9P5*tlfR~W4s^b^|FqLjoo6?sw6G%e!%P?zy4QY_Av#748WZwLWY zFG;!oXqVC2kjJTbG@mo<_i3#~D@A{rBy^Q3XxpwA^0Fk2W2|+IdlMe*?SqtLMR)Hn z<9GKCnJwnzk9L{=xPlKr-3<|9I3oDaojx7FwH_e^zW)7}5km0S-~6c?(Q#K=Ar;yf zobxnQN#R;Jo>NZOxpjT#sXm~Tq(4Zx_wl>*q^3zyRPUSH#8Po{^D3)6BaVM#wCn~+ z2!YdV$#dVnO=VjKg8?Q)tjdC{sW4KpYCgXYtiQ5F6yNxAc;bT84ZWTMnBaDlv1pZ*MRE)Jb3SY)bn4s4iRilCtdey zLobQZTG2~Wq!4JW*xK0SY_(!zvd$-mN7QvgyuHa|{_55?aheb(2}ghX`pM)=M>y|^ z(*%7!q@LyjkA0#WXqp?>cb?q`p5VPliBI!S`al!~PEJm{-Z+X&RygOnMMfzO59jDuadg;Cw^d%? zonzSV(X{P_50q6w6oHZgYc19}B4Gb;hBWI}-U#QhtCS)Fj*frlINLcJQ8(GDx~3>f ztaGeZIcLk9`@8?bJ4ZOb5&bl!-%BZ*25a4g5A=HpT4~yID?UA2aOQk9JYN_}LH1@+DqrdfMQnpss6#5a>uSN_woC>f+wl&hlFH zB5V7G*;c{OBxL!LU;p-R^pb@B`O5X!2Ue^6!UqI`*?fU>j-UVFb!J-yYVqeIq!hGG z#=_b29kAPuzi>VU7k}LCQY{kQBH}$~QH1{>V3U;b%bOja%Lj_L4*B;0AO`5keFqdU P00000NkvXXu0mjfqu2@= delta 2030 zcmV<&@49+>c_XI(J_a3cvw~4YWY3dqJ!2bR|N-44|gQ`L*!TtO93FDYI4iDMe z+q;%OJw0XEA5wpoCB|B$l87YfqqQasLyDrndyn_Ns|J9z767F+K>z?@7&4p9Ab{P; z4#pUkiv?jAzLJlkh^)xS%bY|l{U%qm-g33Y6A(*DeqQf-nqm z&ap~U7K;UPGQk*2RaJ~eBb;-jY1;8xX{>kPJ#|$B5Ql#;y)`jHYhr_xpG});f$cxJ|j^ zIEDa%AOL?v$FJ9G(lo_6N8L2w9V*XrZrr%RYPG^zhm?XONf?jEtg|(BS(D{CMNt5b z<#I_F#&jR=DVv(QsCoMIDc)Lc-@d)!Gped0&oZ*CplKS4qS#DUi4Q=PW!W`h)3jx& z>zes|-j+Md+6ibHoO6U>h?D^`i4j8Z`u!h}t}}mBq}bWsCW@kKd23s~G8Mz&5QJy= z?eC(r*4@lI=KyG$hO#WF>$;nY;c!Tv=iLNcU57CiDFu_sgdhkQ3OS~}#t)q4w6Olgn6Kb_uQ8g7=k&$KXH;N)A<4GqV&bdw@oofXq2m<0bCh#Cd zt9Vsa0qtSNlkt~$Aq2f%%;jZ;iwpz-qBb>ImQfT1X_|7?6W;rcB!|?d)rnRMu6ob6 zV;Bgu(imgNvWzrM|BYAFwZUwvbfvgTDgu83lrxUSV!>!MVrMeJG!1!?<8IQ-Do}RX2xslpcwqib?Q zoYvaT3jmZ-^!t4P+@>+ZFr+L?!Z4)YPuj97$^PP!JkP1?y3_ybco|48FE0thke!oL z@Su8ekE5fbPKL{}={T&wh^D}_~WO? zoG;Ir&1RfUrtsto)Ein7Om^_zBZPk-h$8&f5br(T{NaxfLhzU0{JOR1;h@!iDbZnw zvyQqfk(FVwSTLDPxP5r|$~>TyqBra@o6QI#g^goW^7i}4Sa5THkM(8*)h3*H?^&(a z?0xWkYSST zFr7|0K0ao9dwX*Y>1H}Y9zJ}?!NCFd?%iWN9ZLU_xHKtZ|vV7PGaIXW_~=sHV@QI&CQ!Psq32cdd=?sE^53p##zT; zFzD{=&Ye459#BeAmL*x1(eL*WLZGz<4~K_`jCaO3=ZKTI{T*JJ2d;k%?8?v%4-db7 z9(aj&4k=#bU(N$UIG!(;=rG=F?*EVn{#)MKhNf}oI79{kQpRYZzkVM0pLqvi((+L+ zLcN#=E-o%;>bmvw^b#f1OICbk!^RkbARr7wE-o%`&UJjNs7Ns@4SdWw`1tu@wKwAN^?Ih&uM zBE`wcN#_;TS_XpwbzOIPV7<-}qJ5||O+#ZX0+`R|$kAx@(UoIejnVn}Io4XNwFE&s zid9vS=Q-9|(llkYTJz7@QTOTr=qCwDuSZo^-5VkbBYM3AtwVpBrlu@QR+pD7mrG`| z8S2@yXIN_)4u>y2MqkwMe!ou?MdW$T-rgQho;<-?%WO7dGHI`BI-Rn+yW9Qux;(I0 zEKo}E`RAXrUa#8?{Pg3G**-o)NYDAsE?z)cm8d`=m7t#_6q~FE(A0+SD8bIjDQBZ8 z(Ll3(e8#VS_giL?Bn;xn1dGK2Yb`(j@lQA#O;P!$pHfOeQ`b2A*G=vV zFy6EK!S|?5L;B#41VKO$2)u6_DGLI;`vM!s_;=s^N_n98^w0cj07a4J2=Y|LE&u=k M07*qoM6N<$g5!<*R{#J2 diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/steel/egregious.png b/src/main/resources/assets/chisel/textures/blocks/metals/steel/egregious.png index c865cd26296e6d35c73998b0314608baa2d537a0..22650166589fef82e90764b2e0049563c8818e06 100644 GIT binary patch delta 720 zcmV;>0x$jk8iO0KzzTn^NklQa3vQA_h}fQcM_t`GaHbEtXVGO;LXguv!C4jbZ5pp%R`2Pg0qiL0hk_4xVt>UInQWs1aNbL zAQ&+mE#};N_bz{0X{AF_dOv-tSPY8kd@-)@6QkbD?*GB?>%+hVy$5@pE52>hJym71ZxZ;igIrV zfK>_*3`&16#t=fp_cew0OvWW`+tNADXgFlGUSqVuT0;nd7!&%otpX6p_`YX8n=vQ~ z{(Am5n{9=2p3XTYWl4yE&34CdI3T6;9~TB-S5;hIt+`tNLrRIdX%MYRG17J&Wmz&B z45*ui<>7)Ct1IA~lmbQ@P4JFyzB*%M3z8_j^N2_mj1nfp5w&-`9UlW<=OU0000@LYAO^OsHAu1FHg3A;!+}R59 z=mH!56ZwD1A8-?-h+U;I1f)}>fTAE1;&LCeGj}EhZQc6d9Nc@qqket+HYu%0DWSDS zDNRa|loH>*euL7QzkmM?rS=*CZ46nK6Jx{z96W!)$ef)?;!D4>E`*-iSyu9S>?2IhSSg+R@W0=im+}_?YolXI$>l%RX ze|b$Uf;Pq?B5XDr&d<-89!y!U*DMzcj*pKiih}cJ&j6TCr<|Oe;GAPL8UpNBP)cF7 zWw~5(dU}f07HfYj!_g39G}dO!o;+c@-4dfvRTVyjy+I-oVE*`nKo#`kI@Y8;ms^9v)H*1_TkBx~8sMy!W(ii-^#+ z9Z7-x=BJ<8)eW|=%x5!-qM+}4R;v{$CF;7S>pDa{F-Ct}a7-o>P>K0>FR&tlF`C6< zfl`X`cuWX^uIuRgo|FHD7XcudnYIOiA+hmTNY*#*8ljAk?((mBVM@jgTF{D&VY@9+7P*uU}izkl(*C(1v3 xK|7_yS1(`TgXjLkUnr#>s~%%yqZ9!D4*+_xfX~Xw7r_7k002ovPDHLkV1k&MRPg`+ diff --git a/src/main/resources/assets/chisel/textures/blocks/metals/steel/thermal.png b/src/main/resources/assets/chisel/textures/blocks/metals/steel/thermal.png index a7e1bb7b7468ad6f7a186cb5488d4a356a8df912..296ad1ffab5545603d486d7b1f7a151b97886d6d 100644 GIT binary patch delta 659 zcmV;E0&M-38pay1zzTnHNkl2zdgNB(;Jhzr5fRS{KooJm_m zMaU^3Qt<1FF#~@L22nw^Qfpw-MGCz^43Wld%DdB% z54qr;K7Ho>y9eTyP*v<;DOK6>M%PXe!5Blzf^m)%Hvp0-XvO{c^qHM?_-!NSg2SRz zQWmcM`rm)OkMj(GF^2s(l1qWS;r@Pp;oEP%;-9w*##yuo&RLpvj4>Rh>1GC2@0pFk zhXe*_;66RSuzdd=mv!YZO;}?Hu^>&ku7TrxAmvOE<^FU;oC5>%VFFbK+}9m|afBFQ tp5aR)sxVEE0!+snmjYnHIRO400N$b5om&Y)QveG9002ovPDHLkV1l641_v%332QBf!-1SLTI(IZxcmEiMC2EK97hbm^Yb&~ zIMP}J*byM5L0rKIWr7L@{b?47iw#ilJMRW zV`LnUSZnFJju-;akRpVXs3J(M7~{GB_JFxuF8hxuC34PKYtdZ?N|8%JYNggnuQl2z z?CPjeS=SX~*Oh<2KR)<={|yl##>lp9G&*X_c<<@D4y`rGC)R6X`Lwv`FvehLz_wwX z-OZ~1Djts$hr@woSzv=A1?L_)O!!VFiB1VrnolZPHK5{;vQN|$I zVvM0lLn&It@pvTX41l$kQEQy@prAD{@9*zeYgv|saU4-f;k~D{f?FKZG?7xGl)^mE wNZ*6HUG#O`25iQdU+}AxQagV2|F3@r0KYNdQr((-6951J07*qoM6N<$f?LrmYybcN From e039282c93414c06e1e38c8ed61e0f8925ef2421 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Fri, 13 Mar 2015 15:11:34 +0000 Subject: [PATCH 57/85] Fix #262. Test yo commits, Drullkus! --- .../java/com/cricketcraft/chisel/Features.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 3b3d767c..3a0771a3 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -572,8 +572,8 @@ public enum Features { if (Loader.isModLoaded("TConstruct")) { - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 7, 0); - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 7, 0); + Carving.chisel.addVariation("diamond_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 7, 0); + Carving.chisel.addVariation("diamond_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 7, 0); } diamond_block.carverHelper.registerAll(diamond_block, "diamond_block"); @@ -597,7 +597,7 @@ public enum Features { diorite.carverHelper.registerAll(diorite, "diorite"); Carving.chisel.registerOre("diorite", "diorite"); } - + @Override void addRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(diorite, 2), "cq", "qc", 'c', "cobblestone", 'q', "gemQuartz")); @@ -1300,8 +1300,8 @@ public enum Features { if (Loader.isModLoaded("TConstruct")) { - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 6, 0); - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 6, 0); + Carving.chisel.addVariation("lapis_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 6, 0); + Carving.chisel.addVariation("lapis_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 6, 0); } lapis_block.carverHelper.registerAll(lapis_block, "lapis_block"); @@ -2125,8 +2125,8 @@ public enum Features { if (Loader.isModLoaded("TConstruct")) { - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 8, 0); - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 8, 0); + Carving.chisel.addVariation("redstone_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 8, 0); + Carving.chisel.addVariation("redstone_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 8, 0); } redstone_block.carverHelper.registerAll(redstone_block, "redstone_block"); From 41908489e9fb84fc4225d37a60c409d30f50a0c1 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Fri, 13 Mar 2015 15:13:41 +0000 Subject: [PATCH 58/85] Packed ice pillar recipe. Fixes #261. Muh bad. --- src/main/java/com/cricketcraft/chisel/Features.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 3a0771a3..67ccea53 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -1808,6 +1808,10 @@ public enum Features { packedice.carverHelper.registerAll(packedice, "packedice"); Carving.chisel.registerOre("packedice", "packedice"); } + @Override + void addRecipes() { + GameRegistry.addRecipe(new ItemStack(ChiselBlocks.packedice_pillar, 6, 0), "XX", "XX", "XX", 'X', new ItemStack(ChiselBlocks.packedice, 1, OreDictionary.WILDCARD_VALUE)); + } }, PACKEDICE_PILLAR { From cad131c549ca52516b8d480de4497588b81f2c01 Mon Sep 17 00:00:00 2001 From: emustee15 Date: Wed, 18 Mar 2015 21:04:00 -0400 Subject: [PATCH 59/85] Backwards Connected Texture Fix (Issue #190) The wrong directions are used for reversing textures. As a result, some textures for the laboratory blocks appeared incorrect. This will fix issue 190. A single digit change fixes both directions, as direction 4 did not need to be reversed, but was, and direction 5 needed to be reversed, but wasn't. --- .../java/com/cricketcraft/chisel/carving/CarvableHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index f853b4b4..946abb5b 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -254,7 +254,7 @@ public class CarvableHelper { boolean p; boolean n; - boolean reverse = side == 2 || side == 4; + boolean reverse = side == 2 || side == 5; if (side < 4) { p = CTM.isConnected(world, x - 1, y, z, side, block, metadata); From baa573272fd8dc38a43d5b55e1a81cd9fafb84a2 Mon Sep 17 00:00:00 2001 From: Cricket Date: Thu, 19 Mar 2015 16:16:21 -0400 Subject: [PATCH 60/85] Dont touch tterrag :P --- .../chisel/client/player/PlayerSpecials.java | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java index 9176de8f..7e77dc31 100644 --- a/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java +++ b/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java @@ -8,9 +8,12 @@ import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; +import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; @@ -99,6 +102,7 @@ public class PlayerSpecials { RenderTranslucent translucent = new RenderTranslucent(); renderMap.putAll(UUID.fromString("a7529984-8cb2-4fb9-b799-97980f770101"), Lists.newArrayList(backChisel, translucent)); // Cricket + renderMap.putAll(UUID.fromString("a1d2532b-ee11-4ca3-b4c5-76e168d4c98e"), Lists.newArrayList(backChisel, translucent)); // TheCricket26 renderMap.putAll(UUID.fromString("5399b615-3440-4c66-939d-ab1375952ac3"), Lists.newArrayList(backChisel, translucent)); // Drullkus renderMap.put(UUID.fromString("671516b1-4fb3-4c03-aa7c-9c88cfab3ae8"), new RenderHolstered(new ItemStack(ChiselItems.diamondChisel))); // tterrag @@ -110,19 +114,20 @@ public class PlayerSpecials { } @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onPlayerRenderPre(RenderPlayerEvent.Pre event) { - Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); - for (IDevRenderer r : renders) { - r.renderPlayer(event.entityPlayer, false); - } + public void onPlayerRenderPre(RenderLivingEvent.Pre event) { + if(nameIsGood(event.entity)){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } } @SubscribeEvent - public void onPlayerRenderPost(RenderPlayerEvent.Post event) { - Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); - for (IDevRenderer r : renders) { - r.renderPlayer(event.entityPlayer, true); - } + public void onPlayerRenderPost(RenderLivingEvent.Post event) { + if(nameIsGood(event.entity)){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_BLEND); + } } @SubscribeEvent @@ -137,7 +142,13 @@ public class PlayerSpecials { public void onPlayerRenderSpecialPost(RenderPlayerEvent.Specials.Post event) { Collection renders = renderMap.get(event.entityPlayer.getUniqueID()); for (IDevRenderer r : renders) { - r.renderExtras(event.entityPlayer, false); + r.renderExtras(event.entityPlayer, true); } } + + private boolean nameIsGood(Entity entity){ + if(EnumChatFormatting.getTextWithoutFormattingCodes(entity.getCommandSenderName()).equals("Cricket") || EnumChatFormatting.getTextWithoutFormattingCodes(entity.getCommandSenderName()).equals("TheCricket26")) + return true; + return false; + } } From a65331cbab22fef498c726ecc120675a817a74cf Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Thu, 19 Mar 2015 20:37:20 -0400 Subject: [PATCH 61/85] Fix Tcon/Botania compat crashing on load --- .../com/cricketcraft/chisel/Features.java | 72 ------------------- .../chisel/compat/Compatibility.java | 36 +++++++++- 2 files changed, 33 insertions(+), 75 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 67ccea53..1567f0b9 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -569,13 +569,6 @@ public enum Features { diamond_block.carverHelper.addVariation("tile.diamond.10.desc", 10, "diamond/terrain-diamond-fourornate"); diamond_block.carverHelper.addVariation("tile.diamond.11.desc", 11, "diamond/terrain-diamond-zelda"); diamond_block.carverHelper.addVariation("tile.diamond.12.desc", 12, "diamond/terrain-diamond-ornatelayer"); - - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("diamond_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 7, 0); - Carving.chisel.addVariation("diamond_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 7, 0); - } - diamond_block.carverHelper.registerAll(diamond_block, "diamond_block"); Carving.chisel.registerOre("diamond_block", "diamond"); } @@ -662,19 +655,6 @@ public enum Features { void addBlocks() { //BlockCarvable end_stone = (BlockCarvable) new BlockCarvable(Material.rock).setHardness(2.0F).setResistance(10.0F).setCreativeTab(ChiselTabs.tabStoneChiselBlocks); Carving.chisel.addVariation("end_stone", Blocks.end_stone , 0, 0); - - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 12, 0); - Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 12, 0); - } - - if (Loader.isModLoaded("Botania")) - { - Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("Botania", ""), 12, 0); - Carving.chisel.addVariation("end_stone", GameRegistry.findBlock("Botania", "endStoneBrick"), 12, 0); - } - //end_stone.carverHelper.registerAll(emerald_block, "endStone"); Carving.chisel.registerOre("end_stone", "end_stone"); } @@ -947,12 +927,6 @@ public enum Features { gold_block.carverHelper.addVariation("tile.gold.13.desc", 13, "gold/terrain-gold-spaceblack"); gold_block.carverHelper.addVariation("tile.gold.14.desc", 14, "gold/terrain-gold-simple"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("gold_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 5, 0); - Carving.chisel.addVariation("gold_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 5, 0); - } - BlockCarvable gold2 = (BlockCarvable) new BlockBeaconBase(Material.iron).setStepSound(Block.soundTypeMetal).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setHardness(5F) .setResistance(10F); gold2.carverHelper.addVariation("tile.metalOre.0.desc", 0, "metals/gold/caution"); @@ -1211,12 +1185,6 @@ public enum Features { iron_block.carverHelper.addVariation("tile.iron.14.desc", 14, "iron/terrain-iron-vents"); iron_block.carverHelper.addVariation("tile.iron.15.desc", 15, "iron/terrain-iron-simple"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("iron_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 4, 0); - Carving.chisel.addVariation("iron_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 4, 0); - } - BlockCarvable iron2 = (BlockCarvable) new BlockBeaconBase(Material.iron).setStepSound(Block.soundTypeMetal).setCreativeTab(ChiselTabs.tabModdedChiselBlocks).setHardness(5F) .setResistance(10F); iron2.carverHelper.addVariation("tile.metalOre.0.desc", 0, "metals/iron/caution"); @@ -1298,12 +1266,6 @@ public enum Features { lapis_block.carverHelper.addVariation("tile.lapis.7.desc", 7, "lapis/a1-blocklapis-smooth"); lapis_block.carverHelper.addVariation("tile.lapis.8.desc", 8, "lapis/a1-blocklapis-ornatelayer"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("lapis_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 6, 0); - Carving.chisel.addVariation("lapis_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 6, 0); - } - lapis_block.carverHelper.registerAll(lapis_block, "lapis_block"); Carving.chisel.registerOre("lapis_block", "lapis"); } @@ -1736,12 +1698,6 @@ public enum Features { netherrack.carverHelper.addVariation("tile.hellrock.13.desc", 13, "netherrack/a1-netherrack-red"); netherrack.carverHelper.addVariation("tile.hellrock.14.desc", 14, "netherrack/a1-netherrack-wells"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 2, 0); - Carving.chisel.addVariation("netherrack", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 2, 0); - } - netherrack.carverHelper.registerAll(netherrack, "netherrack"); Carving.chisel.registerOre("netherrack", "netherrack"); } @@ -1770,14 +1726,6 @@ public enum Features { obsidian.carverHelper.addVariation("tile.obsidian.14.desc", 14, "obsidian/greek"); obsidian.carverHelper.addVariation("tile.obsidian.15.desc", 15, "obsidian/crate"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 0, 0); - // This block is 1/2 of an obsidian block Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 13, 0); - Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 0, 0); - // This block is 1/2 of an obsidian block Carving.chisel.addVariation("obsidian", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 13, 0); - } - obsidian.carverHelper.registerAll(obsidian, "obsidian"); Carving.chisel.registerOre("obsidian", "obsidian"); } @@ -2127,12 +2075,6 @@ public enum Features { redstone_block.carverHelper.addVariation("tile.redstone_block.14.desc", 14, "redstone/a1-blockredstone-skullred"); redstone_block.carverHelper.addVariation("tile.redstone_block.15.desc", 15, "redstone/a1-blockredstone-redstonezelda"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("redstone_block", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 8, 0); - Carving.chisel.addVariation("redstone_block", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 8, 0); - } - redstone_block.carverHelper.registerAll(redstone_block, "redstone_block"); Carving.chisel.registerOre("redstone_block", "redstone"); } @@ -2180,12 +2122,6 @@ public enum Features { sandstone.carverHelper.addVariation("tile.sandstone.14.desc", 14, "sandstone/mosaic"); sandstone.carverHelper.addVariation("tile.sandstone.15.desc", 15, "sandstone/horizontal-tiles"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("sandstone", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 1, 0); - Carving.chisel.addVariation("sandstone", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 1, 0); - } - sandstone.carverHelper.registerAll(sandstone, "sandstone"); Carving.chisel.registerOre("sandstone", "sandstone"); } @@ -2366,14 +2302,6 @@ public enum Features { stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.14.desc", 14, "stonebrick/ornatepanel"); stonebricksmooth.carverHelper.addVariation("tile.stonebricksmooth.15.desc", 15, "stonebrick/poison"); - if (Loader.isModLoaded("TConstruct")) - { - Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrick"), 3, 0); - Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 3, 0); - Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 14, 0); - Carving.chisel.addVariation("stonebricksmooth", GameRegistry.findBlock("TConstruct", "decoration.multibrickfancy"), 15, 0); - } - stonebricksmooth.carverHelper.registerAll(stonebricksmooth, "stonebricksmooth"); Carving.chisel.registerOre("stonebricksmooth", "stonebricksmooth"); diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index e83dc8ce..77a4efa1 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -1,5 +1,7 @@ package com.cricketcraft.chisel.compat; +import java.util.Map; + import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -9,6 +11,7 @@ import thaumcraft.api.aspects.AspectList; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.init.ChiselBlocks; +import com.google.common.collect.Maps; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -18,7 +21,23 @@ public class Compatibility { public static String[] rockColorNames = { "gray", "lightgray", "brown", "tan", "reddish", "bluish", "greenish" }; - public static void init(FMLPostInitializationEvent event) { + public static Map tconMap = Maps.newHashMap(); + + static + { + tconMap.put(0, "obsidian"); + tconMap.put(1, "sandstone"); + tconMap.put(2, "netherrack"); + tconMap.put(3, "stonebricksmooth"); + tconMap.put(4, "iron_block"); + tconMap.put(5, "gold_block"); + tconMap.put(6, "lapis_block"); + tconMap.put(7, "diamond_block"); + tconMap.put(8, "redstone_block"); + tconMap.put(12, "end_stone"); + } + + public static void init(FMLPostInitializationEvent event) { /* Proj Red */ addSupport("ProjRed|Exploration", "projectred.exploration.stone", "marble", 0, 99); @@ -55,8 +74,19 @@ public class Compatibility { /* Thaumcraft TODO There is probably a cleaner way of doing this */ if (Loader.isModLoaded("Thaumcraft")) { loadThaumcraftAspects(); - } - } + } + + for (Integer i : tconMap.keySet()) + { + addSupport("TConstruct", "decoration.multibrick", tconMap.get(i), i, 99); + addSupport("TConstruct", "decoration.multibrickfancy", tconMap.get(i), i, 99); + } + + addSupport("TConstruct", "decoration.multibrickfancy", "stonebricksmooth", 14, 99); + addSupport("TConstruct", "decoration.multibrickfancy", "stonebricksmooth", 15, 99); + + addSupport("Botania", "endStoneBrick", "end_stone", 12, 0); + } public static void addSupport(String modname, String blockname, String name, int metadata, int order) { if (Loader.isModLoaded(modname) && GameRegistry.findBlock(modname, blockname) != null) { From 28f6c22a7c83e8f208b731f42dee51ba0aeb375a Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Tue, 24 Mar 2015 21:59:52 -0400 Subject: [PATCH 62/85] updated version number --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c263bfde..dc23d378 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -mod_version=2.3.7 +mod_version=2.3.8 minecraft_version=1.7.10 forge_version=10.13.2.1277 From a21a8b18e09c79d33cf1e1e1ab8b8d53b36e1784 Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Tue, 24 Mar 2015 22:58:36 -0400 Subject: [PATCH 63/85] changelog for 1.3.8 --- changelog | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/changelog b/changelog index 832094d4..cbd20f24 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,34 @@ +2.3.8: +Changes +- Added a recipe for packed ice pillars +- Added iron/gold block variations to the Oredict +- Recolored antiblocks a little +- Added some Tinker's Construct variations +- Added andesite, diorite, and granite, and a couple variations +- Added large hex plating +- Chiseled pumpkins can now make snow-golems +- Extended CTM to the API... however this still need some work +- Added "Shingle" blocks +- Added "Imperial" and "Rebel" blocks +- Custom particles will be disabled if the vanilla "Particles:" option is set to "Off" +- Added a search bar to Chisel's creative tab menus +- Added hex armor plating +- Unified some of the technical blocks as one variation +- Created our biggest fan :D +Fixes +- Fixed a bug when Tinker's Construct and Botania would crash on load +- Fixed one issue with CTM not rendering the texture properly +- Corrected masonry texture references +- Chiseled bookshelves drop the correct book now +- Fixed compatibility with Project Red's Marble Bricks +- Fixed stair placement, and tooltip bugs +- Chiseled half-slabs noe behave like vanilla's when it comes to redstone +- Pumpkins and Jack o Lanterns now play the correct sounds +- Fixed an old crash with Railcraft +- Fixed missing localizations for road lines +- Fixed a bug when rendering several types of Pillars +- Fixed a bug that accidentally let the auto-chisel chisel things it shouldn't + 2.3.7: Changes - Updated russian translation From f78e106bd3a596cec75fe1ca6b91accdd946501e Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Tue, 24 Mar 2015 23:08:53 -0400 Subject: [PATCH 64/85] re-organized changelog to be a bit more clear --- changelog | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/changelog b/changelog index cbd20f24..f612b1a2 100644 --- a/changelog +++ b/changelog @@ -1,20 +1,19 @@ 2.3.8: -Changes +New - Added a recipe for packed ice pillars -- Added iron/gold block variations to the Oredict -- Recolored antiblocks a little - Added some Tinker's Construct variations - Added andesite, diorite, and granite, and a couple variations -- Added large hex plating -- Chiseled pumpkins can now make snow-golems -- Extended CTM to the API... however this still need some work +- Added hex armor plating and large hex plating - Added "Shingle" blocks - Added "Imperial" and "Rebel" blocks +- Created our biggest fan :D +Changes +- Added iron/gold block variations to the Oredict +- Recolored antiblocks a little +- Chiseled pumpkins can now make snow-golems - Custom particles will be disabled if the vanilla "Particles:" option is set to "Off" - Added a search bar to Chisel's creative tab menus -- Added hex armor plating - Unified some of the technical blocks as one variation -- Created our biggest fan :D Fixes - Fixed a bug when Tinker's Construct and Botania would crash on load - Fixed one issue with CTM not rendering the texture properly @@ -28,6 +27,8 @@ Fixes - Fixed missing localizations for road lines - Fixed a bug when rendering several types of Pillars - Fixed a bug that accidentally let the auto-chisel chisel things it shouldn't +API +- Extended CTM to the API... however this still need some work 2.3.7: Changes From af894aa805fd7e87e962e34135869b15f8d64ede Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Fri, 27 Mar 2015 15:49:28 -0400 Subject: [PATCH 65/85] Fix broken IMC handling --- .../java/com/cricketcraft/chisel/compat/IMCHandler.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/compat/IMCHandler.java b/src/main/java/com/cricketcraft/chisel/compat/IMCHandler.java index 33225588..80d702f4 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/IMCHandler.java +++ b/src/main/java/com/cricketcraft/chisel/compat/IMCHandler.java @@ -40,15 +40,16 @@ public class IMCHandler { } else { reg.removeVariation(block, meta, data[0]); } + break; case REGISTER_GROUP_ORE: reg.registerOre(data[0], data[1]); + break; default: throw new IllegalArgumentException("Invalid IMC constant! How...what...?"); } } catch (Exception e) { - Chisel.logger.error("Could not handle data {} for IMC type {}. This was sent from mod {}.\n" - + "!! This is a bug in that mod !!\nSwallowing error and continuing...", - value, type.name(), message.getSender()); + Chisel.logger.error("Could not handle data {} for IMC type {}. This was sent from mod {}.\n" + "!! This is a bug in that mod !!\nSwallowing error and continuing...", value, type.name(), + message.getSender()); e.printStackTrace(); } } From 6322bc75e8e0be57a79fbbeebe2316517e58b233 Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Sat, 28 Mar 2015 00:42:24 -0400 Subject: [PATCH 66/85] Pushing out the fix for IMC --- changelog | 4 ++++ gradle.properties | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/changelog b/changelog index f612b1a2..c56eec7c 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +2.3.9: +API +- Fixed issue where Chisel would crash if a user sent any message to the IMC + 2.3.8: New - Added a recipe for packed ice pillars diff --git a/gradle.properties b/gradle.properties index dc23d378..56711160 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -mod_version=2.3.8 +mod_version=2.3.9 minecraft_version=1.7.10 forge_version=10.13.2.1277 From 6ac0c22d16388086fcf084c614668776d6f27907 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 28 Mar 2015 14:27:54 -0400 Subject: [PATCH 67/85] Vastly improve block loading speed by removing getResource calls --- .../chisel/carving/CarvableHelper.java | 95 +++++++++++-------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index 946abb5b..a91e9d1e 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -1,5 +1,23 @@ package com.cricketcraft.chisel.carving; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockPane; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.oredict.OreDictionary; + import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.carving.CarvableVariation.CarvableVariationCTM; import com.cricketcraft.chisel.client.render.CTM; @@ -8,18 +26,8 @@ import com.cricketcraft.chisel.compat.FMPIntegration; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.utils.GeneralClient; -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.block.BlockPane; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.oredict.OreDictionary; -import java.util.*; +import cpw.mods.fml.common.registry.GameRegistry; public class CarvableHelper { @@ -44,38 +52,38 @@ public class CarvableHelper { public String blockName; public void addVariation(String description, int metadata, Block bb) { - addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); } public void addVariation(String description, int metadata, String texture) { - addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID); } - public void addVariation(String description, int metadata, Block bb, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, 0, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, String modid) { + addVariation(description, metadata, null, bb, 0, modid); } - public void addVariation(String description, int metadata, Block bb, int blockMeta, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, int blockMeta, String modid) { + addVariation(description, metadata, null, bb, blockMeta, modid); } - public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material, String modid) { + addVariation(description, metadata, null, bb, blockMeta, modid); } - public void addVariation(String description, int metadata, String texture, String modid, Class mainModClass) { - addVariation(description, metadata, texture, null, 0, modid, mainModClass); + public void addVariation(String description, int metadata, String texture, String modid) { + addVariation(description, metadata, texture, null, 0, modid); } - public void addVariation(String description, int metadata, String texture, Block block, int blockMeta, String modid, Class mainModClass) { + public void addVariation(String description, int metadata, String texture, Block block, int blockMeta, String modid) { if (variations.size() >= 16) return; @@ -92,21 +100,21 @@ public class CarvableHelper { if (texture != null) { variation.texture = texture; - String path = "/assets/" + modid + "/textures/blocks/" + variation.texture; + String path = variation.texture; - boolean any = mainModClass.getResource(path + ".png") != null; - boolean ctm3 = mainModClass.getResource(path + "-ctm1.png") != null && mainModClass.getResource(path + "-ctm2.png") != null && mainModClass.getResource(path + "-ctm3.png") != null; - boolean ctmv = mainModClass.getResource(path + "-ctmv.png") != null; - boolean ctmh = mainModClass.getResource(path + "-ctmh.png") != null; - boolean side = mainModClass.getResource(path + "-side.png") != null; - boolean top = mainModClass.getResource(path + "-top.png") != null; - boolean bot = mainModClass.getResource(path + "-bottom.png") != null; - boolean v9 = mainModClass.getResource(path + "-v9.png") != null; - boolean v4 = mainModClass.getResource(path + "-v4.png") != null; - boolean ctmx = mainModClass.getResource(path + "-ctm.png") != null; - boolean r16 = mainModClass.getResource(path + "-r16.png") != null; - boolean r9 = mainModClass.getResource(path + "-r9.png") != null; - boolean r4 = mainModClass.getResource(path + "-r4.png") != null; + boolean any = exists(modid, path, ""); + boolean ctm3 = exists(modid, path, "-ctm1") && exists(modid, path, "-ctm2") && exists(modid, path, "-ctm3"); + boolean ctmv = exists(modid, path, "-ctmv"); + boolean ctmh = exists(modid, path, "-ctmh"); + boolean side = exists(modid, path, "-side"); + boolean top = exists(modid, path, "-top"); + boolean bot = exists(modid, path, "-bottom"); + boolean v9 = exists(modid, path, "-v9"); + boolean v4 = exists(modid, path, "-v4"); + boolean ctmx = exists(modid, path, "-ctm"); + boolean r16 = exists(modid, path, "-r16"); + boolean r9 = exists(modid, path, "-r9"); + boolean r4 = exists(modid, path, "-r4"); if (ctm3) { variation.kind = 3; @@ -145,6 +153,17 @@ public class CarvableHelper { map[metadata] = variation; } + // This is ugly, but faster than class.getResource + private boolean exists(String modid, String path, String postfix) { + ResourceLocation rl = new ResourceLocation(modid, "textures/blocks/" + path + postfix + ".png"); + try { + Minecraft.getMinecraft().getResourceManager().getAllResources(rl); + return true; + } catch (Throwable t) { + return false; + } + } + public CarvableVariation getVariation(int metadata) { if (metadata < 0 || metadata > 15) metadata = 0; From 7aca34c229fb7ba8433da529869d2120249dd913 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Mon, 30 Mar 2015 22:55:12 +0100 Subject: [PATCH 68/85] Fix #283 --- gradle.properties | 2 +- .../java/com/cricketcraft/chisel/compat/Compatibility.java | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 56711160..2dc8b113 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=2.3.9 minecraft_version=1.7.10 -forge_version=10.13.2.1277 +forge_version=10.13.2.1291 waila_version=1.5.8a ccl_version=1.1.1.110 diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index 77a4efa1..320502c5 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -29,11 +29,6 @@ public class Compatibility { tconMap.put(1, "sandstone"); tconMap.put(2, "netherrack"); tconMap.put(3, "stonebricksmooth"); - tconMap.put(4, "iron_block"); - tconMap.put(5, "gold_block"); - tconMap.put(6, "lapis_block"); - tconMap.put(7, "diamond_block"); - tconMap.put(8, "redstone_block"); tconMap.put(12, "end_stone"); } From e61105c8dc8fb200b3e5b5b18c87f7371eeaaa2c Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Tue, 31 Mar 2015 17:16:07 -0400 Subject: [PATCH 69/85] Add code to prevent GUI staying open if chisel item is not in hand --- .../com/cricketcraft/chisel/client/gui/GuiChisel.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/client/gui/GuiChisel.java b/src/main/java/com/cricketcraft/chisel/client/gui/GuiChisel.java index 58c8074d..91fa00f3 100644 --- a/src/main/java/com/cricketcraft/chisel/client/gui/GuiChisel.java +++ b/src/main/java/com/cricketcraft/chisel/client/gui/GuiChisel.java @@ -6,6 +6,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import org.lwjgl.opengl.GL11; @@ -56,6 +57,15 @@ public class GuiChisel extends GuiContainer { } } + @Override + public void updateScreen() { + super.updateScreen(); + ItemStack held = player.getCurrentEquippedItem(); + if (held == null || !(held.getItem() instanceof IChiselItem)) { + mc.displayGuiScreen(null); + } + } + private void setButtonText() { ((GuiButton) buttonList.get(0)).displayString = I18n.format(container.inventory.getInventoryName() + ".mode." + currentMode.name().toLowerCase()); } From 87a83e4ae279c4c8810b8e198ecb5d43a84ec2ae Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Wed, 1 Apr 2015 18:34:03 -0400 Subject: [PATCH 70/85] #286 Fix dedicated server crash --- .../java/com/cricketcraft/chisel/carving/CarvableHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index a91e9d1e..12180c68 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -27,6 +27,7 @@ import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.utils.GeneralClient; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.registry.GameRegistry; public class CarvableHelper { @@ -97,7 +98,7 @@ public class CarvableHelper { variation.metadata = metadata; variation.blockName = blockName; - if (texture != null) { + if (texture != null && FMLCommonHandler.instance().getSide().isClient()) { variation.texture = texture; String path = variation.texture; From aa03baa462d2a28acbe83c6de6171995baba1c6a Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Thu, 2 Apr 2015 14:52:26 -0400 Subject: [PATCH 71/85] Fix mossy config --- .../com/cricketcraft/chisel/Features.java | 2 +- .../chisel/compat/Compatibility.java | 10 +--- .../chisel/config/Configurations.java | 47 ++++++++++--------- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 1567f0b9..62615095 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2280,7 +2280,7 @@ public enum Features { for (int i = 0; i < 4; i++) { if ((i == 1) && (Configurations.allowMossy)) { Carving.chisel.addVariation("stonebricksmooth", Blocks.stonebrick, i, i); - } else { + } else if (i != 1) { Carving.chisel.addVariation("stonebricksmooth", Blocks.stonebrick, i, i); } } diff --git a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java index 320502c5..ec426cd6 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java +++ b/src/main/java/com/cricketcraft/chisel/compat/Compatibility.java @@ -3,14 +3,8 @@ package com.cricketcraft.chisel.compat; import java.util.Map; import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.ThaumcraftApi; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; import com.cricketcraft.chisel.carving.Carving; -import com.cricketcraft.chisel.init.ChiselBlocks; import com.google.common.collect.Maps; import cpw.mods.fml.common.Loader; @@ -94,7 +88,7 @@ public class Compatibility { } private static void loadThaumcraftAspects() { - ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestone, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); - ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestoneWall, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); +// ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestone, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); +// ThaumcraftApi.registerObjectTag(new ItemStack(ChiselBlocks.cobblestoneWall, 1, OreDictionary.WILDCARD_VALUE), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1)); } } diff --git a/src/main/java/com/cricketcraft/chisel/config/Configurations.java b/src/main/java/com/cricketcraft/chisel/config/Configurations.java index 6afc0d41..6c21e9c0 100644 --- a/src/main/java/com/cricketcraft/chisel/config/Configurations.java +++ b/src/main/java/com/cricketcraft/chisel/config/Configurations.java @@ -51,7 +51,7 @@ public class Configurations { public static String getRoadLineTool; public static int roadLineToolLevel; - public static int[] configColors = new int[ItemDye.field_150923_a.length]; + public static int[] configColors = new int[ItemDye.field_150923_a.length]; public static boolean refreshConfig() { @@ -63,13 +63,13 @@ public class Configurations { "Traversing concrete roads, players will acceleration to this velocity. For reference, normal running speed is about 0.28. Set to 0 to disable acceleration.").getDouble(0.45); ghostCloud = config.get(category, "doesCloudRenderLikeGhost", true).getBoolean(true); factoryBlockAmount = config.get(category, "amountYouGetFromFactoryBlockCrafting", 32).getInt(32); - allowMossy = config.get(category, "allowCobbleToMossyInChisel", true).getBoolean(true); + allowMossy = config.get(category, "allowBrickToMossyInChisel", true, "If true, you can chisel stone brick to mossy stone brick.").getBoolean(true); allowSmoothStone = config.get(category, "allowSmoothStoneToStoneBricksAndBack", true).getBoolean(true); chiselRecipe = config.get(category, "chiselAlternateRecipe", false, "Use alternative crafting recipe for the chisel").getBoolean(false); enableFMP = config.get(category, "enableFMP", true, "Do you want to enable FMP").getBoolean(true); chiselStoneToCobbleBricks = config.get(category, "chiselStoneToCobbleBricks", true, "Chisel stone to cobblestone and bricks by left clicking.").getBoolean(false); - chiselBackToVanillaLeaves = config.get(category, "chiselBackToVanillaLeaves", false, "If this is true, you can chisel from the chisel leaves back to vanilla ones. If it is false, you cannot.") - .getBoolean(false); + chiselBackToVanillaLeaves = config + .get(category, "chiselBackToVanillaLeaves", false, "If this is true, you can chisel from the chisel leaves back to vanilla ones. If it is false, you cannot.").getBoolean(false); /* worldgen */ category = "worldgen"; @@ -97,12 +97,12 @@ public class Configurations { ironChiselCanLeftClick = config.get(category, "ironChiselCanLeftClick", true, "If this is true, the iron chisel can left click chisel blocks. If false, it cannot.").getBoolean(); ironChiselHasModes = config.get(category, "ironChiselHasModes", false, "If this is true, the iron chisel can change its chisel mode just as the diamond chisel can.").getBoolean(); allowChiselCrossColors = config.get(category, "allowChiselCrossColors", true, "Should someone be able to chisel something into a different color.").getBoolean(); - ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.") - .getInt(); - diamondChiselAttackDamage = config - .get(category, "diamondChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt(); - obsidianChiselAttackDamage = config - .get(category, "obsidianChiselAttackDamage", 4, "The extra attack damage points (in half hearts) that the obsidian chisel inflicts when it is used to attack an entity.").getInt(); + ironChiselAttackDamage = config + .get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.").getInt(); + diamondChiselAttackDamage = config.get(category, "diamondChiselAttackDamage", 2, + "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt(); + obsidianChiselAttackDamage = config.get(category, "obsidianChiselAttackDamage", 4, + "The extra attack damage points (in half hearts) that the obsidian chisel inflicts when it is used to attack an entity.").getInt(); /* block */ category = "block"; @@ -112,20 +112,21 @@ public class Configurations { "The lowest harvest level of the tool able to break the road lines (requires useRoadLineTool to be true to take effect) (0 = Wood/Gold, 1 = Stone, 2 = Iron, 3 = Diamond) Default: 0") .getInt(); - /* hexColors */ - category = "hexColors"; + /* hexColors */ + category = "hexColors"; - for(int i = 0; i < ItemDye.field_150923_a.length; i++) { - // tterrag... don't kill me over this formatting. - String temp = config.get(category, "hex" + ItemDye.field_150923_a[i], "#" + Integer.toHexString(ItemDye.field_150922_c[i]), Character.toUpperCase(ItemDye.field_150923_a[i].charAt(0)) + ItemDye.field_150923_a[i].substring(1) + " color for hex block overlay #RRGGBB").getString(); - // Or this - try { - configColors[i] = Integer.decode(temp); - } catch (NumberFormatException e) { - Chisel.logger.warn("Configuration error, " + temp + " was not recognized as a color. Using default: #" + Integer.toHexString(ItemDye.field_150922_c[i])); - configColors[i] = ItemDye.field_150922_c[i]; - } - } + for (int i = 0; i < ItemDye.field_150923_a.length; i++) { + // tterrag... don't kill me over this formatting. + String temp = config.get(category, "hex" + ItemDye.field_150923_a[i], "#" + Integer.toHexString(ItemDye.field_150922_c[i]), + Character.toUpperCase(ItemDye.field_150923_a[i].charAt(0)) + ItemDye.field_150923_a[i].substring(1) + " color for hex block overlay #RRGGBB").getString(); + // Or this + try { + configColors[i] = Integer.decode(temp); + } catch (NumberFormatException e) { + Chisel.logger.warn("Configuration error, " + temp + " was not recognized as a color. Using default: #" + Integer.toHexString(ItemDye.field_150922_c[i])); + configColors[i] = ItemDye.field_150922_c[i]; + } + } if (config.hasChanged()) { config.save(); From 4deff8a7bed78423b73faf155c8ceff60a28644e Mon Sep 17 00:00:00 2001 From: warlordjones Date: Wed, 1 Apr 2015 12:06:02 +0100 Subject: [PATCH 72/85] 16-colour runic voidstone - closes #218 --- .../java/com/cricketcraft/chisel/Features.java | 10 ++++++++++ .../resources/assets/chisel/lang/en_US.lang | 16 ++++++++++++++++ .../blocks/voidstone/runes/runeBlack.png | Bin 0 -> 3481 bytes .../blocks/voidstone/runes/runeBlue.png | Bin 0 -> 3498 bytes .../blocks/voidstone/runes/runeBrown.png | Bin 0 -> 3493 bytes .../blocks/voidstone/runes/runeCyan.png | Bin 0 -> 3501 bytes .../blocks/voidstone/runes/runeGray.png | Bin 0 -> 3495 bytes .../blocks/voidstone/runes/runeGreen.png | Bin 0 -> 3501 bytes .../blocks/voidstone/runes/runeLightBlue.png | Bin 0 -> 3502 bytes .../blocks/voidstone/runes/runeLightGray.png | Bin 0 -> 3497 bytes .../blocks/voidstone/runes/runeLime.png | Bin 0 -> 3503 bytes .../blocks/voidstone/runes/runeMagenta.png | Bin 0 -> 3506 bytes .../blocks/voidstone/runes/runeOrange.png | Bin 0 -> 3500 bytes .../blocks/voidstone/runes/runePink.png | Bin 0 -> 3509 bytes .../blocks/voidstone/runes/runePurple.png | Bin 0 -> 3492 bytes .../textures/blocks/voidstone/runes/runeRed.png | Bin 0 -> 3498 bytes .../blocks/voidstone/runes/runeYellow.png | Bin 0 -> 3500 bytes 17 files changed, 26 insertions(+) create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlack.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlue.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBrown.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeCyan.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGray.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGreen.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightBlue.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightGray.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLime.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeMagenta.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeOrange.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runePink.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runePurple.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeRed.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeYellow.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 62615095..f0d7fb25 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -2639,6 +2639,16 @@ public enum Features { voidstone2.carverHelper.registerAll(voidstone2, "voidstone2"); Carving.chisel.registerOre("voidstone2", "voidstone2"); + + BlockCarvable voidstoneRunic = (BlockCarvable) new BlockCarvable(Material.rock).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(5.0F).setResistance(10.0F); + voidstoneRunic.carverHelper.setChiselBlockName("Voidstone Runic"); + + for (int i = 1; i < 16; i++) + voidstoneRunic.carverHelper.addVariation("tile.voidstoneRunic." + i + ".desc", i, "voidstone/runes/rune" + sGNames[i].replaceAll(" ", "")); + voidstoneRunic.carverHelper.registerAll(voidstoneRunic, "voidstoneRunic"); + voidstoneRunic.carverHelper.registerVariations("voidstone", voidstoneRunic); + + Carving.chisel.registerOre("voidstoneRunic", "voidstoneRunic"); } @Override diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 515c1687..4f2d66b3 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -130,6 +130,22 @@ tile.voidstone.4.desc=Runic Voidstone tile.voidstone.5.desc=Metal-Bordered Voidstone tile.voidstone.6.desc=Eye Voidstone tile.voidstone.7.desc=Beveled Voidstone +tile.chisel.voidstoneRunic.name=Runic Voidstone +tile.voidstoneRunic.0.desc=Voidstone - Orange Rune +tile.voidstoneRunic.1.desc=Voidstone - Magenta Rune +tile.voidstoneRunic.2.desc=Voidstone - Light Blue Rune +tile.voidstoneRunic.3.desc=Voidstone - Yellow Rune +tile.voidstoneRunic.4.desc=Voidstone - Lime Rune +tile.voidstoneRunic.5.desc=Voidstone - Pink Rune +tile.voidstoneRunic.6.desc=Voidstone - Gray Rune +tile.voidstoneRunic.7.desc=Voidstone - Light Gray Rune +tile.voidstoneRunic.8.desc=Voidstone - Cyan Rune +tile.voidstoneRunic.9.desc=Voidstone - Purple Rune +tile.voidstoneRunic.10.desc=Voidstone - Blue Rune +tile.voidstoneRunic.11.desc=Voidstone - Brown Rune +tile.voidstoneRunic.12.desc=Voidstone - Green Rune +tile.voidstoneRunic.13.desc=Voidstone - Red Rune +tile.voidstoneRunic.14.desc=Voidstone - Black Rune #Void Stone Pillars tile.chisel.voidstonePillar.name=Voidstone Pillar diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlack.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlack.png new file mode 100644 index 0000000000000000000000000000000000000000..92b243484856b176fdf908f2e40593ea535f67df GIT binary patch literal 3481 zcmV;K4QBF*P)EX>4Tx07%E3mUmQC*A|D*y?1({%`nm#dXp|Nfb=dP9RyJrW(F9_0K*JTY>22p zL=h1IMUbF?0i&TvtcYSED5zi$NDxqBFp8+CWJcCXe0h2A<>mLsz2Dkr?{oLrd!Mx~ z03=TzE-wX^0w9?u;0Jm*(^rK@(6Rjh26%u0rT{Qm>8ZX!?!iDLFE@L0LWj&=4?(nOT_siPRbOditRHZrp6?S8AgejFG^6va$=5K z|`EW#NwP&*~x4%_lS6VhL9s-#7D#h8C*`Lh;NHnGf9}t74chfY%+(L z4giWIwhK6{coCb3n8XhbbP@4#0C1$ZFF5847I3lz;zPNlq-OKEaq$AWE=!MYYHiJ+ zdvY?9I0Av8Ka-Wn(gPeepdb@piwLhwjRWWeSr7baCBSDM=|pK0Q5^$>Pur z|2)M1IPkCYSQ^NQ`z*pYmq4Rp8z$= z2uR(a0_5jDfT9oq5_wSE_22vEgAWDbn-``!u{igi1^xT3aEbVl&W-yV=Mor9X9@Wk zi)-R*3DAH5Bmou30~MeFbb%o-16IHmI084Y0{DSo5DwM?7KjJQfDbZ3F4znTKoQsl z_JT@K1L{E|XaOfc2RIEbfXm=IxC!on2Vew@gXdrdyaDqN1YsdEM1kZXRY(gmfXpBU zWDmJPK2RVO4n;$85DyYUxzHA<2r7jtp<1XB`W89`U4X7a1JFHa6qn9`(3jA6(BtSg7z~Dn(ZN_@JTc*z z1k5^2G3EfK6>}alfEmNgVzF3xtO3>z>xX4x1=s@Ye(W*qIqV>I9QzhW#Hr%UaPGJW z91oX=E5|kA&f*4f6S#T26kZE&gZIO;@!9wid_BGke*-^`pC?EYbO?5YU_t_6Gogae zLbybDNO(mg64i;;!~i0fxQSRnJWjkq93{RZ$&mC(E~H43khGI@gmj*CkMxR6CTo)& z$q{4$c_+D%e3AT^{8oY@VI<)t!Is!4Q6EtGo7CCWGzL)D>rQ4^>|)NiQ$)EQYB*=4e!vRSfKvS(yRXb4T4=0!`QmC#Pm zhG_4XC@*nZ!dbFoNz0PKC3A9$a*lEwxk9;CxjS<2<>~Tn@`>`hkG4N# zKjNU~z;vi{c;cwx$aZXSoN&@}N^m;n^upQ1neW`@Jm+HLvfkyqE8^^jVTFG14;RpP@{Py@g^4IZC^Zz~o6W||E74S6BG%z=?H;57x71R{; zCfGT+B=|vyZiq0XJ5(|>GPE&tF3dHoG;Cy*@v8N!u7@jxbHh6$uo0mV4H2`e-B#~i zJsxQhSr9q2MrTddnyYIS)+Vhz6D1kNj5-;Ojt+}%ivGa#W7aWeW4vOjV`f+`tbMHK zY)5t(dx~SnDdkMW+QpW}PR7~A?TMR;cZe^KpXR!7E4eQdJQHdX<`Vr9k0dT6g(bBn zMJ7e%MIVY;#n-+v{i@=tg`KfG`%5fK4(`J2;_VvR?Xdf3sdQ;h>DV6M zJ?&-mvcj_0d!zPVEnik%vyZS(xNoGwr=oMe=Kfv#KUBt7-l=k~YOPkP-cdbwfPG-_ zpyR=o8s(azn)ipehwj#T)V9}Y*Oec}9L_lWv_7=H_iM)2jSUJ7MGYU1@Q#ce4LsV@ zXw}%*q|{W>3^xm#r;bG)yZMdlH=QkpEw!z*)}rI!xbXP1Z==5*I^lhy`y}IJ%XeDe zRku;v3frOf?DmPgz@Xmo#D^7KH*><&kZ}k0<(`u)y&d8oAIZHU3e|F(q&bit1 zspqFJ#9bKcj_Q7Jan;4!Jpn!am%J}sx$J)VVy{#0xhr;8PG7aTdg>bETE}(E>+O9O zeQiHj{Lt2K+24M{>PF{H>ziEz%LmR5It*U8<$CM#ZLizc@2tEtFcdO$cQ|r*xkvZnNio#z9&IX9*nWZp8u5o(}(f= zr{t&Q6RH!9lV+2rr`)G*K3n~4{CVp0`RRh6rGKt|q5I;yUmSnwn^`q8{*wQ4;n(6< z@~@7(UiP|s)_?Z#o8&k1bA@l^-yVI(c-Q+r?ES=i<_GMDijR69yFPh;dbp6hu<#rA zg!B8%JG^WF000JJOGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQ zO+^Ra1OW;=9WbNA$N&HUCTUbybVF}#ZDnqB0000007G(RVRU6=Aa`kWXdp*PO;8|j zZXjVGO<`k|9=00Oy5L_t(I%Po>Wh#gfF#((GDJ2P))-|i;6t1qiXBqB*GXeVe8 zjDm=Tg=r*}*jR{_jiyrzn@AvKu-QPGMcC3(5YnVb69{e=^RjGq!|v>xH*fyjdymCz z_4^JSzQg(WWQ|Rgq#!jTG%n#yNg_Q-EI0_e0OT@eBVGU?O(NbqX6}@kKgRVIt}MNW zj1!h^L(^5PrWwn=;E`Pgg-LgwI$iL3`zkATjLlQ_>V5t#pWtHb8RreTP3cEDE7DQ8 zjA!Nr<7644(xi}SLG2>F)bv`>iITYtlSqyLqog2j44+NkCB{e)XzB1MU+;fNCy}`> zsOgC)RV;bg9$}1v^9JKvIw{$H?H{f`f1lhsl3;mow9SqBJANv^r7>SB9F?~G7x$Ugdpz8j z4$B{(8Jq)2;-D{pdL_kDh6M(LAwr@l2jL~BX3mw

c9k&<~XRPygWCw|^K699TRn zNk(c6AQ&)!C#n!c**gC>pKe}9-%+mZe#ujgkZs|Ui(hed>vLW)6Xsn**~~ydma=ty zW9=vZMut zj0ggmW@K1=Q)8{6_Yo^##0*99KG1j2_j4Bh1Qd!)IOs~2DF{SndW;AdYdP^V7TtWv zYSUcOkVSm#>B54b0f>N5n1VG|F!KvqZ3zT23Mw7`Z+y-Fr6E$$XrVJ-00000NkvXX Hu0mjf)}f7m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlue.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..84022b54fda7c063d9be6ad733693b84bc1244f0 GIT binary patch literal 3498 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 Y|9&}7Fb#HA`~Uy|07*qoM6N<$f;6z0(f|Me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBrown.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeBrown.png new file mode 100644 index 0000000000000000000000000000000000000000..0a21e37f78b6a6c93ec8371527f11e28920f7917 GIT binary patch literal 3493 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 b_?rI#Tw_(8q42CQ00000NkvXXu0mjf)x4vb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGray.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGray.png new file mode 100644 index 0000000000000000000000000000000000000000..abb2dcd29eca70dbeae6bf4565a2b5d6d5f2d717 GIT binary patch literal 3495 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 VP*z1nbtC`)002ovPDHLkV1h;ilzjjI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGreen.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeGreen.png new file mode 100644 index 0000000000000000000000000000000000000000..0b76c9d8a65210a671579e4b20f9e3fc462b78e7 GIT binary patch literal 3501 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 bYhUp{Fwas7s2=uZ00000NkvXXu0mjfPAQo) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightBlue.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7b3b431ae6a4493dd1acc95a8657dd4fd0d220 GIT binary patch literal 3502 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightGray.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeLightGray.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb75b6079ae8fc4515f22dd1ef693b9fc38f3a9 GIT binary patch literal 3497 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeMagenta.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeMagenta.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd2a4e4184bfd65d0a40a62649cad0c0bfc79a3 GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeOrange.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeOrange.png new file mode 100644 index 0000000000000000000000000000000000000000..22f55ba9e7b3f1f5508691942f54d669c40a30f6 GIT binary patch literal 3500 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 Y3FBT#zgC^upa1{>07*qoM6N<$f>;xo761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeYellow.png b/src/main/resources/assets/chisel/textures/blocks/voidstone/runes/runeYellow.png new file mode 100644 index 0000000000000000000000000000000000000000..f4691ee0de1148f5975141daab000e12476d3d11 GIT binary patch literal 3500 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 Date: Sun, 5 Apr 2015 16:42:21 +0100 Subject: [PATCH 73/85] Workaround to prevent crashes with invalid pillar meta. Fixes #277 --- .../com/cricketcraft/chisel/block/BlockCarvablePillar.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java index f2736c4a..4231ed0b 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePillar.java @@ -31,7 +31,12 @@ public class BlockCarvablePillar extends BlockCarvable { } public IIcon getCtmIcon(int index, int metadata) { - CarvableVariation var = carverHelper.variations.get(metadata); + //Workaround to prevent crash with invalid meta + CarvableVariation var = null; + if(metadata <= carverHelper.variations.size()) + var = carverHelper.variations.get(metadata); + else + var = carverHelper.variations.get(0); if (index >= 4) return var.iconTop; From b775ab77eacf9d6a45c1385cc31828de3628d997 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Sun, 5 Apr 2015 17:00:03 +0100 Subject: [PATCH 74/85] Prevent mobspawns on antiblocks as Cpt mentioned he wanted to do in #169 --- .../cricketcraft/chisel/block/BlockCarvableAntiBlock.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java index 885fa8f0..25ff99e9 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java @@ -1,6 +1,8 @@ package com.cricketcraft.chisel.block; import net.minecraft.block.material.Material; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; @@ -26,4 +28,8 @@ public class BlockCarvableAntiBlock extends BlockCarvableColor implements ICarva return false; } */ + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } } From fd33a66d18013ae7742b0599ce96e562070333d2 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 6 Apr 2015 01:16:14 -0400 Subject: [PATCH 75/85] Allow chisel torches to be FMP microparts --- .../java/com/cricketcraft/chisel/Chisel.java | 6 ++ .../com/cricketcraft/chisel/Features.java | 22 +++--- .../chisel/block/BlockCarvableTorch.java | 11 ++- .../chisel/carving/CarvableHelper.java | 4 +- .../chisel/compat/fmp/FMPCompat.java | 44 ++++++++++++ .../{FMPIntegration.java => fmp/FMPIMC.java} | 4 +- .../compat/fmp/ItemBlockChiselTorchPart.java | 69 +++++++++++++++++++ .../chisel/compat/fmp/PartChiselTorch.java | 56 +++++++++++++++ .../chisel/init/ChiselBlocks.java | 6 +- 9 files changed, 202 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/cricketcraft/chisel/compat/fmp/FMPCompat.java rename src/main/java/com/cricketcraft/chisel/compat/{FMPIntegration.java => fmp/FMPIMC.java} (88%) create mode 100644 src/main/java/com/cricketcraft/chisel/compat/fmp/ItemBlockChiselTorchPart.java create mode 100644 src/main/java/com/cricketcraft/chisel/compat/fmp/PartChiselTorch.java diff --git a/src/main/java/com/cricketcraft/chisel/Chisel.java b/src/main/java/com/cricketcraft/chisel/Chisel.java index 26ca1602..80205632 100644 --- a/src/main/java/com/cricketcraft/chisel/Chisel.java +++ b/src/main/java/com/cricketcraft/chisel/Chisel.java @@ -3,6 +3,7 @@ package com.cricketcraft.chisel; import java.io.File; import com.cricketcraft.chisel.entity.EntityChiselSnowman; + import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; @@ -15,6 +16,7 @@ import org.apache.logging.log4j.Logger; import com.cricketcraft.chisel.block.BlockCarvable; import com.cricketcraft.chisel.compat.Compatibility; import com.cricketcraft.chisel.compat.IMCHandler; +import com.cricketcraft.chisel.compat.fmp.FMPCompat; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.init.ChiselBlocks; import com.cricketcraft.chisel.init.ChiselTabs; @@ -28,6 +30,7 @@ import com.cricketcraft.chisel.world.GeneratorChisel; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; @@ -122,6 +125,9 @@ public class Chisel { Features.preInit(); PacketHandler.init(); ChiselController.INSTANCE.preInit(); + if (Loader.isModLoaded("ForgeMultipart")) { + new FMPCompat().init(); + } proxy.preInit(); } diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 62615095..ee2524bf 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -6,6 +6,7 @@ import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.carving.CarvingGroup; +import com.cricketcraft.chisel.compat.fmp.ItemBlockChiselTorchPart; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.entity.EntityBallOMoss; import com.cricketcraft.chisel.entity.EntityCloudInABottle; @@ -17,6 +18,7 @@ import com.cricketcraft.chisel.item.*; import com.cricketcraft.chisel.item.chisel.ItemChisel; import com.cricketcraft.chisel.item.chisel.ItemChisel.ChiselType; import com.google.common.collect.Lists; + import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; @@ -2518,14 +2520,18 @@ public enum Features { void addBlocks() { Carving.chisel.addVariation("torch", Blocks.torch, 0, 0); for (int type = 0; type < 10; type++) { - if (type == 8 || type == 9) - torch[type] = new BlockCarvableTorch().disableParticles(); - else - torch[type] = new BlockCarvableTorch(); - - torch[type].setInformation("torch" + (type + 1)); - GameRegistry.registerBlock(torch[type], "torch" + (type + 1)); - Carving.chisel.addVariation("torch", torch[type], 0, (type + 1)); + String name = "torch" + (type + 1); + BlockCarvableTorch t = new BlockCarvableTorch(type, name); + if (type == 8 || type == 9) { + t.disableParticles(); + } + if (Loader.isModLoaded("ForgeMultipart")) { + GameRegistry.registerBlock(t, ItemBlockChiselTorchPart.class, name, t); + } else { + GameRegistry.registerBlock(t, name); + } + Carving.chisel.addVariation("torch", t, 0, (type + 1)); + torches[type] = t; } Carving.chisel.registerOre("torch", "torch"); } diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java index 230668cb..613bdb9f 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java @@ -22,13 +22,16 @@ public class BlockCarvableTorch extends BlockTorch implements ICarvable { public CarvableHelper carverHelper; private String texLocation; protected boolean emitsParticles = true; + public int idx; - public BlockCarvableTorch() { + public BlockCarvableTorch(int idx, String tex) { super(); carverHelper = new CarvableHelper(); setCreativeTab(ChiselTabs.tabOtherChiselBlocks); setLightLevel(0.9375F); setBlockName("torch"); + this.idx = idx; + this.texLocation = tex; } @Override @@ -45,11 +48,7 @@ public class BlockCarvableTorch extends BlockTorch implements ICarvable { public void registerBlockIcons(IIconRegister icon) { this.blockIcon = icon.registerIcon(Chisel.MOD_ID + ":torch/" + texLocation); } - - public void setInformation(String textureLocation) { - this.texLocation = textureLocation; - } - + public BlockCarvableTorch disableParticles() { this.emitsParticles = false; return this; diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index 12180c68..6dfe980d 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -22,7 +22,7 @@ import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.carving.CarvableVariation.CarvableVariationCTM; import com.cricketcraft.chisel.client.render.CTM; import com.cricketcraft.chisel.client.render.TextureSubmap; -import com.cricketcraft.chisel.compat.FMPIntegration; +import com.cricketcraft.chisel.compat.fmp.FMPIMC; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.utils.GeneralClient; @@ -376,7 +376,7 @@ public class CarvableHelper { public void registerVariation(String name, CarvableVariation variation, Block block, int blockMeta) { if (block.renderAsNormalBlock() || block.isOpaqueCube() || block.isNormalCube()) { - FMPIntegration.registerFMP(block, blockMeta); + FMPIMC.registerFMP(block, blockMeta); } if (forbidChiseling) diff --git a/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPCompat.java b/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPCompat.java new file mode 100644 index 00000000..3c6c864a --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPCompat.java @@ -0,0 +1,44 @@ +package com.cricketcraft.chisel.compat.fmp; + +import com.cricketcraft.chisel.init.ChiselBlocks; +import com.google.common.collect.Lists; + +import net.minecraft.block.Block; +import net.minecraft.world.World; +import codechicken.lib.vec.BlockCoord; +import codechicken.multipart.MultiPartRegistry.IPartConverter; +import codechicken.multipart.MultiPartRegistry.IPartFactory; +import codechicken.multipart.MultiPartRegistry; +import codechicken.multipart.TMultiPart; + +public class FMPCompat implements IPartFactory, IPartConverter { + + public void init() { + MultiPartRegistry.registerConverter(this); + MultiPartRegistry.registerParts(this, new String[] { "chisel_torch" }); + } + + @Override + public Iterable blockTypes() { + return Lists.newArrayList(ChiselBlocks.torches); + } + + @Override + public TMultiPart convert(World world, BlockCoord bc) { + Block block = world.getBlock(bc.x, bc.y, bc.z); + for (int i = 0; i < ChiselBlocks.torches.length; i++) { + if (block == ChiselBlocks.torches[i]) { + return new PartChiselTorch(i, world.getBlockMetadata(bc.x, bc.y, bc.z)); + } + } + return null; + } + + @Override + public TMultiPart createPart(String type, boolean client) { + if (type.equals("chisel_torch")) { + return new PartChiselTorch(); + } + return null; + } +} diff --git a/src/main/java/com/cricketcraft/chisel/compat/FMPIntegration.java b/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java similarity index 88% rename from src/main/java/com/cricketcraft/chisel/compat/FMPIntegration.java rename to src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java index 8c75a390..37b81e75 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/FMPIntegration.java +++ b/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java @@ -1,10 +1,10 @@ -package com.cricketcraft.chisel.compat; +package com.cricketcraft.chisel.compat.fmp; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import cpw.mods.fml.common.event.FMLInterModComms; -public class FMPIntegration { +public class FMPIMC { public static void registerFMP(Block block) { registerFMP(block, 0, 15); diff --git a/src/main/java/com/cricketcraft/chisel/compat/fmp/ItemBlockChiselTorchPart.java b/src/main/java/com/cricketcraft/chisel/compat/fmp/ItemBlockChiselTorchPart.java new file mode 100644 index 00000000..4f7c9f48 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/compat/fmp/ItemBlockChiselTorchPart.java @@ -0,0 +1,69 @@ +package com.cricketcraft.chisel.compat.fmp; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import codechicken.lib.vec.BlockCoord; +import codechicken.multipart.TMultiPart; +import codechicken.multipart.TileMultipart; +import codechicken.multipart.minecraft.TorchPart; + +import com.cricketcraft.chisel.block.BlockCarvableTorch; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemBlockChiselTorchPart extends ItemBlock { + + private BlockCarvableTorch torch; + + // Blame FML for the duped params, these references will always be the same + public ItemBlockChiselTorchPart(Block block, BlockCarvableTorch torch) { + super(block); + this.torch = torch; + } + + @SideOnly(Side.CLIENT) + public boolean func_150936_a(World world, int x, int y, int z, int side, EntityPlayer player, ItemStack stack) { + return (placePart(world, new BlockCoord(x, y, z).offset(side), stack, side, false)) || (super.func_150936_a(world, x, y, z, side, player, stack)); + } + + public TMultiPart createMultiPart(World world, BlockCoord pos, ItemStack item, int side) { + return new PartChiselTorch(torch.idx, TorchPart.sideMetaMap[side ^ 1]); + } + + public boolean placePart(World world, BlockCoord pos, ItemStack item, int side, boolean doPlace) { + TileMultipart tile = TileMultipart.getOrConvertTile(world, pos); + if (tile == null) { + return false; + } + TMultiPart part = createMultiPart(world, pos, item, side); + if (part == null) { + return false; + } + if (tile.canAddPart(part)) { + if (doPlace) { + TileMultipart.addPart(world, pos, part); + } + return true; + } + return false; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + Block block = world.getBlock(x, y, z); + BlockCoord pos = new BlockCoord(x, y, z); + if (!block.isReplaceable(world, x, y, z)) { + pos = new BlockCoord(x, y, z).offset(side); + } + if (placePart(world, pos, stack, side, !world.isRemote)) { + world.playSoundEffect(pos.x + 0.5F, pos.y + 0.5F, pos.z + 0.5F, field_150939_a.stepSound.func_150496_b(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); + stack.stackSize -= 1; + return true; + } + return super.onItemUse(stack, player, world, x, y, z, side, hitX, hitY, hitZ); + } +} diff --git a/src/main/java/com/cricketcraft/chisel/compat/fmp/PartChiselTorch.java b/src/main/java/com/cricketcraft/chisel/compat/fmp/PartChiselTorch.java new file mode 100644 index 00000000..90a6c456 --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/compat/fmp/PartChiselTorch.java @@ -0,0 +1,56 @@ +package com.cricketcraft.chisel.compat.fmp; + +import com.cricketcraft.chisel.init.ChiselBlocks; + +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.multipart.minecraft.TorchPart; + +public class PartChiselTorch extends TorchPart { + + private int idx; + + public PartChiselTorch() { + } + + public PartChiselTorch(int idx, int meta) { + super(meta); + this.idx = idx; + } + + @Override + public void writeDesc(MCDataOutput packet) { + super.writeDesc(packet); + packet.writeInt(idx); + } + + @Override + public void readDesc(MCDataInput packet) { + super.readDesc(packet); + this.idx = packet.readInt(); + } + + @Override + public void save(NBTTagCompound tag) { + super.save(tag); + tag.setInteger("idx", idx); + } + + @Override + public void load(NBTTagCompound tag) { + super.load(tag); + this.idx = tag.getInteger("idx"); + } + + @Override + public Block getBlock() { + return ChiselBlocks.torches[idx]; + } + + @Override + public String getType() { + return "chisel_torch"; + } +} diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index 340c9e09..04ef09e1 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -1,9 +1,11 @@ package com.cricketcraft.chisel.init; +import net.minecraft.block.Block; + import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.block.*; + import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder; -import net.minecraft.block.Block; @ObjectHolder(Chisel.MOD_ID) public final class ChiselBlocks { @@ -103,7 +105,7 @@ public final class ChiselBlocks { public static BlockCarvableIceStairs[] iceStairs = new BlockCarvableIceStairs[8]; public static BlockCarvablePackedIceStairs[] packediceStairs = new BlockCarvablePackedIceStairs[8]; - public static BlockCarvableTorch[] torch = new BlockCarvableTorch[16]; + public static Block[] torches = new BlockCarvableTorch[16]; public static BlockCarvable[] planks = new BlockCarvable[6]; From 872127952f77e7158cb5f60843274eb501575df2 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Mon, 6 Apr 2015 17:31:50 +0100 Subject: [PATCH 76/85] Delete some useless textures from the unused folder --- .../blocks/unused/grass/bricks+dirt2-ctmv.png | Bin 479 -> 0 bytes .../blocks/unused/grass/bricks+dirt2-top.png | Bin 304 -> 0 bytes .../textures/blocks/unused/grass/bricks.png | Bin 214 -> 0 bytes .../textures/blocks/unused/grass/bricks2.png | Bin 304 -> 0 bytes .../textures/blocks/unused/grass/bricks3.png | Bin 201 -> 0 bytes .../textures/blocks/unused/grass/chunky.png | Bin 185 -> 0 bytes .../textures/blocks/unused/grass/cobble.png | Bin 322 -> 0 bytes .../blocks/unused/grass/dirt-reinforced-ctm1.png | Bin 655 -> 0 bytes .../blocks/unused/grass/dirt-reinforced-ctm2.png | Bin 865 -> 0 bytes .../blocks/unused/grass/dirt-reinforced-ctm3.png | Bin 545 -> 0 bytes .../blocks/unused/grass/dirt-reinforced.png | Bin 609 -> 0 bytes .../textures/blocks/unused/grass/happy.png | Bin 404 -> 0 bytes .../textures/blocks/unused/grass/hor-ctmh.png | Bin 477 -> 0 bytes .../textures/blocks/unused/grass/hor-top.png | Bin 193 -> 0 bytes .../textures/blocks/unused/grass/horizontal.png | Bin 442 -> 0 bytes .../textures/blocks/unused/grass/layers.png | Bin 178 -> 0 bytes .../blocks/unused/grass/netherbricks.png | Bin 204 -> 0 bytes .../textures/blocks/unused/grass/plate.png | Bin 332 -> 0 bytes .../blocks/unused/grass/reinforced-ctm1.png | Bin 943 -> 0 bytes .../blocks/unused/grass/reinforced-ctm2.png | Bin 1158 -> 0 bytes .../blocks/unused/grass/reinforced-ctm3.png | Bin 764 -> 0 bytes .../textures/blocks/unused/grass/reinforced.png | Bin 814 -> 0 bytes .../textures/blocks/unused/grass/vert-ctmv.png | Bin 477 -> 0 bytes .../textures/blocks/unused/grass/vert-top.png | Bin 193 -> 0 bytes .../blocks/unused/grass/vertical-ctmv.png | Bin 236 -> 0 bytes .../blocks/unused/grass/vertical-top.png | Bin 184 -> 0 bytes .../blocks/unused/spiketrap/base - Copy.png | Bin 753 -> 0 bytes .../textures/blocks/unused/spiketrap/base.png | Bin 93 -> 0 bytes .../textures/blocks/unused/spiketrap/spike.png | Bin 539 -> 0 bytes 29 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks+dirt2-ctmv.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks+dirt2-top.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks2.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks3.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/chunky.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/cobble.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm1.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm2.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm3.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/happy.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/hor-ctmh.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/hor-top.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/horizontal.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/layers.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/netherbricks.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/plate.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm1.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm2.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm3.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/vert-ctmv.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/vert-top.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/vertical-ctmv.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/grass/vertical-top.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/base - Copy.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/base.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/spike.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks+dirt2-ctmv.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks+dirt2-ctmv.png deleted file mode 100644 index 93353aae6ee23402c1e99403e29c4d14dacf4a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)lM@L6rUte!;Z;g$O zj*gB!Jw23^luu7jRaI4PZf<;hd~tDcNl8g6Dk@S^Qf6jmrXOY#0003BNkl32|9`g>GACibU}J;i3+9l+pzlqm=g`J%6s_|Mxo0-CB;G{F z%m#<2M6g#Uqi8#ezn_1YjYat^3-_-}pI^_PHlB^HX_~jD*{&~6r|+NUE*sFjXUq;#JCa+z$T<-U^*2AHjWCMg5jBe&+`>!44H7pyT23vy-+q36*Vf^!0001^Nkl}2mm+rhiR&y15D^FybkY$5Yz)}YOdKj|3n(UL1?Q%g@N}J?Z}bZy`V#EV zTgefpOLGBw??0ieZJ(s})hlF4gx0Acj@29dana=(z&(%^%*GbBIGAhV4I873F)T|- zS1J(WkBG2YbMxE4;)R8aS>g6~gg+ni-I%RB{Q3tMItF1qDJ!Y~0000?} z@87>49v*(^&>@}BvS^^1N>3NZkcv3oW8PfN1`=);XU{Kr=f38#M2thunq+3D=ZxY3 zTCon_|F775IPU8G_V=^bJ(~HcH%~`9Id9IY)me?xe@<&U@@=-qLysJ@L`AnHiQ)cB zbaqOFZc*JXV$WC1s@HIO(yJc7mAU4JFVdQ&MBb@05I29J^%m! diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks2.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/bricks2.png deleted file mode 100644 index 9adbcc156b28a665d1eb5de668bfbb0291346317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)y-+q36*Vf^!0001^Nkl}2mm+rhiR&y15D^FybkY$5Yz)}YOdKj|3n(UL1?Q%g@N}J?Z}bZy`V#EV zTgefpOLGBw??0ieZJ(s})hlF4gx0Acj@29dana=(z&(%^%*GbBIGAhV4I873F)T|- zS1J(WkBG2YbMxE4;)R8aS>g6~gg+ni-I%RB{Q3tMItF1qDJ!Y~0000reXWfkq3wb6ikyU8b6F9~2&~N*Ht)=NdYa{Ds z?3_ANpWSxa^yL;NTc%wQwpA@@ekhe?l(v9xV`!)2tVI(gF5R7bs{Qo$rwU?9aV>|u y{^hmg?rijVc;157X`Xpw-J5v9WA$#YelT{<5Gqhv(RU4KJA zA0XV*2$V|oba4!+h~qtdQ1FNW$I$@6m;>#ej0bNs^m%*yw_TfFQgi6+Uw88`2iHY& zjEiG(JkOtIs{LK3+{qmgyCYod&A~;v^BC7!$~RnW{`l7S_;y)^&3?ucU1qY^{Z`zY h(aCmr)fv9u%=;?M=$^Y diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/cobble.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/cobble.png deleted file mode 100644 index a68b769b25ed32de3e6811cebabd3f449bb6b35c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmV-I0lof-P)Qh~V|;vkmzS4US68*QwR3ZG-{0Szot?Y8 zyN-^IW@cu&xw&g=YqYeqfPjFktgL%`dvS4b)SC{@0001~Nkl3*q408~U zAIkghS>bX&2rpO@jk;m}1M-iJYiQQqNazj$f=pVw3I2IgpA@SLBVAD7cd`=C`l8+p z*uAjYYzF{YA|UuC%G9`RD1#_oX0h7LB<|o-ix^L>p+Hl}cnGr*p!8-f2wS|GeMU?_ z9|RU*Kj^>gdWLOCEwJAPsKTxUmYFIuJy)ZvGuSHVv6g90!W~00hWzCiLjCCc2k?pq UW`PNEy#N3J07*qoM6N<$g5L6pvj6}9 diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm1.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm1.png deleted file mode 100644 index 2fdd80dd8df3e6eff9afa1c47fcd57144cea5893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU<&heaSW-5dpp~ys zv_(k?8IKsx__!JvnSPg$J8<~yCn>uXZ{PZAX$Zsz_>}wB`v!*mKhr$(ZQ1V3tx=}Y zdehIk?fY5t@3rlD|L5sU-+uqyax-Vy}_5c ze@b}2)&j@rr&FzD_%8qc8z$Xdd+daXVC0z(KPsnvK4Kp{bB>?-ftNpPvKTh}GP?IL zT7S3B zm;0c;d1H!F&&IY%HT&C6|J=d8CFe^vtHf(#UryDZb`OB2c^)V@YhW0lqZ(^+M6L3g z7N^GZ&i(OBIXWMESi7v(%_y7f^{ICE9QA({Jbh|E&zDSoByr|L2&?1N&qw5^J8XXa z^;Uyj_7s7Go4eJ1{=2j8S^a#b*I%PT7pz%f@}uKG`+R<`$lnY?vmaz88>HHNoZRqG z{YlyGtH!^6*;OBK{~W)PJ%WFOT!QU^s)nx&uNki~uR#{@n&HU6c*NeuZITV+BkkwE zS-wQ3PL`avx{z1(=e`o}%17?}0cH&ClLd2X&W9SE{G5_w>i_3)HN$bA{m&YH&In+e xY?E&KSiADke<>U`U|5Mo;9vZK|J;8VENY)k-pzW`8<@}-JYD@<);T3K0RU-SGNk|j diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm2.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced-ctm2.png deleted file mode 100644 index 174f2529dc54aca623e3c2af8516ff2aa912de2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)ARn*5`-Aq26pZ zz4a>rtJSKW&1Us(w^R8J=z6_^)%W{dShKFr;Ly(Ek47T~rFQEFDj4tg8;pRo>g)Ad z<3_J|{K^24h_VD!r!?DqM+KZ`HeUl#@Ll@gmC|It-wPo666j1tp5S1Q$0M7sEKmR( z`rrgW86ZFeks+iVN+`wXD3`DFBLEhCFs%U^43TP*C|wH?kp$1?E9gppmp**f06;B1 zO#wuxr%?yX=1WuA=hEk?4A1}&5ZIMMDW0~o`C0=M0GB>()_^oJq)aMCN#|fTpEbax z55MZzhts)3`6-pM`Ah+qK0E@@HD~A;yqQYOH9E@X>qSM{E`9jv6i}fP_E>PD+f~oz zOH*%xCVlFyZLq78w4|v-N4b2x39=13^x?OsfXd}^Nf!>%=%+WVY(BeyOF!KO5P{Gl zs-!~C=d-@uZr^e`owE4^z@-nL0Hjf6k@)ZaslTJc;jmsVm#Sy;Sp!`9@T;Ex$5j-` zTt2VD@NN24&;R2Zh|(#SuZ2$;0NtJ8 z-+mrI+of+m4*+-R+s^~wyY%hn0q|Y=_VWO6m%jZx0KQA#ejWhdqt7ldolcbnii%Q$ zOGPknE*Pn+fMxS_u_2LOik2S5tz r4{+bl_tdA)V*Sc}Ki^Xyy<+`;@b1p;qQ{0+4E*6gyZK+LujXT6`=8`7`-!QMK}KA1%=+tZf7ay9Kc8N0 zBiHfv_uof#*Uis=&YSZ#@L$>P#;124+T1?SeDD4DJf;Jsv7Chy@0uPHaQ~S(Yuo9k zhkhQeto!HSK3nyk@t1iDJ73i(NUy)%t+4sBF6)+A7hlzEX=Y#$zQCTO_;&R<_5>#u zPQzP57eB2y*M9B9u61u&T4KDfb$?czeDS7sW1jsYEBQ+|x2+LwO*`O1BaNw%7qYG~l+-7N zK4-Sx`TOrVPnI$TC-FmU9B&-waVFgV@b%>JpEbw&{5E&p6U(T;_d~@%Ux;b_W1m=Hd{DuR*kv?n87%4yT8>0-6<(Mfic=P*fPrJSI&;RN< zu`k~L)62g#m(u^N=HGx7D*VZR&TPW?zs#=T_4D)WB0u&YZ1~K0^{HR2ulC} diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/dirt-reinforced.png deleted file mode 100644 index 98eb999d9ed4377f03d94aedbaf36dc5cfa62d45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^4nS8G~o zyXAGPq8eL*8H#>p%r?!wop$w2=>%ZUISjY!6um1RN z`!gWxrA>j{oc6gYeZFUo`USQuO^~)j5S^h-U3+6~(6iIc%Z_WRWI{qsB c=l#d1X&|)gcaA?RFs(3ny85}Sb4q9e0Q~6(m;e9( diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/happy.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/happy.png deleted file mode 100644 index 3322397337245e90796999df60c75c121d883bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-w=P)9%6xo$m6erqb92DJz>STKt*xzQuA>AT=z^3S5cEV78xyPd zIZHrB)wc^Zk;U~A76E9@U!-k~rnTj{!dV>}s~&N0h(DtR*ajcywiPzax`%r2F<9T_ zOvFYpj%_^OX1z@Z(S9O1tG=UG@Je(l`F-4$WZ8@awhwujvmtMGPFemn}5_0000AXgZJV2$g@uK6b#;S-gOHGrudlD7qN0e1 zh<$y1VPRozZf>!$v7McrbaZsIw6wp!zq`A;Sy@@Sy1Ha!WM*b&dwYATs;XRETwY#Y zfPjF*!^2iqRz^lfu&}UdYHF>mt+%(gQ&UsP$;nGgOTNCoqobowPfx|g#mLCW-rn9n zKR=a~l|5dVsQ>@~^GQTORCr$P(zSJ6Q4|HheVHFJd}a{K?!PppTBinulMiCv*F9rj z!kSpgE~Cb2rN)k3vsOeaq@AhJ@Crd%iCmfmXHO0LK8aml6vYc0?*l(lIv;kSPP(e*;% T_eBQc00000NkvXXu0mjfv+(74 diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/hor-top.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/hor-top.png deleted file mode 100644 index 35651c5e273e5766526dc796edef76866ea6f446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZt*EG&K7IP`-MhoX!`H80 z-_z4mRaJHIVVx6DLAs}lV@O3DYr{d_W&wMqKgl$ z;n?z}Q_6gAXgZJV2$g@uK6b#;S-gOHGrudlD7qN0e1 zh<$y1VPRozZf>!$v7McrbaZsIw6wp!zq`A;Sy@@Sy1Ha!WM*b&dwYATs;XRETwY#Y zfPjF*!^2iqRz^lfu&}UdYHF>mt+%(gQ&UsP$;nGgOTNCoqobowPfx|g#mLCW-rn9n zKR=a~l|5dVsQ>@~&`Cr=RCrzmKm&3FK>+Nbu{O_$_5Y`(;8R<+gnTote8HQD^DO#? z++xkVW?YY`XaUDHN8)P2#X^4!Y;UtHdnNs&qbJ-aq;NQ_^<|-yRvff^JIV-IBA`;< z!ilH3kzr6;Y^E`1v}TlpOu2BXQGNc781)Nc(J&%*H#&lfW@Qlfx?Jt_Y5f8zXmN5A z#3?|9eSrb19mn>ilj77rNzoSfj810h?10x%DksF#rGn07*qoM6N<$g46rWhX4Qo diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/layers.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/layers.png deleted file mode 100644 index 9144619934424db52a5e35b6118a5baa0d900b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uG6Pauc)X94-enHd$(7( z-+Q2VqNj^vNJSj)sf~gT1|n<^?91Oz^{q%j$kYABtsnsNB@aR%N7{4n9d1O z{Q6yS=V|d>1xz2Eb#1EM;se=~*R-seda&Z9sYt|x^ZrYMgw2+5oVL^UX@2n_rs3I- a7wk>l;`N(<2iyT##^CAd=d#Wzp$Py=%|IFe diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/netherbricks.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/netherbricks.png deleted file mode 100644 index 4c72c8ccf7951d852aeee2b3b4dc52d8cb313c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ4G#~WK7D#cMaAyjyR)*g z0s{k+l9D9Vr9y!UiacE$Ln`7_PdRcOa^P`$_}}~+!_1eAuLO4S?{wgNT<21td-eDH zgF%&h?zS_|X?}M~ifh}w9kUv*S?!-G!Th`B&5fvcgb&KGP>dDawUCAaNv{mB@?ocC8Qd;!|d;OXk;vd$@?2>?k} BQ0V{w diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/plate.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/plate.png deleted file mode 100644 index 4f1d3584136ae5a7346d78fe24d73d55d86dfe21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmV-S0ki&zP)U|?WbSy`T*o?c#FT3T9kbaY~3Vr6Azl$4Z~mX>^ce4U-0YHDg-U0rN! zY*$xTtgNhyi;JeFri6rqV`F2dr>BXDiI|v}nwpw;czC3wq;__8TU%SLt*vfuZUZ2b zZvX%Qo=HSORCrz;&Q*#yLot%>E_FP)$KggyFLOucu!f&m&eymHsedm2#KG@dF zXL^0|3A!qRJKM1h_X7KuEoEznS+e*j20OsJ!q92mD3=*}sp@yID1 eM;`9C{qzT9n+28^JKeni0000EYlgqU+McsF)!z*)71)Cp~ep(vlB+IV`$I?6yB#`sTQCfy2I{?$!yKX1g|5 zw;g_S=FPK)n}-iO@7TF>#-E<>lpO>#t^+tq;*!7@*NoV<+ErRO$7$Z$ExW z)LGjlZ;a7vznLQ@*6sSDZ1=*eS*=&IM6Krb-Mn}2-k}Pcwgoq@y)NCce?R~B?b{W_ z&Z{SzNNu#YjQeB!kD;crlJouh_Y7xG*6mNfQDZf??fiNF&Gz>8w}1TjVZgre$LF6t zvPEya`^5kEgk+k{E|PfmxiVw>?FOD28@Y{=KVH7%Ts}eV)U=?DKdxU7&-rF4!#DZy zQTxSW7LH=<&5Q~AgahX!nBN8(Y9Yg?B>C#=uBG)V^MW6QY;e{BxnLGcX=C8I4k;GK zPnA1kHe^3&xwToO>xgsQOYc`|$Ghv@+(SMy?1|C4x!_llfbXSF6XQqm@$n`i-U~f! z%>3A`cRZ>1xSW$IjajoLn9Xddgy1yUgj%%ibc{GA?qItryG z0R3IhIb10?!0lZo z!@R9yb+_9i#WlBBW{c_n<6?N}V8wVTt@O-mks#ieT!$QW>UQ6K#QbPUF;MGgz6Y-k zoVal8^*Ya5$B5F@`_+5r&8<_JcR4Zkdl^uEGGmF0_0hWh{w{?MT?zmH&*!_Q`_y~s zq+So3T4te|P19ub|4IHA6=b>8=zjL=oP&REv30n!gnQ^s=iV>-Km9Aib>f07oz$0b87#|q<84`$ zI`gwx3r{CCFOd`4)qIh4O{dGF$Yc%E;KvXDr+>lkK0HnbOV#T?*f0Kr-KBVS{Py2Q RCcuoy;OXk;vd$@?2>`b#vIGDC diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm2.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm2.png deleted file mode 100644 index a899b09113539c1e43332da78c8171ec0876e769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVDa^IaSW-5dpc{Um#(8g+w-k4 zfiVsutlu46L|DyTd|AX@j2(rU4Gm0<1Wg2r;}5&PJbnGc!G~$K#S3?oT##9QYyJP? ztX1E$)YR24U$_vU_xbbZ%&aV}-oC!H+i%|F)XB-q`!h2$uiU@io|lg=X#VSE%a>o? z|6uyGX_p>8O#JotukZW!?_WN9re^>D&z~pHj~_q2W$V_d*REZ=^zL2Wy87DM*4Jz9 z2Uwb!O*?n~{N<-lRh3NUxQ2y?Z+`paiHfYOtm1^+^78VUXGH}C2mXtH78VxHtf;V9 z$p8P_w`uinZr+S6J9hngxRtH#*=^IOPyh1e%aQ)&x-ye*-@bP*Z2#Bq`9FjjO!^cQ zdKKQ>e&GF4Y{O?Yjr;fS-^iTvU;9~pe!lRnz+azu7jD|IV})XDOw5w0Q$-i>)YsJ| zo&Ip_7+X?@(4rfkp8xw-XXrmgU=m1aZ6n8mqV#lj2}K((WrrI@H)?BYG@8UeuKK%W z#{Ai{Pd}7js(;_WfMT|KLo3m+SE?}(0^%qzJ#ExO~d;2>jgK| z2g+1(8auG7?CF+WHzVC)5x2|B)5aW3$_^ZfOA?HaeArMXwe5YNi1s7dl`sE;Y|nrA z^QWYulRCFWgpG|&#`Wwr!G%l3IX5QFGi_?v12-kqRJV1^QZ;CnWXF*sGW#&y-f#HC<3`PFH1wjKEU;^HvQjnU!4^ z-V2=kk2PUG)3M!Gtlx`$e*OBj<)6i0o^~=E64bxs&vK{Ha{8y9^ta`I8qVnI>o5QP z`*+g3I(s9dNkErLm!*DjbjfJ=*LdLLM?;14w_@Bb^;ev`eB;a+pQwlkjc1V@U%!4` zs!{uM+2gu7=AIf;KlwF(O8n(}{qK*fS3_^zzODT<^1m_1DfgG{^Vv^OPPV@kX6)&( z|Bf2X&vVZ!&wBCu=d@o}E}pl3ZGQ3lXWg$W7ysG*lkwBlXY41!XUi+Z=hijUY$YV{ zr+&6PLyq#5t$XM9pW^@Ud;2;51E+bkt^xV{r-6L)d+WE~=@<6fko*4m)5o8f_r&M# zlsDgU>)!d($DgwASh&K>{=nZ7pf%qnXMJYA;}5j?LEWxfe;AIgI?G>R9}9HE@0UQC zIdVY$hW#Nh>E~yGf{Wfiw|;f|e>B(wvR|)eul>(%6=ZvX%Q diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm3.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced-ctm3.png deleted file mode 100644 index 430543f57b00b764f2f98dbd1dc3c37e34d3007d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU^?vS;uum9_jdN)RZNBgt)CO@ znr?L5>fl)PKz@-~lTy<9-qxvWr}i#rz42Sh?o`aa1B^SDHnu(xVKz^HrZPQIZMUVg z^U|P=WxI19f4p(;{r1@P;kWa)7yhZ*`{+l3Ma1&U8`Cyt{;iX*|6)7e|M#?dyZLLw zR^NPC(iCkG|Gz$B{dF@5o;O81T|Omk?09ngapLEnGCF!iHgd|9X0siSiNB5hmtwRr zZ@YIEN zOtG4L%=Ka8({uc5-?wG#R=Xj-kB1OFZ-JgK<*K@buo_O?zy3z}lrRgjAWMAzLTb;W2;)#7v zHt(3!u>Ql>qx?^cZmznj<>=#3f284M3D>cR8RxjZ1jNAH$N^hJ3Xq5sd8}pQ(}AIE5mi>82$n*42QqrCh=8HtK=rGVLt(8ZjuuW+P_}? z)8zA?S5~=s{M|S2gumT+^;eSnSF!Jqdr;NznsFTlJ}Se@g#Bol}$Cgo1hgKla7H_}gSZ@xZ}I=`UBO0#h}E Mr>mdKI;Vst0LxHgF#rGn diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/reinforced.png deleted file mode 100644 index c6614eb208a345296d8c2bb1da9881d16fca08f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmeAS@N?(olHy`uVBq!ia0vp^4nS5Z5@KRv zGBYzLPoCV=)KpYdl$)D-?AWp7%-IT3VX7x3{aStF5hVS65e1P>`deqo=2*zrVkYjg5xvBmYtnlSXj7a%a)|1Bx`HynKNfLH#dib zgg84phlPdp_V)Vt_yh+BFI%=OH8r)at}ZJp>+I3JISdR;YMw5RAr)~`r(N%QXCTmA ze$007^Y?pmt@nQaUcYLy0Na^ghk6tk?{e_WPra)O70rFXmws&f(}wPtU5`}Fo@AHHR?Z{FT_J9kz_1M5{O&V+!|CUcXGKmVOx z(NJxET*o~)C8(ja==as{&a%874r_`Q20S^*ekSPd`I`D&F3bzg3Ta%jS@dEzOxGJ$d&l!Pob`tDS3{5VV79llsGu&{x~y ze%JM|pIE~1@R^i@<^}KQ_ci&C83QubP7&Ac^v3lC`!>!!>Mv znfy{I|5$UrqT0P~%wCzkn)h#Snld9)>;9Fq51(e6>F`MeYAi_D9N627Lei zzPEbR_#@#v<41>@4Zj;I6zp!)I@k!vzp+!0>)E;`z4qJl_y1q^z3DFd5$2Bv-!Y?^wutfXi~Ilo%>x>|h;jXUd!RK( zekXkR&Un?rdHTWo?6HUWIKDB2AC!Bbb%QyEwYp(-0)K(%8^(1_wg*BtuS5K?>Lsdx#(vOO!y3*u6{1-oD!M<Cczo124!gOHGrudlC&h=`)1 zqJ4dRVPRphv9X<WTxMow zfPjFlt*uj2Q@6LbYHDh*u&`EER>Q-?Mn*>7-rmT_$jQmc#l^)>PfwMVl|Mf}zP`Ro zOG~4pqwr2mO#lD@^GQTORCr$P(zSJ6Q4|HheVHFJd}a{K?!PppTBinulMk}l9i@AG zv&|~Gi|nb<`a5rItdd zRg{4m?BIv;kSPPp{hdR TV3A@H00000NkvXXu0mjfKQre5 diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/grass/vert-top.png b/src/main/resources/assets/chisel/textures/blocks/unused/grass/vert-top.png deleted file mode 100644 index 35651c5e273e5766526dc796edef76866ea6f446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZt*EG&K7IP`-MhoX!`H80 z-_z4mRaJHIVVx6DLAs}lV@O3DYr{d_W&wMqKgl$ z;n?z}Q_6gC>l&hllUpz1!ny z%_E@rY)==*kczmq=M1?H88EP3h!4nE+Wj)gTszXXMT)6)#}#1?$C%bQhY9bNdaqnO zd9%2{M1@Jo9nUxX=i|$-@6causi?`Xs#skj>$uBF=*sg*~ zXNgq_Z;EzFZ<6(sI#e=O%Sl$=_Mw{JybB!JoS9qCawLjgX_*HPhx;GXa(x#RY+c=AW8^pdI;FCuoZU)O7_S+xGFnAG=rj>; z6VGepqydq`#Y<8}AMPAK7vlK5{G2Eb;IQ`OdX=I~nPX6n_v?{Vd0|3i&*iCWMTq9! zb}X}a-wWmif|`tV96Irojccfq3WY#Ipcv|ae}320=K)QG>Sdh>M})y%QnA@+?_v!5}8j>*3Z4Q-$>&3Wvn83ZaJi*H7JIwBvQC z8TUy^Q-g?V1u>f|gd>@m0Zj(JE|i%05q4oHkvfLvHDxng&8AC4)aP}}g$nahS~)c) z-nXE_l_)>z?_UdQtrCB@kq&VKNJ1nE@0S42a<~|?JCWpQrMQFljr*TK*Rnwx^6G%a zf_aVEN;2&Y3}1m{z2)rpBE4L9C!7NATQEl|4}n|a{XyL@S0cAekzf-lF jnsdfM2BelCH-+;*5tAD*D!)3g00000NkvXXu0mjf^@Kz| diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/base.png b/src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/base.png deleted file mode 100644 index 31e95cd5aac617aad6849563d344cab163864753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T>t(1cS5Q_1IQKiba4!+ nh&y|r5y)X^Snzk{^%Vuo3=0?-XBRvv0Ev0J`njxgN@xNA6UG`Z diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/spike.png b/src/main/resources/assets/chisel/textures/blocks/unused/spiketrap/spike.png deleted file mode 100644 index 67cf3471e31a48d34e22fecc0739e3648b0a9670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmV+$0_6RPP)H}s^78)! z1OD{%^z`)q85#HY_x=6+`uh6+7#RN%5&sYn{}U7cT3Y`V75*F?`ohBfX=(k($Nyel z_rk&d#>W1|#q#p<|H8ul!NLE*!T-O%{=dKfzP|bS`S9iC_3P^WA0PYg@BQ)d{u>+q z85#dqSO4?#|MvF(_4WP5#r5^{`0VWe4Gs5eYx-zt{Az0N@9zFgn>mz2@cR?Ca~|;^OG&=>HE7|H#PQ-Q48lG z>6hm!uy4&GGWrMi((@Ngmq^-qd Date: Mon, 6 Apr 2015 17:50:48 +0100 Subject: [PATCH 77/85] Implement the 'chrono' texture as a glass variant --- src/main/java/com/cricketcraft/chisel/Features.java | 5 +++++ src/main/resources/assets/chisel/lang/en_US.lang | 3 +++ .../{unused/wireframe => glass}/chrono-ctm.png | Bin .../blocks/{unused/wireframe => glass}/chrono.png | Bin 4 files changed, 8 insertions(+) rename src/main/resources/assets/chisel/textures/blocks/{unused/wireframe => glass}/chrono-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/wireframe => glass}/chrono.png (100%) diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 4c6810b1..0cf215e9 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -794,6 +794,11 @@ public enum Features { glass.carverHelper.addVariation("tile.glass.15.desc", 15, "glass/a1-glasswindow-ironfencemodern"); glass.carverHelper.registerAll(glass, "glass"); Carving.chisel.registerOre("glass", "glass"); + + BlockCarvableGlass glass2 = (BlockCarvableGlass) new BlockCarvableGlass().setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.3F).setStepSound(Block.soundTypeGlass); + glass2.carverHelper.addVariation("tile.glass2.0.desc", 0, "glass/chrono"); + glass2.carverHelper.registerBlock(glass2, "glass2"); + glass2.carverHelper.registerVariations("glass", glass2); } }, diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 4f2d66b3..a0abc2f6 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -619,6 +619,9 @@ tile.glass.13.desc=Thick Grid Glass tile.glass.14.desc=Thin Grid Glass tile.glass.15.desc=Modern Iron Fence +tile.chisel.glass2.name=Glass +tile.glass2.0.desc=Asymmetrical Leaded Glass + #Sandstone tile.chisel.sandstone.name=Sandstone tile.sandstone.3.desc=Faded Sandstone diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/wireframe/chrono-ctm.png b/src/main/resources/assets/chisel/textures/blocks/glass/chrono-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/wireframe/chrono-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/glass/chrono-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/wireframe/chrono.png b/src/main/resources/assets/chisel/textures/blocks/glass/chrono.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/wireframe/chrono.png rename to src/main/resources/assets/chisel/textures/blocks/glass/chrono.png From 7dc56ea093b46d204b1a0f85cdd467892deea7a6 Mon Sep 17 00:00:00 2001 From: warlordjones Date: Mon, 6 Apr 2015 19:21:11 +0100 Subject: [PATCH 78/85] Implement some more of the unused textures as factory variants Only two textures I can't find a home for --- .../java/com/cricketcraft/chisel/Features.java | 9 +++++++++ src/main/resources/assets/chisel/lang/en_US.lang | 6 ++++++ .../{unused/chrono => factory}/frameblue-ctm.png | Bin .../{unused/chrono => factory}/frameblue.png | Bin .../{unused/chrono => factory}/iceiceice-ctm.png | Bin .../{unused/chrono => factory}/iceiceice.png | Bin .../{unused/chrono => factory}/tilemosaic-ctm.png | Bin .../{unused/chrono => factory}/tilemosaic.png | Bin .../{unused/chrono => factory}/vent-ctmv.png | Bin .../{unused/chrono => factory}/vent-top.png | Bin .../chrono => factory}/wireframeblue-ctm.png | Bin .../{unused/chrono => factory}/wireframeblue.png | Bin .../textures/blocks/unused/chrono/tilered-ctm.png | Bin 197 -> 0 bytes .../textures/blocks/unused/chrono/tilered.png | Bin 168 -> 0 bytes .../blocks/unused/lamp/symbolgold-ctm.png | Bin 473 -> 0 bytes .../textures/blocks/unused/lamp/symbolgold.png | Bin 195 -> 0 bytes 16 files changed, 15 insertions(+) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/frameblue-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/frameblue.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/iceiceice-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/iceiceice.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/tilemosaic-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/tilemosaic.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/vent-ctmv.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/vent-top.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/wireframeblue-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/{unused/chrono => factory}/wireframeblue.png (100%) delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilered-ctm.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilered.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold-ctm.png delete mode 100644 src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 0cf215e9..3e453156 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -687,6 +687,15 @@ public enum Features { factoryblock.carverHelper.addVariation("tile.factory.15.desc", 15, "factory/column"); factoryblock.carverHelper.registerAll(factoryblock, "factoryblock"); Carving.chisel.registerOre("factoryblock", "factoryblock"); + + BlockCarvable factoryblock2 = (BlockCarvable) new BlockCarvable(Material.iron).setCreativeTab(ChiselTabs.tabMetalChiselBlocks).setHardness(2.0F).setResistance(10F) + .setStepSound(Chisel.soundMetalFootstep); + factoryblock2.carverHelper.addVariation("tile.factory2.0.desc", 0, "factory/iceiceice"); + factoryblock2.carverHelper.addVariation("tile.factory2.1.desc", 1, "factory/vent"); + factoryblock2.carverHelper.addVariation("tile.factory2.2.desc", 2, "factory/tilemosaic"); + factoryblock2.carverHelper.addVariation("tile.factory2.3.desc", 3, "factory/wireframeblue"); + factoryblock2.carverHelper.registerAll(factoryblock2, "factoryblock2"); + factoryblock2.carverHelper.registerVariations("factoryblock", factoryblock2); } @Override diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index a0abc2f6..5b39ddef 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -581,6 +581,12 @@ tile.factory.13.desc=Worn Metal Wall with Ventilation Openings tile.factory.14.desc=Rusty Metal Plates tile.factory.15.desc=Worn Metal Column +tile.chisel.factoryblock2.name=Factory Block +tile.factory2.0.desc=Neon Blue Plating +tile.factory2.1.desc=Vertical Venting +tile.factory2.2.desc=Metallic Blue Circuit Plating +tile.factory2.3.desc=Blue Wireframing + #Diamond blocks tile.chisel.diamond_block.name=Diamond Block tile.diamond.1.desc=Embossed Diamond Block diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/frameblue-ctm.png b/src/main/resources/assets/chisel/textures/blocks/factory/frameblue-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/frameblue-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/factory/frameblue-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/frameblue.png b/src/main/resources/assets/chisel/textures/blocks/factory/frameblue.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/frameblue.png rename to src/main/resources/assets/chisel/textures/blocks/factory/frameblue.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/iceiceice-ctm.png b/src/main/resources/assets/chisel/textures/blocks/factory/iceiceice-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/iceiceice-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/factory/iceiceice-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/iceiceice.png b/src/main/resources/assets/chisel/textures/blocks/factory/iceiceice.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/iceiceice.png rename to src/main/resources/assets/chisel/textures/blocks/factory/iceiceice.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilemosaic-ctm.png b/src/main/resources/assets/chisel/textures/blocks/factory/tilemosaic-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilemosaic-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/factory/tilemosaic-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilemosaic.png b/src/main/resources/assets/chisel/textures/blocks/factory/tilemosaic.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilemosaic.png rename to src/main/resources/assets/chisel/textures/blocks/factory/tilemosaic.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/vent-ctmv.png b/src/main/resources/assets/chisel/textures/blocks/factory/vent-ctmv.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/vent-ctmv.png rename to src/main/resources/assets/chisel/textures/blocks/factory/vent-ctmv.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/vent-top.png b/src/main/resources/assets/chisel/textures/blocks/factory/vent-top.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/vent-top.png rename to src/main/resources/assets/chisel/textures/blocks/factory/vent-top.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/wireframeblue-ctm.png b/src/main/resources/assets/chisel/textures/blocks/factory/wireframeblue-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/wireframeblue-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/factory/wireframeblue-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/wireframeblue.png b/src/main/resources/assets/chisel/textures/blocks/factory/wireframeblue.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/unused/chrono/wireframeblue.png rename to src/main/resources/assets/chisel/textures/blocks/factory/wireframeblue.png diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilered-ctm.png b/src/main/resources/assets/chisel/textures/blocks/unused/chrono/tilered-ctm.png deleted file mode 100644 index 01951da8be96a50b819e12bc7b756a67abe11957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4S4BY~Ygu^%ArWs~{X}P1 zlRr<*fKr8?E{-7;aYy}ca~@C-ur_YI$oj^z(ZcEb{gn@d*Lm2_=2up<6q@;A?mE>L zzn^b3ZgE&oT9crB_<(B9{9AJ8Tv)C#R-4ROz5KA)zE+``+R3rm6FJm0%7S~$#3s~# tjO@A7%A;uum9mwN6XZ-W7k^Tqo<4xa2DS2&w?F?fBS&)LZ&UQ@+>+Q@kGu0GE& z<0I_L89kKqE?DkZoWuRkX+!HLr@FabI$zQQrrf!EKw5I6_r;HQcQAzKaCE$RU)BmV OpTX1B&t;ucLK6U0gE*`J diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold-ctm.png b/src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold-ctm.png deleted file mode 100644 index 068944e85be553148886319d5c56d86f1a4ec908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmV;~0Ve*5P)W5oKG9gbhzkqnO-jx(jzpdIN;kpB!B(>_@STVuYZ3uKmLB+_TlqCdo>7*!xK%V P00000NkvXXu0mjflsCjn diff --git a/src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold.png b/src/main/resources/assets/chisel/textures/blocks/unused/lamp/symbolgold.png deleted file mode 100644 index 1ecefc41bf817dd65da3ed7212de9fcbc6161ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZRgjRdP*9lQA(3DqaH2xu z!6KD=XDS4jF7pK{$nF$jq?vt;JjDQy)C~478NN)78&qol`;+0CI;*1ONa4 From acf643c32982e1d913ddb26fde86290a3e5ff282 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 6 Apr 2015 15:21:08 -0400 Subject: [PATCH 79/85] Add entries for new blocks in ChiselBlocks --- src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java index 04ef09e1..82ecf675 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ChiselBlocks.java @@ -21,6 +21,7 @@ public final class ChiselBlocks { public static final BlockCarvable cobblestone = null; public static final BlockMarbleWall cobblestoneWall = null; public static final BlockCarvableGlass glass = null; + public static final BlockCarvableGlass glass2 = null; public static final BlockCarvablePane glass_pane = null; public static final BlockCarvable sandstone = null; public static final BlockCarvable sandstone_scribbles = null; @@ -61,6 +62,7 @@ public final class ChiselBlocks { public static final BlockCarvable templeblock = null; public static final BlockCarvable mossy_templeblock = null; public static final BlockCarvable factoryblock = null; + public static final BlockCarvable factoryblock2 = null; public static final BlockCarvablePane paperwall = null; public static final BlockCarvable paperwall_block = null; public static final BlockCarvable woolen_clay = null; From f0e25b2804c36a4ea4b1b29ef5109016af622bf9 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Mon, 6 Apr 2015 14:29:40 -0700 Subject: [PATCH 80/85] New arcane stone types --- .../java/com/cricketcraft/chisel/Features.java | 5 ++++- src/main/resources/assets/chisel/lang/en_US.lang | 4 +++- .../textures/blocks/arcane/ArcaneBorder-ctm.png | Bin 0 -> 4635 bytes .../textures/blocks/arcane/ArcaneBorder.png | Bin 0 -> 3129 bytes .../textures/blocks/arcane/arcaneMatrix-v9.png | Bin 0 -> 8763 bytes .../arcane/{ => oldFiles}/arcaneBigBrick-ctm.png | Bin .../arcane/{ => oldFiles}/arcaneBigBrick.png | Bin .../arcane/{ => oldFiles}/arcaneBrick-ctmh.png | Bin .../arcane/{ => oldFiles}/arcaneRunes-r9.png | Bin .../arcane/{ => oldFiles}/arcaneRunesGlow-r9.png | Bin .../arcane/{ => oldFiles}/arcane_stone.png | Bin .../blocks/arcane/{ => oldFiles}/conduitAnim.png | Bin .../arcane/{ => oldFiles}/conduitAnim.png.mcmeta | 0 .../blocks/arcane/{ => oldFiles}/largetile.png | Bin .../blocks/arcane/{ => oldFiles}/runes-r9.png | Bin .../arcane/{ => oldFiles}/runesGlow-r9.png | Bin .../arcane/{ => oldFiles}/runesGlow-v9.png | Bin .../textures/blocks/arcane/thaumcraftLogo-v9.png | Bin 0 -> 7125 bytes 18 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder-ctm.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder.png create mode 100644 src/main/resources/assets/chisel/textures/blocks/arcane/arcaneMatrix-v9.png rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcaneBigBrick-ctm.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcaneBigBrick.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcaneBrick-ctmh.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcaneRunes-r9.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcaneRunesGlow-r9.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/arcane_stone.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/conduitAnim.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/conduitAnim.png.mcmeta (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/largetile.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/runes-r9.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/runesGlow-r9.png (100%) rename src/main/resources/assets/chisel/textures/blocks/arcane/{ => oldFiles}/runesGlow-v9.png (100%) create mode 100644 src/main/resources/assets/chisel/textures/blocks/arcane/thaumcraftLogo-v9.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 3e453156..ba0f538a 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -162,7 +162,10 @@ public enum Features { arcane.carverHelper.addVariation("tile.arcane.4.desc", 4, "arcane/runesGlow"); arcane.carverHelper.addVariation("tile.arcane.5.desc", 5, "arcane/bigBrick"); arcane.carverHelper.addVariation("tile.arcane.6.desc", 6, "arcane/conduitGlowAnim"); - arcane.carverHelper.addVariation("tile.arcane.7.desc", 7, "arcane/BorderBrain"); + arcane.carverHelper.addVariation("tile.arcane.7.desc", 7, "arcane/BorderBrain"); + arcane.carverHelper.addVariation("tile.arcane.8.desc", 8, "arcane/ArcaneBorder"); + arcane.carverHelper.addVariation("tile.arcane.9.desc", 9, "arcane/arcaneMatrix"); + arcane.carverHelper.addVariation("tile.arcane.10.desc", 10, "arcane/thaumcraftLogo"); arcane.carverHelper.registerAll(arcane, "arcane"); Carving.chisel.registerOre("arcane", "arcane"); } diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index 5b39ddef..c4f092c7 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -194,7 +194,9 @@ tile.arcane.4.desc=Glowing Symbols tile.arcane.5.desc=Bricks tile.arcane.6.desc=Temporal Conduit tile.arcane.7.desc=Braaainz -tile.arcane.8.desc=Spatial Conduit +tile.arcane.8.desc=Infernally Arcane +tile.arcane.9.desc=Nasty Nazca Lines +tile.arcane.10.desc=Fine Thaumaturge's Emblem #Thaumium tile.chisel.thaumium.name=Thaumium Block diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder-ctm.png b/src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder-ctm.png new file mode 100644 index 0000000000000000000000000000000000000000..391e2985b88e2aa2b9b2164288eb5d3824887c99 GIT binary patch literal 4635 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 Rv>X5c002ovPDHLkV1j|3(bWI| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder.png b/src/main/resources/assets/chisel/textures/blocks/arcane/ArcaneBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e8b5ae5104cba077ba5f96600fad12f7b2127c GIT binary patch literal 3129 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 TeUk}t00000NkvXXu0mjfdxYH* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneMatrix-v9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneMatrix-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0720ceca77a206b2bb31f26c256d176926987d GIT binary patch literal 8763 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBigBrick-ctm.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBigBrick-ctm.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBigBrick-ctm.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBigBrick-ctm.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBigBrick.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBigBrick.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBigBrick.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBigBrick.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBrick-ctmh.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBrick-ctmh.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcaneBrick-ctmh.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneBrick-ctmh.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneRunes-r9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneRunes-r9.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcaneRunes-r9.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneRunes-r9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcaneRunesGlow-r9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneRunesGlow-r9.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcaneRunesGlow-r9.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcaneRunesGlow-r9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/arcane_stone.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcane_stone.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/arcane_stone.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/arcane_stone.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/conduitAnim.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/conduitAnim.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/conduitAnim.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/conduitAnim.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/conduitAnim.png.mcmeta b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/conduitAnim.png.mcmeta similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/conduitAnim.png.mcmeta rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/conduitAnim.png.mcmeta diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/largetile.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/largetile.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/largetile.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/largetile.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/runes-r9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runes-r9.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/runes-r9.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runes-r9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/runesGlow-r9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runesGlow-r9.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/runesGlow-r9.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runesGlow-r9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/runesGlow-v9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runesGlow-v9.png similarity index 100% rename from src/main/resources/assets/chisel/textures/blocks/arcane/runesGlow-v9.png rename to src/main/resources/assets/chisel/textures/blocks/arcane/oldFiles/runesGlow-v9.png diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/thaumcraftLogo-v9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/thaumcraftLogo-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..24509ceea67b767738f694eb78d087404fd0873f GIT binary patch literal 7125 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 XkK5Q=DB)u8zX^mevM|Kx-%R)quFv?5 literal 0 HcmV?d00001 From 42116851aa185e3bbfcaab1c9c12b5ed59387d9f Mon Sep 17 00:00:00 2001 From: CptSpaceToaster Date: Mon, 6 Apr 2015 19:48:55 -0400 Subject: [PATCH 81/85] updated changelog and version number for release --- changelog | 15 +++++++++++++++ gradle.properties | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/changelog b/changelog index c56eec7c..2d892fa3 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,18 @@ +2.3.10: +New +- Added Arcane stone blocks +- Added Factory varients using some old textures that were lying around +- Added Chrono Glass Variant +Changes +- Chiseled Torches now work as Forge microparts +- AntiBlocks will not allow mobs to spawn on them (like half blocks, or glass) +Fixes +- Fixed the Mossy configuration to properly disable/enable whether the player +can chisel cobble into mossy cobble, etc. +- Fixed a crash on dedicated servers +- Fixed an bug that allowed item duplication. We're sorry server ops :( +- Improved block loading performance significantly! + 2.3.9: API - Fixed issue where Chisel would crash if a user sent any message to the IMC diff --git a/gradle.properties b/gradle.properties index 2dc8b113..359f6427 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -mod_version=2.3.9 +mod_version=2.3.10 minecraft_version=1.7.10 forge_version=10.13.2.1291 From b6c04a92e837bc0f5ff593d8b8c386942f468ec7 Mon Sep 17 00:00:00 2001 From: Drullkus Date: Mon, 6 Apr 2015 16:52:21 -0700 Subject: [PATCH 82/85] Add last ARcane stone variant --- .../java/com/cricketcraft/chisel/Features.java | 1 + .../resources/assets/chisel/lang/en_US.lang | 1 + .../blocks/arcane/entropiedEntritchRock-v9.png | Bin 0 -> 19691 bytes 3 files changed, 2 insertions(+) create mode 100644 src/main/resources/assets/chisel/textures/blocks/arcane/entropiedEntritchRock-v9.png diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index ba0f538a..a9afef52 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -166,6 +166,7 @@ public enum Features { arcane.carverHelper.addVariation("tile.arcane.8.desc", 8, "arcane/ArcaneBorder"); arcane.carverHelper.addVariation("tile.arcane.9.desc", 9, "arcane/arcaneMatrix"); arcane.carverHelper.addVariation("tile.arcane.10.desc", 10, "arcane/thaumcraftLogo"); + arcane.carverHelper.addVariation("tile.arcane.11.desc", 11, "arcane/entropiedEntritchRock"); arcane.carverHelper.registerAll(arcane, "arcane"); Carving.chisel.registerOre("arcane", "arcane"); } diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index c4f092c7..e907c22e 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -197,6 +197,7 @@ tile.arcane.7.desc=Braaainz tile.arcane.8.desc=Infernally Arcane tile.arcane.9.desc=Nasty Nazca Lines tile.arcane.10.desc=Fine Thaumaturge's Emblem +tile.arcane.11.desc=Cracked Rock leaking Eldritch Glow #Thaumium tile.chisel.thaumium.name=Thaumium Block diff --git a/src/main/resources/assets/chisel/textures/blocks/arcane/entropiedEntritchRock-v9.png b/src/main/resources/assets/chisel/textures/blocks/arcane/entropiedEntritchRock-v9.png new file mode 100644 index 0000000000000000000000000000000000000000..ad560d388115fdc717437d3dac97da5f7a1391ea GIT binary patch literal 19691 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 Date: Mon, 6 Apr 2015 19:56:09 -0400 Subject: [PATCH 83/85] Updated changelog to reflect our pirate roots --- changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog b/changelog index 2d892fa3..e54be4ec 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,6 @@ 2.3.10: New -- Added Arcane stone blocks +- Added ARRRRRRR-cane stone blocks - Added Factory varients using some old textures that were lying around - Added Chrono Glass Variant Changes From 49f2b5220046a711724ab968ed8eb45439a6207e Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 6 Apr 2015 21:39:20 -0400 Subject: [PATCH 84/85] Fix issues with presents and chunk boundaries / orphan chunks --- .../chisel/block/BlockPresent.java | 12 +- .../block/tileentity/TileEntityPresent.java | 139 ++++++++++++------ .../message/MessagePresentConnect.java | 11 +- 3 files changed, 106 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java index b362f260..69cef826 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java @@ -79,12 +79,14 @@ public class BlockPresent extends Block implements ICarvable { TileEntityPresent te = (TileEntityPresent) world.getTileEntity(x, y, z); world.setBlockMetadataWithNotify(x, y, z, stack.getItemDamage(), 3); te.setRotation(heading); - te.findConnections(); - if (te.isConnected()) { - TileEntityPresent other = te.getConnection(); - other.setRotation(heading); + if (!world.isRemote) { + te.findConnections(); + if (te.isConnected()) { + TileEntityPresent other = te.getConnection(); + other.setRotation(heading); + } + world.markBlockForUpdate(x, y, z); } - world.markBlockForUpdate(x, y, z); } @Override diff --git a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityPresent.java b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityPresent.java index 944c62e1..d24e2505 100644 --- a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityPresent.java @@ -21,6 +21,8 @@ import com.cricketcraft.chisel.network.message.MessagePresentConnect; public class TileEntityPresent extends TileEntity implements IInventory, IDoubleChest { private TileEntityPresent connection = null; + // If cachedDir is non-null, but connection is null, this present must be + // connected to an unloaded present. This is handled appropriately. private ForgeDirection cachedDir = null; private boolean isParent; private final ItemStack[] inventory = new ItemStack[27]; @@ -29,14 +31,10 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble @Override public void updateEntity() { - if (isConnected() && connection.isInvalid()) { - disconnect(); - } - - if (autoSearch && worldObj != null /* ugh */) { + if (!isConnected() && autoSearch && worldObj != null /* ugh */) { if (cachedDir != null) { connectTo(cachedDir); - } else { + } else if (!worldObj.isRemote){ findConnections(); } autoSearch = false; @@ -48,7 +46,7 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } private boolean connectTo(TileEntityPresent present, ForgeDirection dir) { - if (present.getBlockMetadata() == getBlockMetadata() && !present.isConnected() && Math.abs(present.xCoord - xCoord + present.yCoord - yCoord + present.zCoord - zCoord) == 1) { + if (present.getBlockMetadata() == getBlockMetadata() && !present.isConnected() && (present.cachedDir == null || present.cachedDir == dir.getOpposite()) && Math.abs(present.xCoord - xCoord + present.yCoord - yCoord + present.zCoord - zCoord) == 1) { connection = present; connection.connection = this; connection.cachedDir = dir.getOpposite(); @@ -63,22 +61,31 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } public boolean connectTo(ForgeDirection dir) { - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + int x = xCoord + dir.offsetX, y = yCoord + dir.offsetY, z = zCoord + dir.offsetZ; + TileEntity te = getTileSafe(x, y, z); if (te instanceof TileEntityPresent) { return connectTo((TileEntityPresent) te, dir); } - return false; + return !exists(x, y, z); } - public void disconnect() { + /** + * @param preserveDir + * If true, this is only a virtual disconnect, meaning the other + * chest still exists, but is still loaded, so maintain a + * cachedDir for reconnection upon chunk load. + */ + public void disconnect(boolean preserveDir) { if (isConnected()) { - this.connection.cachedDir = null; + if (!preserveDir) { + this.connection.cachedDir = null; + this.cachedDir = null; + } this.connection.connection = null; this.connection.markDirty(); - this.cachedDir = null; this.connection = null; this.markDirty(); - PacketHandler.INSTANCE.sendToDimension(new MessagePresentConnect(this, ForgeDirection.UNKNOWN, false), worldObj.provider.dimensionId); + PacketHandler.INSTANCE.sendToDimension(new MessagePresentConnect(this, ForgeDirection.UNKNOWN, false, preserveDir), worldObj.provider.dimensionId); } } @@ -104,16 +111,21 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble public void findConnections() { if (!isConnected()) { + if (cachedDir != null) { + if (connectTo(cachedDir)) { + return; + } + } for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if (dir != ForgeDirection.UP && dir != ForgeDirection.DOWN) { if (connectTo(dir)) { - break; + return; } } } } } - + public TileEntityPresent getParent() { return isParent || connection == null ? this : connection; } @@ -124,15 +136,12 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } @Override - public void writeToNBT(NBTTagCompound tag) - { + public void writeToNBT(NBTTagCompound tag) { super.writeToNBT(tag); NBTTagList nbttaglist = new NBTTagList(); - for (int i = 0; i < getTrueSizeInventory(); ++i) - { - if (inventory[i] != null) - { + for (int i = 0; i < getTrueSizeInventory(); ++i) { + if (inventory[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte) i); inventory[i].writeToNBT(nbttagcompound1); @@ -149,18 +158,15 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } @Override - public void readFromNBT(NBTTagCompound tag) - { + public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); NBTTagList nbttaglist = tag.getTagList("Items", 10); - for (int i = 0; i < nbttaglist.tagCount(); ++i) - { + for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); int j = nbttagcompound1.getByte("Slot") & 255; - if (j >= 0 && j < getTrueSizeInventory()) - { + if (j >= 0 && j < getTrueSizeInventory()) { inventory[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } @@ -173,7 +179,7 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } autoSearch = true; } - + @Override public Packet getDescriptionPacket() { NBTTagCompound tag = new NBTTagCompound(); @@ -185,13 +191,29 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { readFromNBT(packet.func_148857_g()); } - + @Override public boolean shouldRefresh(Block oldBlock, Block newBlock, int oldMeta, int newMeta, World world, int x, int y, int z) { // prevent losing TE data when in-world chiseling return oldBlock != newBlock; } + @Override + public void invalidate() { + super.invalidate(); + if (isConnected()) { + disconnect(false); + } + } + + @Override + public void onChunkUnload() { + super.onChunkUnload(); + if (isConnected()) { + disconnect(true); + } + } + private int getAdjustedSlot(int slot) { slot %= getSizeInventory(); if (isConnected() && !isParent) { @@ -199,7 +221,32 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } return slot; } - + + private TileEntity getTileSafe(int x, int y, int z) { + if (exists(x, y, z)) { + return worldObj.getTileEntity(x, y, z); + } + return null; + } + + // private Block getBlockSafe(int x, int y, int z) { + // if (exists(x, y, z)) { + // return worldObj.getBlock(x, y, z); + // } + // return null; + // } + // + // private int getMetaSafe(int x, int y, int z) { + // if (exists(x, y, z)) { + // return worldObj.getBlockMetadata(x, y, z); + // } + // return 0; + // } + // + private boolean exists(int x, int y, int z) { + return worldObj.blockExists(x, y, z); + } + /* IInventory */ @Override @@ -218,41 +265,34 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble } @Override - public ItemStack decrStackSize(int slot, int amount) - { + public ItemStack decrStackSize(int slot, int amount) { slot = getAdjustedSlot(slot); ItemStack[] inv = inventory; if (isConnected() && slot >= getTrueSizeInventory()) { inv = connection.inventory; slot %= getTrueSizeInventory(); + connection.markDirty(); } - if (inv[slot] != null) - { + if (inv[slot] != null) { ItemStack itemstack; - if (inv[slot].stackSize <= amount) - { + if (inv[slot].stackSize <= amount) { itemstack = inv[slot]; inv[slot] = null; this.markDirty(); return itemstack; - } - else - { + } else { itemstack = inv[slot].splitStack(amount); - if (inv[slot].stackSize == 0) - { + if (inv[slot].stackSize == 0) { inv[slot] = null; } this.markDirty(); return itemstack; } - } - else - { + } else { return null; } } @@ -269,6 +309,7 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble inventory[slot] = stack; } else if (isConnected()) { connection.inventory[slot % getTrueSizeInventory()] = stack; + connection.markDirty(); } } @@ -306,21 +347,21 @@ public class TileEntityPresent extends TileEntity implements IInventory, IDouble public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { return true; } - + /* IDoubleChest */ - + @Override public int getTrueSizeInventory() { return inventory.length; } - + @Override public ItemStack getTrueStackInSlot(int slot) { return inventory[slot % getTrueSizeInventory()]; } - + @Override public void putStackInTrueSlot(int slot, ItemStack stack) { - inventory[slot % getTrueSizeInventory()] = stack; + inventory[slot % getTrueSizeInventory()] = stack; } } diff --git a/src/main/java/com/cricketcraft/chisel/network/message/MessagePresentConnect.java b/src/main/java/com/cricketcraft/chisel/network/message/MessagePresentConnect.java index b0f94b76..82907574 100644 --- a/src/main/java/com/cricketcraft/chisel/network/message/MessagePresentConnect.java +++ b/src/main/java/com/cricketcraft/chisel/network/message/MessagePresentConnect.java @@ -15,16 +15,21 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; public class MessagePresentConnect extends MessageCoords { private ForgeDirection dir; - private boolean connect; + private boolean connect, preserveDir; public MessagePresentConnect() { super(); } public MessagePresentConnect(TileEntityPresent present, ForgeDirection dir, boolean connecting) { + this(present, dir, connecting, false); + } + + public MessagePresentConnect(TileEntityPresent present, ForgeDirection dir, boolean connecting, boolean preserveDir) { super(present); this.dir = dir; this.connect = connecting; + this.preserveDir = preserveDir; } @Override @@ -32,6 +37,7 @@ public class MessagePresentConnect extends MessageCoords { super.toBytes(buf); buf.writeInt(dir.ordinal()); buf.writeBoolean(connect); + buf.writeBoolean(preserveDir); } @Override @@ -39,6 +45,7 @@ public class MessagePresentConnect extends MessageCoords { super.fromBytes(buf); dir = ForgeDirection.values()[buf.readInt()]; connect = buf.readBoolean(); + preserveDir = buf.readBoolean(); } public static class Handler implements IMessageHandler { @@ -50,7 +57,7 @@ public class MessagePresentConnect extends MessageCoords { if (message.connect) { ((TileEntityPresent) te).connectTo(message.dir); } else { - ((TileEntityPresent) te).disconnect(); + ((TileEntityPresent) te).disconnect(message.preserveDir); } } return null; From 506cb04a606134982ed97c35415a7c0c76ecf0d6 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Mon, 6 Apr 2015 21:44:37 -0400 Subject: [PATCH 85/85] Fix issues with present clientside desync --- .../com/cricketcraft/chisel/block/BlockPresent.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java index 69cef826..b362f260 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java @@ -79,14 +79,12 @@ public class BlockPresent extends Block implements ICarvable { TileEntityPresent te = (TileEntityPresent) world.getTileEntity(x, y, z); world.setBlockMetadataWithNotify(x, y, z, stack.getItemDamage(), 3); te.setRotation(heading); - if (!world.isRemote) { - te.findConnections(); - if (te.isConnected()) { - TileEntityPresent other = te.getConnection(); - other.setRotation(heading); - } - world.markBlockForUpdate(x, y, z); + te.findConnections(); + if (te.isConnected()) { + TileEntityPresent other = te.getConnection(); + other.setRotation(heading); } + world.markBlockForUpdate(x, y, z); } @Override