From 0d090f1d2c1813fce9a2494103d74915e86fd908 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 31 Mar 2015 20:37:55 +0200 Subject: [PATCH] Rings of Awesome & Heat Collector! --- build.gradle | 2 +- .../ellpeck/actuallyadditions/PLANNED.txt | 7 - .../blocks/BlockHeatCollector.java | 97 ++++++++++++++ .../actuallyadditions/blocks/InitBlocks.java | 4 + .../config/ConfigValues.java | 20 +++ .../config/ConfigurationHandler.java | 1 + .../crafting/BlockCrafting.java | 26 +++- .../crafting/ItemCrafting.java | 20 +++ .../creative/CreativeTab.java | 4 + .../event/RenderPlayerEventAA.java | 49 +++---- .../actuallyadditions/gadget/ModelTorch.java | 2 +- .../gadget/RenderSpecial.java | 41 ++++-- .../actuallyadditions/items/InitItems.java | 9 ++ .../items/ItemPotionRing.java | 121 ++++++++++++++++++ .../items/metalists/TheMiscItems.java | 3 +- .../items/metalists/ThePotionRings.java | 61 +++++++++ .../tile/TileEntityBase.java | 1 + .../tile/TileEntityFurnaceSolar.java | 64 ++++----- .../tile/TileEntityHeatCollector.java | 65 ++++++++++ .../actuallyadditions/util/ModUtil.java | 2 +- .../ellpeck/actuallyadditions/util/Util.java | 2 +- .../assets/actuallyadditions/lang/en_US.lang | 31 ++++- .../blocks/blockHeatCollectorBottom.png | Bin 0 -> 377 bytes .../blocks/blockHeatCollectorSide.png | Bin 0 -> 278 bytes .../textures/blocks/blockHeatCollectorTop.png | Bin 0 -> 523 bytes .../blocks/models/modelFishingNet.png | Bin 0 -> 222 bytes .../blocks/models/modelFurnaceSolar.png | Bin 0 -> 1146 bytes .../blocks/models/special/modelEllpeck.png | Bin 0 -> 718 bytes .../blocks/models/special/modelGlenthor.png | Bin 0 -> 825 bytes .../blocks/models/special/modelHose.png | Bin 0 -> 326 bytes .../blocks/models/special/modelPakto.png | Bin 0 -> 450 bytes .../textures/gui/guiTorchBox.png | Bin 0 -> 1836 bytes .../textures/items/itemLeafBlower.png | Bin 0 -> 422 bytes .../textures/items/itemLeafBlowerAdvanced.png | Bin 0 -> 348 bytes .../textures/items/itemMiscRing.png | Bin 0 -> 267 bytes .../textures/items/itemPotionRing.png | Bin 0 -> 261 bytes .../textures/items/itemPotionRingAdvanced.png | Bin 0 -> 304 bytes src/main/resources/mcmod.info | 4 +- 38 files changed, 549 insertions(+), 87 deletions(-) create mode 100644 src/main/java/ellpeck/actuallyadditions/blocks/BlockHeatCollector.java create mode 100644 src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java create mode 100644 src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java create mode 100644 src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorBottom.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorSide.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorTop.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/modelFishingNet.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/modelFurnaceSolar.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelEllpeck.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelGlenthor.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelHose.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/blocks/models/special/modelPakto.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/gui/guiTorchBox.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemLeafBlower.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemLeafBlowerAdvanced.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemMiscRing.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemPotionRing.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemPotionRingAdvanced.png diff --git a/build.gradle b/build.gradle index e1df25fcd..e3f012ecc 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.0.2.3" +version = "1.7.10-0.0.3.2" group = "ellpeck.actuallyadditions" archivesBaseName = "ActuallyAdditions" diff --git a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt index 53d310489..fbd8f76fd 100644 --- a/src/main/java/ellpeck/actuallyadditions/PLANNED.txt +++ b/src/main/java/ellpeck/actuallyadditions/PLANNED.txt @@ -8,10 +8,6 @@ -Advanced ESD -Has a Filter --Heat Collector - -Powers Furnaces when next to them - -Needs Warmth Sources around it - -Instant Teleport Device -Teleports Players to where they look (Much like the Bukkit Compass) @@ -50,9 +46,6 @@ -Cobblestone and Stone Signs --Potion Rings - -Give certain Potion Effects when held - -Binoculars -Allow you to see farther and closer -With Night Vision Addon diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockHeatCollector.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockHeatCollector.java new file mode 100644 index 000000000..d36d826c0 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockHeatCollector.java @@ -0,0 +1,97 @@ +package ellpeck.actuallyadditions.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.tile.TileEntityHeatCollector; +import ellpeck.actuallyadditions.util.IName; +import ellpeck.actuallyadditions.util.ItemUtil; +import ellpeck.actuallyadditions.util.KeyUtil; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockHeatCollector extends BlockContainerBase implements IName{ + + private IIcon topIcon; + private IIcon bottomIcon; + + public BlockHeatCollector(){ + super(Material.rock); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityHeatCollector(); + } + + @Override + public IIcon getIcon(int side, int metadata){ + return side == 1 ? this.topIcon : (side == 0 ? this.bottomIcon : this.blockIcon); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName() + "Side"); + this.topIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName() + "Top"); + this.bottomIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName() + "Bottom"); + } + + @Override + public String getName(){ + return "blockHeatCollector"; + } + + public static class TheItemBlock extends ItemBlock{ + + private Block theBlock; + + public TheItemBlock(Block block){ + super(block); + this.theBlock = block; + this.setHasSubtypes(false); + this.setMaxDamage(0); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName(); + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) { + if(KeyUtil.isShiftPressed()){ + for(int i = 0; i < 3; i++){ + list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc." + (i + 1))); + } + } + else list.add(ItemUtil.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java index e504131d9..201dce8fe 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/InitBlocks.java @@ -17,6 +17,7 @@ public class InitBlocks{ public static Block blockInputter; public static Block blockFishingNet; public static Block blockFurnaceSolar; + public static Block blockHeatCollector; public static void init(){ Util.logInfo("Initializing Blocks..."); @@ -50,5 +51,8 @@ public class InitBlocks{ blockFurnaceSolar = new BlockFurnaceSolar(); BlockUtil.register(blockFurnaceSolar, BlockFurnaceSolar.TheItemBlock.class); + + blockHeatCollector = new BlockHeatCollector(); + BlockUtil.register(blockHeatCollector, BlockHeatCollector.TheItemBlock.class); } } \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java b/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java index 7b6ba2e6d..bd2d95cc6 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/ConfigValues.java @@ -2,12 +2,14 @@ package ellpeck.actuallyadditions.config; import ellpeck.actuallyadditions.items.metalists.TheFoods; import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.items.metalists.ThePotionRings; import net.minecraftforge.common.config.Configuration; public class ConfigValues{ public static boolean[] enabledFoodRecipes = new boolean[TheFoods.values().length]; public static boolean[] enabledMiscRecipes = new boolean[TheMiscItems.values().length]; + public static boolean[] enablePotionRingRecipes = new boolean[ThePotionRings.values().length]; public static boolean enableCompostRecipe; public static boolean enableKnifeRecipe; public static boolean enableCrusherRecipe; @@ -69,6 +71,13 @@ public class ConfigValues{ public static boolean leafBlowerParticles; public static boolean leafBlowerHasSound; + public static boolean enableSolarRecipe; + public static boolean enableFishingNetRecipe; + public static boolean enableHeatCollectorRecipe; + + public static int heatCollectorRandomChance; + public static int heatCollectorBlocksNeeded; + public static void defineConfigValues(Configuration config){ for(int i = 0; i < enabledFoodRecipes.length; i++){ @@ -78,6 +87,10 @@ public class ConfigValues{ enabledMiscRecipes[i] = config.getBoolean(TheMiscItems.values()[i].name, ConfigurationHandler.CATEGORY_MISC_CRAFTING, true, "If the Crafting Recipe for " + TheMiscItems.values()[i].name + " is Enabled"); } + for(int i = 0; i < enablePotionRingRecipes.length; i++){ + enablePotionRingRecipes[i] = config.getBoolean(ThePotionRings.values()[i].name, ConfigurationHandler.CATEGORY_POTION_RING_CRAFTING, i != ThePotionRings.SATURATION.ordinal(), "If the Crafting Recipe for the Ring of " + ThePotionRings.values()[i].name + " is Enabled"); + } + enableLeafBlowerRecipe = config.getBoolean("Leaf Blower", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for the Leaf Blower is Enabled"); enableLeafBlowerAdvancedRecipe = config.getBoolean("Advanced Leaf Blower", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for the Advanced Leaf Blower is Enabled"); leafBlowerDropItems = config.getBoolean("Leaf Blower: Drops Items", ConfigurationHandler.CATEGORY_TOOL_VALUES, true, "If the Leaf Blower lets destroyed Blocks' Drops drop"); @@ -110,6 +123,10 @@ public class ConfigValues{ enableFeederRecipe = config.getBoolean("Feeder", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Feeder is Enabled"); enableCrafterRecipe = config.getBoolean("Crafting Table On A Stick", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for the Crafting Table On A Stick is Enabled"); + enableSolarRecipe = config.getBoolean("Solar Panel", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Solar Panel is Enabled"); + enableFishingNetRecipe = config.getBoolean("Fishing Net", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Fishing Net is Enabled"); + enableHeatCollectorRecipe = config.getBoolean("Heat Collector", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Heat Collector is Enabled"); + tileEntityCompostAmountNeededToConvert = config.getInt("Compost: Amount Needed To Convert", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 10, 1, 64, "How many items are needed in the Compost to convert to Fertilizer"); tileEntityCompostConversionTimeNeeded = config.getInt("Compost: Conversion Time Needed", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 1000, 30, 10000, "How long the Compost needs to convert to Fertilizer"); @@ -138,5 +155,8 @@ public class ConfigValues{ grinderCrushTime = config.getInt("Crusher: Crush Time", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 200, 10, 1000, "How long the Crusher takes to crush an item"); grinderDoubleCrushTime = config.getInt("Double Crusher: Crush Time", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 300, 10, 1000, "How long the Double Crusher takes to crush an item"); furnaceDoubleSmeltTime = config.getInt("Double Furnace: Smelt Time", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 300, 10, 1000, "How long the Double Furnace takes to crush an item"); + + heatCollectorBlocksNeeded = config.getInt("Heat Collector: Blocks Needed", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 4, 1, 5, "How many Blocks are needed for the Heat Collector to power Machines above it"); + heatCollectorRandomChance = config.getInt("Heat Collector: Random Chance", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 2000, 10, 100000, "The Chance of the Heat Collector destroying a Lava Block around (Default Value 2000 meaning a 1/2000 Chance!)"); } } diff --git a/src/main/java/ellpeck/actuallyadditions/config/ConfigurationHandler.java b/src/main/java/ellpeck/actuallyadditions/config/ConfigurationHandler.java index 8c2680c1b..55b7665b0 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/ConfigurationHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/config/ConfigurationHandler.java @@ -15,6 +15,7 @@ public class ConfigurationHandler{ public static final String CATEGORY_MACHINE_VALUES = "machine values"; public static final String CATEGORY_MOB_DROPS = "mob drops"; public static final String CATEGORY_WORLD_GEN = "world gen"; + public static final String CATEGORY_POTION_RING_CRAFTING = "ring crafting"; public static void init(File configFile){ diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java index 8c974698c..9096f5001 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java @@ -28,10 +28,28 @@ public class BlockCrafting{ 'Q', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal())); //Fishing Net - GameRegistry.addRecipe(new ItemStack(InitBlocks.blockFishingNet), - "SSS", "SDS", "SSS", - 'D', new ItemStack(Items.diamond), - 'S', new ItemStack(Items.string)); + if(ConfigValues.enableFishingNetRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockFishingNet), + "SSS", "SDS", "SSS", + 'D', new ItemStack(Items.diamond), + 'S', new ItemStack(Items.string)); + + //Solar Panel + if(ConfigValues.enableSolarRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockFurnaceSolar), + "IBI", "BDB", "IBI", + 'D', new ItemStack(Blocks.diamond_block), + 'I', new ItemStack(Items.iron_ingot), + 'B', new ItemStack(Blocks.iron_bars)); + + //Heat Collector + if(ConfigValues.enableHeatCollectorRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockHeatCollector), + "BRB", "LDL", "BRB", + 'D', new ItemStack(Blocks.diamond_block), + 'R', new ItemStack(Items.repeater), + 'L', new ItemStack(Items.lava_bucket), + 'B', new ItemStack(Blocks.iron_bars)); //Quartz Pillar GameRegistry.addRecipe(new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.QUARTZ_PILLAR.ordinal()), diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java index 176200aec..20f7ce775 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java @@ -7,6 +7,7 @@ import ellpeck.actuallyadditions.config.ConfigValues; import ellpeck.actuallyadditions.items.InitItems; import ellpeck.actuallyadditions.items.metalists.TheDusts; import ellpeck.actuallyadditions.items.metalists.TheMiscItems; +import ellpeck.actuallyadditions.items.metalists.ThePotionRings; import ellpeck.actuallyadditions.items.metalists.TheSpecialDrops; import ellpeck.actuallyadditions.util.Util; import net.minecraft.init.Blocks; @@ -69,6 +70,9 @@ public class ItemCrafting{ if(ConfigValues.enabledMiscRecipes[TheMiscItems.MASHED_FOOD.ordinal()]) initMashedFoodRecipes(); + //Rings + initPotionRingRecipes(); + //Ingots from Dusts GameRegistry.addSmelting(new ItemStack(InitItems.itemDust, 1, TheDusts.IRON.ordinal()), new ItemStack(Items.iron_ingot), 1F); @@ -89,6 +93,22 @@ public class ItemCrafting{ } + public static void initPotionRingRecipes(){ + GameRegistry.addRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.RING.ordinal()), + "IGI", "GDG", "IGI", + 'G', new ItemStack(Items.gold_ingot), + 'I', new ItemStack(Items.iron_ingot), + 'D', new ItemStack(Items.glowstone_dust)); + + for(int i = 0; i < ThePotionRings.values().length; i++){ + if(ConfigValues.enablePotionRingRecipes[i]){ + ItemStack mainStack = ThePotionRings.values()[i].craftingItem; + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemPotionRing, 1, i), mainStack, mainStack, mainStack, mainStack, new ItemStack(Blocks.diamond_block), new ItemStack(Items.nether_wart), new ItemStack(Items.potionitem), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.RING.ordinal())); + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemPotionRingAdvanced, 1, i), new ItemStack(InitItems.itemPotionRing, 1, i), new ItemStack(Items.nether_star)); + } + } + } + public static void initMashedFoodRecipes(){ for(Object nextIterator : Item.itemRegistry){ if(nextIterator instanceof ItemFood){ diff --git a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java index 7ab1eea9a..bc58317c8 100644 --- a/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java +++ b/src/main/java/ellpeck/actuallyadditions/creative/CreativeTab.java @@ -32,6 +32,7 @@ public class CreativeTab extends CreativeTabs{ this.addBlock(InitBlocks.blockFurnaceDouble); this.addBlock(InitBlocks.blockFurnaceSolar); this.addBlock(InitBlocks.blockFishingNet); + this.addBlock(InitBlocks.blockHeatCollector); this.addBlock(InitBlocks.blockMisc); this.addBlock(InitBlocks.blockFeeder); @@ -59,6 +60,9 @@ public class CreativeTab extends CreativeTabs{ this.addItem(InitItems.itemAxeObsidian); this.addItem(InitItems.itemShovelObsidian); this.addItem(InitItems.itemHoeObsidian); + + this.addItem(InitItems.itemPotionRing); + this.addItem(InitItems.itemPotionRingAdvanced); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java b/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java index 42fba23ef..12e46eb73 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java +++ b/src/main/java/ellpeck/actuallyadditions/event/RenderPlayerEventAA.java @@ -1,7 +1,7 @@ package ellpeck.actuallyadditions.event; +import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import ellpeck.actuallyadditions.blocks.render.ModelFurnaceSolar; import ellpeck.actuallyadditions.gadget.ModelStandardBlock; import ellpeck.actuallyadditions.gadget.ModelTorch; import ellpeck.actuallyadditions.gadget.RenderSpecial; @@ -11,35 +11,36 @@ import java.util.UUID; public class RenderPlayerEventAA{ - private RenderSpecial ellpeckRender = new RenderSpecial(new ModelStandardBlock("ESD")); + private RenderSpecial ellpeckRender = new RenderSpecial(new ModelStandardBlock("Ellpeck")); private RenderSpecial hoseRender = new RenderSpecial(new ModelTorch()); - private RenderSpecial paktoRender = new RenderSpecial(new ModelStandardBlock("Derp")); - private RenderSpecial glenRender = new RenderSpecial(new ModelFurnaceSolar()); + private RenderSpecial paktoRender = new RenderSpecial(new ModelStandardBlock("Pakto")); + private RenderSpecial glenRender = new RenderSpecial(new ModelStandardBlock("Glenthor")); - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.HIGHEST) public void RenderPlayerEvent(RenderPlayerEvent.Pre event){ - //Ellpeck - if(event.entityPlayer.getUniqueID().equals(UUID.fromString("3f9f4a94-95e3-40fe-8895-e8e3e84d1468"))){ - ellpeckRender.render(0.3F, 1F); - return; - } + if(!event.entityPlayer.isInvisible()){ + //Ellpeck + if(event.entityPlayer.getUniqueID().equals(UUID.fromString("3f9f4a94-95e3-40fe-8895-e8e3e84d1468"))){ + ellpeckRender.render(event.entityPlayer, event.partialRenderTick, 0.3F, 1F); + return; + } - //Paktosan - if(event.entityPlayer.getUniqueID().equals(UUID.fromString("0bac71ad-9156-487e-9ade-9c5b57274b23"))){ - paktoRender.render(0.3F, 1F); - return; - } + //Paktosan + if(event.entityPlayer.getUniqueID().equals(UUID.fromString("0bac71ad-9156-487e-9ade-9c5b57274b23"))){ + paktoRender.render(event.entityPlayer, event.partialRenderTick, 0.3F, 1F); + return; + } - //TwoOfEight - if(event.entityPlayer.getUniqueID().equals(UUID.fromString("a57d2829-9711-4552-a7de-ee800802f643"))){ - glenRender.render(0.3F, 1F); - return; - } + //TwoOfEight + if(event.entityPlayer.getUniqueID().equals(UUID.fromString("a57d2829-9711-4552-a7de-ee800802f643"))){ + glenRender.render(event.entityPlayer, event.partialRenderTick, 0.3F, 1F); + return; + } - //dqmhose - if(event.entityPlayer.getUniqueID().equals(UUID.fromString("cb7b293a-5031-484e-b5be-b4f2f4e92726"))){ - hoseRender.render(0.5F, 1.25F); + //dqmhose + if(event.entityPlayer.getUniqueID().equals(UUID.fromString("cb7b293a-5031-484e-b5be-b4f2f4e92726"))){ + hoseRender.render(event.entityPlayer, event.partialRenderTick, 0.5F, 1.25F); + } } } - } diff --git a/src/main/java/ellpeck/actuallyadditions/gadget/ModelTorch.java b/src/main/java/ellpeck/actuallyadditions/gadget/ModelTorch.java index 548328e4f..c9193955a 100644 --- a/src/main/java/ellpeck/actuallyadditions/gadget/ModelTorch.java +++ b/src/main/java/ellpeck/actuallyadditions/gadget/ModelTorch.java @@ -22,6 +22,6 @@ public class ModelTorch extends ModelBaseAA{ @Override public String getName(){ - return "modelTorch"; + return "modelHose"; } } diff --git a/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java b/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java index 0addb0ada..cbcba3fdb 100644 --- a/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java +++ b/src/main/java/ellpeck/actuallyadditions/gadget/RenderSpecial.java @@ -1,42 +1,55 @@ package ellpeck.actuallyadditions.gadget; import ellpeck.actuallyadditions.blocks.render.ModelBaseAA; -import ellpeck.actuallyadditions.blocks.render.ModelFurnaceSolar; import ellpeck.actuallyadditions.util.ModUtil; import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; import org.lwjgl.opengl.GL11; public class RenderSpecial{ - private double bobbing; - private double rotation; + private double lastTimeForBobbing; ModelBaseAA theModel; ResourceLocation theTexture; public RenderSpecial(ModelBaseAA model){ this.theModel = model; - this.theTexture = new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/blocks/models/" + (model instanceof ModelFurnaceSolar ? "" : "special/") + this.theModel.getName() + ".png"); + this.theTexture = new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/blocks/models/special/" + this.theModel.getName() + ".png"); } - public void render(float size, float offsetUp){ + public void render(EntityPlayer player, float renderTick, float size, float offsetUp){ + int bobHeight = 70; + double rotationModifier = 3; - if(bobbing >= 0.5) bobbing = 0; - else bobbing+=0.01; - - if(rotation >= 360) rotation = 0; - else rotation+=1; + long time = player.worldObj.getTotalWorldTime(); + if(time-bobHeight >= lastTimeForBobbing){ + this.lastTimeForBobbing = time; + } GL11.glPushMatrix(); - GL11.glTranslatef(0F, offsetUp, 0F); + + if(player != Minecraft.getMinecraft().thePlayer){ + Vec3 clientPos = Minecraft.getMinecraft().thePlayer.getPosition(renderTick); + Vec3 playerPos = player.getPosition(renderTick); + GL11.glTranslated(playerPos.xCoord-clientPos.xCoord, playerPos.yCoord-clientPos.yCoord+1.6225, playerPos.zCoord-clientPos.zCoord); + } + + GL11.glTranslated(0F, offsetUp+0.15D, 0F); + GL11.glRotatef(180F, 1.0F, 0.0F, 1.0F); GL11.glScalef(size, size, size); - if(bobbing <= 0.25)GL11.glTranslated(0, bobbing, 0); - else GL11.glTranslated(0, 0.5 - bobbing, 0); + if(!(time-(bobHeight/2) < lastTimeForBobbing)){ + GL11.glTranslated(0, ((double)time-this.lastTimeForBobbing)/100, 0); + } + else{ + GL11.glTranslated(0, -((double)time-lastTimeForBobbing)/100+(double)bobHeight/100, 0); + } - GL11.glRotated(rotation, 0, 1, 0); + GL11.glRotated(time * rotationModifier, 0, 1, 0); Minecraft.getMinecraft().renderEngine.bindTexture(theTexture); theModel.render(0.0625F); diff --git a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java index f03124c42..4b6d7a67b 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java @@ -22,6 +22,9 @@ public class InitItems{ public static Item itemLeafBlower; public static Item itemLeafBlowerAdvanced; + public static Item itemPotionRing; + public static Item itemPotionRingAdvanced; + public static Item itemPickaxeEmerald; public static Item itemAxeEmerald; public static Item itemShovelEmerald; @@ -64,6 +67,12 @@ public class InitItems{ itemLeafBlowerAdvanced = new ItemLeafBlower(true); ItemUtil.register(itemLeafBlowerAdvanced); + itemPotionRing = new ItemPotionRing(false); + ItemUtil.register(itemPotionRing); + + itemPotionRingAdvanced = new ItemPotionRing(true); + ItemUtil.register(itemPotionRingAdvanced); + itemPickaxeEmerald = new ItemPickaxeAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemPickaxeEmerald", EnumRarity.rare); itemAxeEmerald = new ItemAxeAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemAxeEmerald", EnumRarity.rare); itemShovelEmerald = new ItemShovelAA(InitItemMaterials.toolMaterialEmerald, new ItemStack(Items.emerald), "itemShovelEmerald", EnumRarity.rare); diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java b/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java new file mode 100644 index 000000000..1b217d314 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemPotionRing.java @@ -0,0 +1,121 @@ +package ellpeck.actuallyadditions.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.items.metalists.ThePotionRings; +import ellpeck.actuallyadditions.util.*; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +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.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemPotionRing extends Item implements IName{ + + public static final ThePotionRings[] allRings = ThePotionRings.values(); + + private boolean isAdvanced; + + public ItemPotionRing(boolean isAdvanced){ + this.setHasSubtypes(true); + this.setMaxStackSize(1); + this.isAdvanced = isAdvanced; + } + + @Override + @SuppressWarnings("unchecked") + public void onUpdate(ItemStack stack, World world, Entity player, int par4, boolean par5){ + super.onUpdate(stack, world, player, par4, par5); + + if(player instanceof EntityPlayer){ + EntityPlayer thePlayer = (EntityPlayer)player; + ItemStack equippedStack = ((EntityPlayer)player).getCurrentEquippedItem(); + + ThePotionRings effect = ThePotionRings.values()[stack.getItemDamage()]; + if(!effect.needsWaitBeforeActivating || !thePlayer.isPotionActive(effect.effectID)){ + if(!((ItemPotionRing)stack.getItem()).isAdvanced){ + if(equippedStack != null && stack.isItemEqual(equippedStack)){ + thePlayer.addPotionEffect(new PotionEffect(effect.effectID, effect.activeTime, effect.normalAmplifier, true)); + } + } + else thePlayer.addPotionEffect(new PotionEffect(effect.effectID, effect.activeTime, effect.advancedAmplifier, true)); + } + } + } + + @Override + public String getName(){ + return this.isAdvanced ? "itemPotionRingAdvanced" : "itemPotionRing"; + } + + @Override + public int getMetadata(int damage){ + return damage; + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return allRings[stack.getItemDamage()].rarity; + } + + @SuppressWarnings("all") + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list){ + for(int j = 0; j < allRings.length; j++){ + list.add(new ItemStack(this, 1, j)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName() + allRings[stack.getItemDamage()].name; + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ + if(KeyUtil.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + ".desc.1")); + list.add(StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + "." + this.getName() + ".desc.2")); + if(stack.getItemDamage() == ThePotionRings.SATURATION.ordinal()){ + list.add(StringUtil.RED + StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".itemPotionRing.desc.off.1")); + list.add(StringUtil.RED + StatCollector.translateToLocal("tooltip." + ModUtil.MOD_ID_LOWER + ".itemPotionRing.desc.off.2")); + } + } + else list.add(ItemUtil.shiftForInfo()); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass){ + return allRings[stack.getItemDamage()].color; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public String getItemStackDisplayName(ItemStack stack){ + String standardName = StatCollector.translateToLocal(this.getUnlocalizedName() + ".name"); + String name = allRings[stack.getItemDamage()].getName(); + String effect = StatCollector.translateToLocal("effect." + ModUtil.MOD_ID_LOWER + "." + name.substring(0, 1).toLowerCase() + name.substring(1) + ".name"); + return standardName + " " + effect; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java index 4ba6712e8..7e7c84d91 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/metalists/TheMiscItems.java @@ -10,7 +10,8 @@ public enum TheMiscItems implements IName{ KNIFE_BLADE("KnifeBlade", EnumRarity.common), KNIFE_HANDLE("KnifeHandle", EnumRarity.common), DOUGH("Dough", EnumRarity.common), - QUARTZ("BlackQuartz", EnumRarity.epic); + QUARTZ("BlackQuartz", EnumRarity.epic), + RING("Ring", EnumRarity.uncommon); public final String name; public final EnumRarity rarity; diff --git a/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java b/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java new file mode 100644 index 000000000..26cd4c2b6 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/metalists/ThePotionRings.java @@ -0,0 +1,61 @@ +package ellpeck.actuallyadditions.items.metalists; + +import ellpeck.actuallyadditions.util.IName; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; + +public enum ThePotionRings implements IName{ + + SPEED("Speed", 8171462, 1, 0, 3, 10, false, EnumRarity.uncommon, new ItemStack(Items.sugar)), + //TODO Slowness + HASTE("Haste", 14270531, 3, 0, 3, 10, false, EnumRarity.epic, new ItemStack(Items.repeater)), + //TODO Mining Fatigue + STRENGTH("Strength", 9643043, 5, 0, 3, 10, false, EnumRarity.rare, new ItemStack(Items.blaze_powder)), + //Health (Not Happening) + //TODO Damage + JUMP_BOOST("JumpBoost", 7889559, 8, 0, 3, 10, false, EnumRarity.rare, new ItemStack(Blocks.piston)), + //TODO Nausea + REGEN("Regen", 13458603, 10, 0, 3, 50, true, EnumRarity.rare, new ItemStack(Items.ghast_tear)), + RESISTANCE("Resistance", 10044730, 11, 0, 3, 10, false, EnumRarity.epic, new ItemStack(Items.slime_ball)), + FIRE_RESISTANCE("FireResistance", 14981690, 12, 0, 0, 10, false, EnumRarity.uncommon, new ItemStack(Items.magma_cream)), + WATER_BREATHING("WaterBreathing", 3035801, 13, 0, 0, 10, false, EnumRarity.rare, new ItemStack(Items.fish, 1, 3)), + INVISIBILITY("Invisibility", 8356754, 14, 0, 0, 10, false, EnumRarity.epic, new ItemStack(Items.fermented_spider_eye)), + //TODO Blindness + NIGHT_VISION("NightVision", 2039713, 16, 0, 0, 300, false, EnumRarity.rare, new ItemStack(Items.golden_carrot)), + //TODO Hunger + //TODO Weakness + //TODO Poison + //TODO Withering + //Health Boost (Not Happening) + //Absorption (Not Happening) + SATURATION("Saturation", 16262179, 23, 0, 3, 10, false, EnumRarity.epic, new ItemStack(Items.cooked_beef)); + + public final String name; + public final int color; + public final EnumRarity rarity; + public final int effectID; + public final int normalAmplifier; + public final int advancedAmplifier; + public final int activeTime; + public final boolean needsWaitBeforeActivating; + public final ItemStack craftingItem; + + ThePotionRings(String name, int color, int effectID, int normalAmplifier, int advancedAmplifier, int activeTime, boolean needsWaitBeforeActivating, EnumRarity rarity, ItemStack craftingItem){ + this.name = name; + this.color = color; + this.rarity = rarity; + this.effectID = effectID; + this.normalAmplifier = normalAmplifier; + this.advancedAmplifier = advancedAmplifier; + this.activeTime = activeTime; + this.needsWaitBeforeActivating = needsWaitBeforeActivating; + this.craftingItem = craftingItem; + } + + @Override + public String getName(){ + return this.name; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java index 41dc14b35..dfb3aac43 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityBase.java @@ -37,6 +37,7 @@ public class TileEntityBase extends TileEntity{ GameRegistry.registerTileEntity(TileEntityInputter.class, ModUtil.MOD_ID_LOWER + ":tileEntityInputter"); GameRegistry.registerTileEntity(TileEntityFishingNet.class, ModUtil.MOD_ID_LOWER + ":tileEntityFishingNet"); GameRegistry.registerTileEntity(TileEntityFurnaceSolar.class, ModUtil.MOD_ID_LOWER + ":tileEntityFurnaceSolar"); + GameRegistry.registerTileEntity(TileEntityHeatCollector.class, ModUtil.MOD_ID_LOWER + ":tileEntityHeatCollector"); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java index e58f9ec02..289440488 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityFurnaceSolar.java @@ -12,38 +12,42 @@ public class TileEntityFurnaceSolar extends TileEntityBase{ if(worldObj.canBlockSeeTheSky(xCoord, yCoord, zCoord) && worldObj.isDaytime()){ TileEntity tileBelow = TileEntityInputter.getTileEntityFromSide(1, worldObj, xCoord, yCoord, zCoord); - if(tileBelow instanceof TileEntityFurnace){ - TileEntityFurnace furnaceBelow = (TileEntityFurnace)tileBelow; - int burnTimeBefore = furnaceBelow.furnaceBurnTime; - furnaceBelow.furnaceBurnTime = 42; - furnaceBelow.currentItemBurnTime = 42; - if(burnTimeBefore == 0){ - BlockFurnace.updateFurnaceBlockState(true, this.worldObj, furnaceBelow.xCoord, furnaceBelow.yCoord, furnaceBelow.zCoord); - } - return; - } + givePowerTo(tileBelow); + } + } + } - if(tileBelow instanceof TileEntityFurnaceDouble){ - TileEntityFurnaceDouble doubleBelow = (TileEntityFurnaceDouble)tileBelow; - int coalTimeBefore = doubleBelow.coalTime; - doubleBelow.coalTime = 42; - doubleBelow.coalTimeLeft = 42; - if(coalTimeBefore == 0){ - int metaBefore = worldObj.getBlockMetadata(doubleBelow.xCoord, doubleBelow.yCoord, doubleBelow.zCoord); - worldObj.setBlockMetadataWithNotify(doubleBelow.xCoord, doubleBelow.yCoord, doubleBelow.zCoord, metaBefore+4, 2); - } - return; - } + public static void givePowerTo(TileEntity tile){ + if(tile instanceof TileEntityFurnace){ + TileEntityFurnace furnaceBelow = (TileEntityFurnace)tile; + int burnTimeBefore = furnaceBelow.furnaceBurnTime; + furnaceBelow.furnaceBurnTime = 42; + furnaceBelow.currentItemBurnTime = 42; + if(burnTimeBefore == 0){ + BlockFurnace.updateFurnaceBlockState(true, tile.getWorldObj(), furnaceBelow.xCoord, furnaceBelow.yCoord, furnaceBelow.zCoord); + } + return; + } - if(tileBelow instanceof TileEntityGrinder){ - TileEntityGrinder grinderBelow = (TileEntityGrinder)tileBelow; - int coalTimeBefore = grinderBelow.coalTime; - grinderBelow.coalTime = 42; - grinderBelow.coalTimeLeft = 42; - if(coalTimeBefore == 0){ - worldObj.setBlockMetadataWithNotify(grinderBelow.xCoord, grinderBelow.yCoord, grinderBelow.zCoord, 1, 2); - } - } + if(tile instanceof TileEntityFurnaceDouble){ + TileEntityFurnaceDouble doubleBelow = (TileEntityFurnaceDouble)tile; + int coalTimeBefore = doubleBelow.coalTime; + doubleBelow.coalTime = 42; + doubleBelow.coalTimeLeft = 42; + if(coalTimeBefore == 0){ + int metaBefore = tile.getWorldObj().getBlockMetadata(doubleBelow.xCoord, doubleBelow.yCoord, doubleBelow.zCoord); + tile.getWorldObj().setBlockMetadataWithNotify(doubleBelow.xCoord, doubleBelow.yCoord, doubleBelow.zCoord, metaBefore+4, 2); + } + return; + } + + if(tile instanceof TileEntityGrinder){ + TileEntityGrinder grinderBelow = (TileEntityGrinder)tile; + int coalTimeBefore = grinderBelow.coalTime; + grinderBelow.coalTime = 42; + grinderBelow.coalTimeLeft = 42; + if(coalTimeBefore == 0){ + tile.getWorldObj().setBlockMetadataWithNotify(grinderBelow.xCoord, grinderBelow.yCoord, grinderBelow.zCoord, 1, 2); } } } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java new file mode 100644 index 000000000..f1b5c3e98 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityHeatCollector.java @@ -0,0 +1,65 @@ +package ellpeck.actuallyadditions.tile; + +import ellpeck.actuallyadditions.config.ConfigValues; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.Random; + +public class TileEntityHeatCollector extends TileEntityBase{ + + private int randomChance = ConfigValues.heatCollectorRandomChance; + private int blocksNeeded = ConfigValues.heatCollectorBlocksNeeded; + + @Override + public void updateEntity(){ + if(!worldObj.isRemote){ + ArrayList blocksAround = new ArrayList(); + + for(int i = 1; i <= 5; i++){ + ChunkCoordinates coords = getBlockFromSide(i, xCoord, yCoord, zCoord); + if(coords != null){ + Block block = worldObj.getBlock(coords.posX, coords.posY, coords.posZ); + if(block != null && block.getMaterial() == Material.lava && worldObj.getBlockMetadata(coords.posX, coords.posY, coords.posZ) == 0){ + blocksAround.add(i); + } + } + } + + if(blocksAround.size() >= blocksNeeded){ + TileEntity tileAbove = TileEntityInputter.getTileEntityFromSide(0, worldObj, xCoord, yCoord, zCoord); + + TileEntityFurnaceSolar.givePowerTo(tileAbove); + + Random rand = new Random(); + if(rand.nextInt(randomChance) == 0){ + int randomSide = blocksAround.get(rand.nextInt(blocksAround.size())); + breakBlockAtSide(randomSide, worldObj, xCoord, yCoord, zCoord); + } + } + } + } + + public static ChunkCoordinates getBlockFromSide(int side, int x, int y, int z){ + if(side == 0) return new ChunkCoordinates(x, y + 1, z); + if(side == 1) return new ChunkCoordinates(x, y - 1, z); + if(side == 2) return new ChunkCoordinates(x, y, z - 1); + if(side == 3) return new ChunkCoordinates(x - 1, y, z); + if(side == 4) return new ChunkCoordinates(x, y, z + 1); + if(side == 5) return new ChunkCoordinates(x + 1, y, z); + else return null; + } + + public static void breakBlockAtSide(int side, World world, int x, int y, int z){ + if(side == 0) world.setBlockToAir(x, y + 1, z); + if(side == 1) world.setBlockToAir(x, y - 1, z); + if(side == 2) world.setBlockToAir(x, y, z - 1); + if(side == 3) world.setBlockToAir(x - 1, y, z); + if(side == 4) world.setBlockToAir(x, y, z + 1); + if(side == 5) world.setBlockToAir(x + 1, y, z); + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java b/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java index 74892fe40..6be15ffe3 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java +++ b/src/main/java/ellpeck/actuallyadditions/util/ModUtil.java @@ -5,7 +5,7 @@ import org.apache.logging.log4j.Logger; public class ModUtil{ - public static final String VERSION = "1.7.10-0.0.2.3"; + public static final String VERSION = "1.7.10-0.0.3.2"; public static final String MOD_ID = "ActuallyAdditions"; public static final String NAME = "Actually Additions"; diff --git a/src/main/java/ellpeck/actuallyadditions/util/Util.java b/src/main/java/ellpeck/actuallyadditions/util/Util.java index 80f06406d..64e5b464a 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/Util.java +++ b/src/main/java/ellpeck/actuallyadditions/util/Util.java @@ -15,7 +15,7 @@ public class Util{ } public static void registerEvent(Object o){ - FMLCommonHandler.instance().bus().register(o); MinecraftForge.EVENT_BUS.register(o); + FMLCommonHandler.instance().bus().register(o); } } \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index fc171cbe9..b881c0a2a 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -13,6 +13,7 @@ tile.actuallyadditions.blockGrinderDouble.name=Double Crusher tile.actuallyadditions.blockFurnaceDouble.name=Double Furnace tile.actuallyadditions.blockFishingNet.name=Fishing Net tile.actuallyadditions.blockFurnaceSolar.name=Solar Panel +tile.actuallyadditions.blockHeatCollector.name=Heat Collector tile.actuallyadditions.blockInputter.name=ESD tile.actuallyadditions.blockInputter.add.0.name=Ellpeck's Slot Device @@ -36,6 +37,7 @@ item.actuallyadditions.itemMiscPaperCone.name=Paper Cone item.actuallyadditions.itemMiscKnifeBlade.name=Knife Blade item.actuallyadditions.itemMiscKnifeHandle.name=Knife Handle item.actuallyadditions.itemMiscBlackQuartz.name=Black Quartz +item.actuallyadditions.itemMiscRing.name=Ring item.actuallyadditions.itemLeafBlower.name=Leaf Blower item.actuallyadditions.itemLeafBlowerAdvanced.name=Advanced Leaf Blower @@ -69,6 +71,9 @@ item.actuallyadditions.itemFoodCarrotJuice.name=Carrot Juice item.actuallyadditions.itemFoodPumpkinStew.name=Pumpkin Stew item.actuallyadditions.itemFoodCheese.name=Cheese +item.actuallyadditions.itemPotionRing.name=Ring of +item.actuallyadditions.itemPotionRingAdvanced.name=Advanced Ring of + item.actuallyadditions.itemSpecialUnknownSubstance.name=Unknown Substance item.actuallyadditions.itemSpecialSolidifiedExperience.name=Solidified Experience item.actuallyadditions.itemSpecialBloodFragment.name=Blood Fragment @@ -113,6 +118,9 @@ tooltip.actuallyadditions.blockInputter.desc.4=-Side to Output to and Input from tooltip.actuallyadditions.blockInputter.desc.5=-Slot in the other Inventory to Output to and Input from tooltip.actuallyadditions.blockFishingNet.desc=Catches Fish automatically when placed above Water tooltip.actuallyadditions.blockFurnaceSolar.desc=Powers Furnaces and Crushers below it in Daylight +tooltip.actuallyadditions.blockHeatCollector.desc.1=Powers Furnaces and Crushers above it +tooltip.actuallyadditions.blockHeatCollector.desc.2=Needs a bunch of Lava around it +tooltip.actuallyadditions.blockHeatCollector.desc.3=Occasionally steals the Lava. Watch out! tooltip.actuallyadditions.itemMiscMashedFood.desc=Used to make Fertilizer tooltip.actuallyadditions.itemFertilizer.desc=Om nom nom. Don't eat it. Made in a Compost. @@ -121,6 +129,15 @@ tooltip.actuallyadditions.itemMiscPaperCone.desc=Used to store foodstuffs! tooltip.actuallyadditions.itemMiscKnifeBlade.desc=Sharp like a tooth! A whale's tooth! tooltip.actuallyadditions.itemMiscKnifeHandle.desc=Fits comfortably in your hand. tooltip.actuallyadditions.itemMiscBlackQuartz.desc=Used in the Quartz Enchanter! +tooltip.actuallyadditions.itemMiscRing.desc=Used for crafting Effect Rings + +tooltip.actuallyadditions.itemPotionRing.desc.1=Gives Potion Effect of Level 1 +tooltip.actuallyadditions.itemPotionRing.desc.2=Needs to be held in Hand +tooltip.actuallyadditions.itemPotionRing.desc.off.1=Crafting Recipe of this particular Potion Effect is turned OFF by default +tooltip.actuallyadditions.itemPotionRing.desc.off.2=as it is extremely overpowered! Turn it on in the Config File if needed. + +tooltip.actuallyadditions.itemPotionRingAdvanced.desc.1=Gives Potion Effect of a High Level +tooltip.actuallyadditions.itemPotionRingAdvanced.desc.2=Can be anywhere in the Inventory tooltip.actuallyadditions.itemLeafBlower.desc.1=Destroys Grass and Flowers around you tooltip.actuallyadditions.itemLeafBlowerAdvanced.desc.1=Destroys Grass, Flowers and Leaves around you @@ -211,4 +228,16 @@ info.actuallyadditions.gui.west=West info.actuallyadditions.gui.all=All info.actuallyadditions.gui.slot=Slot info.actuallyadditions.gui.put=Put -info.actuallyadditions.gui.pull=Pull \ No newline at end of file +info.actuallyadditions.gui.pull=Pull + +effect.actuallyadditions.speed.name=Speed +effect.actuallyadditions.haste.name=Haste +effect.actuallyadditions.strength.name=Strength +effect.actuallyadditions.jumpBoost.name=Jump Boost +effect.actuallyadditions.regen.name=Regeneration +effect.actuallyadditions.resistance.name=Resistance +effect.actuallyadditions.fireResistance.name=Fire Resistance +effect.actuallyadditions.waterBreathing.name=Water Breathing +effect.actuallyadditions.invisibility.name=Invisibility +effect.actuallyadditions.nightVision.name=Night Vision +effect.actuallyadditions.saturation.name=Saturation \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorBottom.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorBottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4473aff9275af41e30e97a0a3b93f0777ecff904 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#KC_%48$a`H-7=t%Y-UJAiF1B#Zfaf$kjuc}T$GwvlA5AWo>`Ki;O^-gkfN8$ z4itay>EaloaenGV!@R==Jg)V+jEjyleN$V%(=%`4+3?r8M$g0|m-;%p1vaphBzRr# z65KMUW4-&w*RPXf!D0UP7HgTe~DWM4f20D@s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorSide.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorSide.png new file mode 100644 index 0000000000000000000000000000000000000000..54c117a616439adaf9f05594bb1f3102e1c2269e GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#KC>JnzwyHW&l5l)+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9Vp)8>EaloasF+PA=eQHjyWs5d6t|n|1|y2e(p7!UKbrbD5O{3DDpC|E0N1RF#X0h z-_X!fnd5rPGMOe6mz5hEZ`R{5|7dQLG@$gP`m=Z2QzK{0?C8@`V#r#%c58>l zrYS*6O*5mjU9LzTaDN%?;q|i0>HVQIf{L$q$t7Pux?VPA-t+D)%Y^ghe`W2{Sg2CI RT`ULWU{6;+mvv4FO#mh3U^)N* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorTop.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockHeatCollectorTop.png new file mode 100644 index 0000000000000000000000000000000000000000..068d3a908d73742a40026c39e503f1828dfe1d20 GIT binary patch literal 523 zcmV+m0`&cfP) zQK_>jopTVo5R$-9l`FW&%HE-7Nv0sYUL%cv!x`XxaQKI`+wDRKAq4OJRCHYjU>Js! zl8A`NRG1I~-mMUV``>Unom3S-N{N~0GyvzlpVNKcU*7EjEG&(sK3s2`XTsjx(D(h- z@7srPN51Qfhf0*V`v81Q1AasemKW zQXgeJuD8tGNFy&|=EG_;!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPW6yKyYOfu~3n4>4#n)=kQ$nksS#@OODr>fmTeoBQDS}vdeP2NJa zfq{ub0YpqV|6kC7fw79c!aktZk{xIu3|NR3GE1zsnQ${rGY%x?>FVdQ&MBb@09KAZ AM*si- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelFurnaceSolar.png b/src/main/resources/assets/actuallyadditions/textures/blocks/models/modelFurnaceSolar.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7871c3f1bb421b0931207479c0a9f49b6d3fe4 GIT binary patch literal 1146 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiTorchBox.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiTorchBox.png new file mode 100644 index 0000000000000000000000000000000000000000..6712947b3b372e05eaf1ce6181edc287a647d19e GIT binary patch literal 1836 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)Sij2q3Wbbx{qC9V-A!TD(=<%vb93~dIox?sjWt- z3=B+@JY5_^D&pSWI+!KxDByarGv)7pb^k>_B4zhTxri19KhNXJGTg$S%%Us%yzHxff>}}d zi;eLG^9lW;@ZSBu&c?*vDq((NeImR!zIfkun5&UJ@a6BZ?OB(3CR9%keSFvN*{e&- zq!sdStv)vW=U!f*u^^!ET#p;VVqjSCUTrz)$~U+J^#k4ei|NGO*Q-9(nL|R!e|C7U ze8&4+nBl-chcOvyx9<#{oz`H>#E@WiU@h|ln|bH&E@Nx>d}4F?ia+n`ng0AVzp?DR sbNICnC-yQ;uryEak-ar*5fL%+ig0*ZH# zbg?MxZ~bhOzBTG$pLA&G()WiHStiC_toFZN$`lY9YGmxh!BoKga-{~tjdsQ*xwk{6 zsjfOzaq+{p&Yn32-}+9o&Tl?GyIj2YOpk=Jq1%;4tAoFec+US|m(0PoO>TwOs#9lA zYkqq8rb@WdBA)*cL!Qyh6Gb~!j_uGr@r|prDLj#bO@eWTq^9b!%bLr)zEzxE*1q~V z&*t?Hn`O?VZ4S9^s^oOpQK$!8;-MT+OLG}_)Usv|~%rc^UqO%k1f`LL3C9V-A!TD(= z<%vb93~dIox?sjWt-KsCEOT^vI!{F50PwV$r)NjRpVz`0`8s(QH>q*eR~SuI3@U@Wm0X l1S!Xz!jjHQGZ`f$7?OQv9#i_X-x}x(22WQ%mvv4FO#pydc*Xz# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/items/itemMiscRing.png b/src/main/resources/assets/actuallyadditions/textures/items/itemMiscRing.png new file mode 100644 index 0000000000000000000000000000000000000000..4d27341ed89c1f2990c85a0fcbab3a08dc8b8ba3 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPYS>FMGa zV&Q*w;#pn?2a%R|RU!7?R|i~~_4vFNu)1cj2>(_+|6ZtbMoQB4+4*Iyf5TJf_1t?{ z8pGh6o_t^D+OM#SVl21BT7Sf~Fs9EuGcU4Z{Zhu|)i!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&os5wC>5xt+0(@_ z#KQmV#M_(=20X5t|Fg+1kuK@^_wBmqD)B0XjO^Nm3WXap=4h|_J6*u(>(#vTjv7lt zF8mC-5a$vV^;P_tS%jLzmv3T!xb25wnzk@^>>UragSkNGFnGH9xvX!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPX{&eO#) z#KM1R;7P&53IdBgW-S)5TEMff<}OobPG_W6(_?ZG%}mKXnh)00MkpO*7u{8{cF|e~Ze2#7dBPd%-e>-OcsFz3VWslTTeo=` zY-egH=I*}mPjAK6dE8a+^Y8bse=xu4xhPw1h3F0Y#+Ce;|7{yS9KXw|tJ=VIW5IXB ve+Rm@d3=#dwpQA_wB*+L2^S}Ca`e&6S3j3^P6