From 3f7098107674e34dfeb235373ac98034c483e66a Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 7 Mar 2015 02:23:31 +0100 Subject: [PATCH] Almost ready to release for Beta! Crafting, Textures, In- and Output etc. done! --- build.gradle | 2 +- .../SomePrettyRandomStuff.java | 9 +- .../achievement/AchievementEvent.java | 83 -------- .../achievement/AchievementSPRS.java | 2 +- .../blocks/BlockCompost.java | 63 +++++- .../blocks/BlockFeeder.java | 51 ++++- .../blocks/BlockFurnaceDouble.java | 192 ++++++++++++++++++ .../blocks/BlockGiantChest.java | 45 +++- .../blocks/BlockGrinder.java | 147 ++++++++++++++ .../blocks/BlockMisc.java | 12 +- .../blocks/InitBlocks.java | 24 ++- .../blocks/metalists/TheMiscBlocks.java | 13 +- .../blocks/render/ModelBaseSPRS.java | 14 ++ .../blocks/render/ModelCompost.java | 46 +++++ .../blocks/render/RenderItems.java | 74 +++++++ .../blocks/render/RenderTileEntity.java | 28 +++ .../config/ConfigValues.java | 79 +++++-- .../config/ConfigurationHandler.java | 6 +- .../crafting/BlockCrafting.java | 65 ++++++ .../crafting/FoodCrafting.java | 132 ++++++++++++ .../crafting/GrinderCrafting.java | 54 +++++ .../crafting/InitCrafting.java | 159 +-------------- .../crafting/ItemCrafting.java | 45 ++++ .../crafting/MiscCrafting.java | 39 ++++ .../crafting/ToolCrafting.java | 79 +++++++ .../event/CraftEvent.java | 46 +++++ .../event/InitEvents.java | 15 ++ .../event/KilledEvent.java | 30 +++ .../event/SmeltEvent.java | 16 ++ .../inventory/ContainerCrafter.java | 95 +++++++++ .../inventory/ContainerFurnaceDouble.java | 89 ++++++++ .../inventory/ContainerGrinder.java | 95 +++++++++ .../inventory/GuiCrafter.java | 28 +++ .../inventory/GuiFeeder.java | 2 +- .../inventory/GuiFurnaceDouble.java | 54 +++++ .../inventory/GuiGrinder.java | 59 ++++++ .../inventory/GuiHandler.java | 41 +++- .../inventory/slot/SlotOutput.java | 17 ++ .../items/InitItems.java | 43 ++-- .../items/ItemCrafterOnAStick.java | 61 ++++++ .../someprettyrandomstuff/items/ItemDust.java | 82 ++++++++ .../items/ItemFertilizer.java | 8 +- .../items/ItemFoods.java | 12 +- .../items/ItemKnife.java | 16 +- .../someprettyrandomstuff/items/ItemMisc.java | 8 +- .../items/ItemSpecialDrop.java | 79 +++++++ .../items/metalists/TheDusts.java | 28 +++ .../items/metalists/TheFoods.java | 37 ++-- .../items/metalists/TheMiscItems.java | 21 +- .../items/metalists/TheSpecialDrops.java | 41 ++++ .../items/tools/ItemAxeSPRS.java | 12 +- .../items/tools/ItemHoeSPRS.java | 12 +- .../items/tools/ItemPickaxeSPRS.java | 12 +- .../items/tools/ItemShovelSPRS.java | 12 +- .../items/tools/ItemSwordSPRS.java | 12 +- .../material/InitItemMaterials.java | 7 +- .../oredict/OreDictRegistry.java | 17 ++ .../proxy/ClientProxy.java | 12 +- .../recipe/GrinderRecipes.java | 54 +++++ .../tile/TileEntityBase.java | 14 +- .../tile/TileEntityCompost.java | 22 ++ .../tile/TileEntityFeeder.java | 16 ++ .../tile/TileEntityFurnaceDouble.java | 155 ++++++++++++++ .../tile/TileEntityGiantChest.java | 20 ++ .../tile/TileEntityGrinder.java | 186 +++++++++++++++++ .../tile/TileEntityInventoryBase.java | 17 +- .../util/IInformation.java | 7 + .../someprettyrandomstuff/util/Util.java | 41 +++- .../someprettyrandomstuff/lang/en_US.lang | 55 +++-- .../textures/blocks/blockCompostBottom.png | Bin 243 -> 0 bytes .../blocks/blockCompostFertilizer.png | Bin 324 -> 0 bytes .../textures/blocks/blockCompostInside.png | Bin 347 -> 0 bytes .../blocks/blockCompostMashedFood.png | Bin 422 -> 0 bytes .../textures/blocks/blockCompostSide.png | Bin 339 -> 0 bytes .../textures/blocks/blockCompostTop.png | Bin 312 -> 0 bytes .../textures/blocks/blockFurnaceDouble.png | Bin 0 -> 575 bytes .../blocks/blockFurnaceDoubleFront.png | Bin 0 -> 530 bytes .../textures/blocks/blockFurnaceDoubleOn.png | Bin 0 -> 588 bytes .../textures/blocks/blockFurnaceDoubleTop.png | Bin 0 -> 708 bytes .../textures/blocks/blockGrinder.png | Bin 0 -> 586 bytes .../textures/blocks/blockGrinderBottom.png | Bin 0 -> 575 bytes .../textures/blocks/blockGrinderDouble.png | Bin 0 -> 607 bytes .../textures/blocks/blockGrinderOn.png | Bin 0 -> 447 bytes .../textures/blocks/blockGrinderTop.png | Bin 0 -> 446 bytes .../textures/blocks/models/modelCompost.png | Bin 0 -> 1301 bytes .../textures/gui/guiFurnaceDouble.png | Bin 0 -> 2592 bytes .../textures/gui/guiGrinder.png | Bin 0 -> 2392 bytes .../textures/gui/guiGrinderDouble.png | Bin 0 -> 2547 bytes .../textures/items/blockCompost.png | Bin 375 -> 0 bytes .../textures/items/itemCrafterOnAStick.png | Bin 0 -> 486 bytes .../textures/items/itemDust.png | Bin 0 -> 268 bytes .../textures/items/itemMiscCompressedIron.png | Bin 270 -> 0 bytes .../textures/items/itemMiscRefinedIron.png | Bin 277 -> 0 bytes .../items/itemMiscRefinedRedstone.png | Bin 275 -> 0 bytes .../textures/items/itemMiscSteel.png | Bin 282 -> 0 bytes .../someprettyrandomstuff/textures/logo.png | Bin 0 -> 18868 bytes src/main/resources/mcmod.info | 21 ++ 97 files changed, 2802 insertions(+), 388 deletions(-) delete mode 100644 src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementEvent.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFurnaceDouble.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGrinder.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelBaseSPRS.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelCompost.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderItems.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderTileEntity.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/BlockCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/FoodCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/GrinderCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/ItemCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/MiscCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/crafting/ToolCrafting.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/event/CraftEvent.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/event/InitEvents.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/event/KilledEvent.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/event/SmeltEvent.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerCrafter.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerFurnaceDouble.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerGrinder.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiCrafter.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFurnaceDouble.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiGrinder.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/inventory/slot/SlotOutput.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/items/ItemCrafterOnAStick.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/items/ItemDust.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/items/ItemSpecialDrop.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheDusts.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheSpecialDrops.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/oredict/OreDictRegistry.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/recipe/GrinderRecipes.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFurnaceDouble.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGrinder.java create mode 100644 src/main/java/ellpeck/someprettyrandomstuff/util/IInformation.java delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostBottom.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostFertilizer.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostInside.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostMashedFood.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostSide.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostTop.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDouble.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDoubleFront.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDoubleOn.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDoubleTop.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinder.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderBottom.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderDouble.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderOn.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderTop.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/blocks/models/modelCompost.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/gui/guiFurnaceDouble.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/gui/guiGrinder.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/gui/guiGrinderDouble.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/blockCompost.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemCrafterOnAStick.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemDust.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscCompressedIron.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscRefinedIron.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscRefinedRedstone.png delete mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscSteel.png create mode 100644 src/main/resources/assets/someprettyrandomstuff/textures/logo.png create mode 100644 src/main/resources/mcmod.info diff --git a/build.gradle b/build.gradle index 7f20ac7a7..ab61651e8 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.8-0.0.1" +version = "1.7.10-0.0.1" group = "ellpeck.someprettyrandomstuff" archivesBaseName = "SomePrettyRandomStuff" diff --git a/src/main/java/ellpeck/someprettyrandomstuff/SomePrettyRandomStuff.java b/src/main/java/ellpeck/someprettyrandomstuff/SomePrettyRandomStuff.java index 5a58c6b30..63abdb1ed 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/SomePrettyRandomStuff.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/SomePrettyRandomStuff.java @@ -7,16 +7,17 @@ import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import ellpeck.someprettyrandomstuff.achievement.AchievementEvent; import ellpeck.someprettyrandomstuff.achievement.InitAchievements; import ellpeck.someprettyrandomstuff.blocks.InitBlocks; import ellpeck.someprettyrandomstuff.config.ConfigurationHandler; import ellpeck.someprettyrandomstuff.crafting.InitCrafting; +import ellpeck.someprettyrandomstuff.event.InitEvents; import ellpeck.someprettyrandomstuff.gen.OreGen; import ellpeck.someprettyrandomstuff.inventory.GuiHandler; import ellpeck.someprettyrandomstuff.items.InitItems; import ellpeck.someprettyrandomstuff.material.InitItemMaterials; import ellpeck.someprettyrandomstuff.network.PacketHandler; +import ellpeck.someprettyrandomstuff.oredict.OreDictRegistry; import ellpeck.someprettyrandomstuff.proxy.IProxy; import ellpeck.someprettyrandomstuff.tile.TileEntityBase; import ellpeck.someprettyrandomstuff.util.Util; @@ -30,7 +31,6 @@ public class SomePrettyRandomStuff{ @SidedProxy(clientSide = "ellpeck.someprettyrandomstuff.proxy.ClientProxy", serverSide = "ellpeck.someprettyrandomstuff.proxy.ServerProxy") public static IProxy proxy; - @SuppressWarnings("unused") @EventHandler() public void preInit(FMLPreInitializationEvent event){ Util.logInfo("Starting PreInitialization Phase..."); @@ -40,6 +40,7 @@ public class SomePrettyRandomStuff{ InitItemMaterials.init(); InitBlocks.init(); InitItems.init(); + OreDictRegistry.init(); proxy.preInit(); Util.logInfo("PreInitialization Finished."); @@ -51,11 +52,11 @@ public class SomePrettyRandomStuff{ Util.logInfo("Starting Initialization Phase..."); InitAchievements.init(); - InitCrafting.init(); GuiHandler.init(); OreGen.init(); TileEntityBase.init(); - AchievementEvent.init(); + InitEvents.init(); + InitCrafting.init(); proxy.init(); Util.logInfo("Initialization Finished."); diff --git a/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementEvent.java b/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementEvent.java deleted file mode 100644 index 8406db280..000000000 --- a/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementEvent.java +++ /dev/null @@ -1,83 +0,0 @@ -package ellpeck.someprettyrandomstuff.achievement; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent; -import ellpeck.someprettyrandomstuff.blocks.InitBlocks; -import ellpeck.someprettyrandomstuff.items.InitItems; -import ellpeck.someprettyrandomstuff.items.metalists.TheFoods; -import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; -import ellpeck.someprettyrandomstuff.util.Util; -import net.minecraft.item.Item; - -public class AchievementEvent{ - - public static class SmeltEvent{ - @SubscribeEvent - public void onSmeltedEvent(PlayerEvent.ItemSmeltedEvent event){ - if(event.smelting.getItem() == InitItems.itemFoods && event.smelting.getItemDamage() == TheFoods.BAGUETTE.ordinal()){ - event.player.addStat(InitAchievements.achievementSmeltBaguette, 1); - } - } - } - - public static class CraftEvent{ - @SubscribeEvent - public void onCraftedEvent(PlayerEvent.ItemCraftedEvent event){ - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.DOUGH.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftDough, 1); - } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.MASHED_FOOD.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftMashedFood, 1); - } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.KNIFE_BLADE.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftKnifeBlade, 1); - } - if(event.crafting.getItem() == InitItems.itemKnife){ - event.player.addStat(InitAchievements.achievementCraftKnife, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.SUBMARINE_SANDWICH.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftSubSandwich, 1); - } - if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.PAPER_CONE.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftPaperCone, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRY.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFrenchFry, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRIES.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFrenchFries, 1); - } - if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FISH_N_CHIPS.ordinal()){ - event.player.addStat(InitAchievements.achievementCraftFishNChips, 1); - } - if(event.crafting.getItem()== Item.getItemFromBlock(InitBlocks.blockCompost)){ - event.player.addStat(InitAchievements.achievementCraftCompost, 1); - } - } - } - - public static class PickupEvent{ - @SubscribeEvent - public void onItemPickupEvent(PlayerEvent.ItemPickupEvent event){ - - } - } - - public static class LoginEvent{ - @SubscribeEvent - public void onPlayerLoggingInEvent(PlayerEvent.PlayerLoggedInEvent event){ - - } - } - - public static void init(){ - Util.logInfo("Initializing Events..."); - - FMLCommonHandler.instance().bus().register(new SmeltEvent()); - FMLCommonHandler.instance().bus().register(new CraftEvent()); - FMLCommonHandler.instance().bus().register(new PickupEvent()); - FMLCommonHandler.instance().bus().register(new LoginEvent()); - } - -} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementSPRS.java index a73161caa..457a11d09 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/achievement/AchievementSPRS.java @@ -7,7 +7,7 @@ import net.minecraft.stats.Achievement; public class AchievementSPRS extends Achievement{ public AchievementSPRS(String name, int x, int y, ItemStack displayStack, Achievement hasToHaveBefore){ - super("achievement." + Util.MOD_ID_LOWER + "." + name, name, x, y, displayStack, hasToHaveBefore); + super("achievement." + Util.MOD_ID_LOWER +"." + Util.MOD_ID_LOWER + "." + name, Util.MOD_ID_LOWER + "." + name, x, y, displayStack, hasToHaveBefore); InitAchievements.achievementList.add(this); if(hasToHaveBefore == null) this.initIndependentStat(); this.registerStat(); diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockCompost.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockCompost.java index 9d2302a50..d41e8b54a 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockCompost.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockCompost.java @@ -1,6 +1,8 @@ package ellpeck.someprettyrandomstuff.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import ellpeck.someprettyrandomstuff.achievement.InitAchievements; import ellpeck.someprettyrandomstuff.creative.CreativeTab; import ellpeck.someprettyrandomstuff.items.ItemFertilizer; @@ -11,11 +13,17 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import java.util.List; @@ -25,7 +33,7 @@ public class BlockCompost extends BlockContainerBase implements IName{ public BlockCompost(){ super(Material.wood); this.setCreativeTab(CreativeTab.instance); - this.setBlockName(Util.getNamePrefix() + this.getName()); + this.setBlockName(Util.setUnlocalizedName(this)); this.setHarvestLevel("axe", 0); this.setHardness(1.0F); this.setStepSound(soundTypeWood); @@ -69,9 +77,21 @@ public class BlockCompost extends BlockContainerBase implements IName{ this.setBlockBoundsForItemRender(); } + @Override + public IIcon getIcon(int side, int metadata){ + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = Blocks.planks.getIcon(0, 0); + } + @Override public void setBlockBoundsForItemRender(){ - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + float f = 1.0F/16.0F; + this.setBlockBounds(f, 0.0F, f, 1.0F-f, 1.0F, 1.0F-f); } @Override @@ -104,4 +124,43 @@ public class BlockCompost extends BlockContainerBase implements IName{ public String getName(){ return "blockCompost"; } + + 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.uncommon; + } + + @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(Util.isShiftPressed()){ + list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc.1")); + //TODO Remove second info + list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc.2")); + } + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFeeder.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFeeder.java index 95f8e6b74..6926ad3fc 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFeeder.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFeeder.java @@ -6,23 +6,30 @@ import ellpeck.someprettyrandomstuff.SomePrettyRandomStuff; import ellpeck.someprettyrandomstuff.creative.CreativeTab; import ellpeck.someprettyrandomstuff.inventory.GuiHandler; import ellpeck.someprettyrandomstuff.tile.TileEntityFeeder; +import ellpeck.someprettyrandomstuff.util.IInformation; import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; 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; -public class BlockFeeder extends BlockContainerBase implements IName{ +import java.util.List; + +public class BlockFeeder extends BlockContainerBase implements IName, IInformation{ private IIcon topIcon; public BlockFeeder(){ super(Material.wood); - this.setBlockName(Util.getNamePrefix() + this.getName()); + this.setBlockName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); this.setHarvestLevel("axe", 0); this.setHardness(1.0F); @@ -66,4 +73,44 @@ public class BlockFeeder extends BlockContainerBase implements IName{ public String getName(){ return "blockFeeder"; } + + @Override + public String[] getInformationString(){ + return new String[]{"This is a thing and it is a test and bla bla bla"}; + } + + 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(Util.isShiftPressed()) list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc")); + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFurnaceDouble.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFurnaceDouble.java new file mode 100644 index 000000000..4570b3379 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockFurnaceDouble.java @@ -0,0 +1,192 @@ +package ellpeck.someprettyrandomstuff.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.SomePrettyRandomStuff; +import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.inventory.GuiHandler; +import ellpeck.someprettyrandomstuff.tile.TileEntityFurnaceDouble; +import ellpeck.someprettyrandomstuff.util.IName; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +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.MathHelper; +import net.minecraft.util.StatCollector; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; +import java.util.Random; + +public class BlockFurnaceDouble extends BlockContainerBase implements IName{ + + private IIcon topIcon; + private IIcon onIcon; + private IIcon frontIcon; + + public BlockFurnaceDouble(){ + super(Material.wood); + this.setBlockName(Util.setUnlocalizedName(this)); + this.setCreativeTab(CreativeTab.instance); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + this.setTickRandomly(true); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z){ + super.onBlockAdded(world, x, y, z); + + if (!world.isRemote){ + Block block1 = world.getBlock(x, y, z-1); + Block block2 = world.getBlock(x, y, z+1); + Block block3 = world.getBlock(x-1, y, z); + Block block4 = world.getBlock(x+1, y, z); + + int metaToSet = 1; + if (block1.func_149730_j() && !block2.func_149730_j()) metaToSet = 0; + if (block2.func_149730_j() && !block1.func_149730_j()) metaToSet = 1; + if (block3.func_149730_j() && !block4.func_149730_j()) metaToSet = 2; + if (block4.func_149730_j() && !block3.func_149730_j()) metaToSet = 3; + + world.setBlockMetadataWithNotify(x, y, z, metaToSet, 2); + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack){ + int rotation = MathHelper.floor_double((double)(player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (rotation == 0) world.setBlockMetadataWithNotify(x, y, z, 0, 2); + if (rotation == 1) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if (rotation == 2) world.setBlockMetadataWithNotify(x, y, z, 1, 2); + if (rotation == 3) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityFurnaceDouble(); + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z){ + return world.getBlockMetadata(x, y, z) > 3 ? 12 : 0; + } + + @Override + public IIcon getIcon(int side, int meta){ + if(side == 1) return this.topIcon; + if(side == meta+2 && meta <= 3) return this.frontIcon; + else if(side == meta-2 && meta > 3) return this.onIcon; + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); + this.topIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName() + "Top"); + this.onIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName() + "On"); + this.frontIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName() + "Front"); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){ + if(!world.isRemote){ + TileEntityFurnaceDouble furnace = (TileEntityFurnaceDouble)world.getTileEntity(x, y, z); + if (furnace != null) player.openGui(SomePrettyRandomStuff.instance, GuiHandler.FURNACE_DOUBLE_ID, world, x, y, z); + return true; + } + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand){ + int meta = world.getBlockMetadata(x, y, z); + + if (meta > 3){ + float f = (float)x + 0.5F; + float f1 = (float)y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; + float f2 = (float)z + 0.5F; + float f3 = 0.52F; + float f4 = rand.nextFloat() * 0.6F - 0.3F; + + if(meta == 6){ + world.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + } + if(meta == 7){ + world.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + } + if(meta == 4){ + world.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); + } + if(meta == 5){ + world.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); + } + + for(int i = 0; i < 5; i++){ + world.spawnParticle("smoke", (double)x+0.5F, (double)y + 1.0F, (double)z+0.5F, 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6){ + this.dropInventory(world, x, y, z); + super.breakBlock(world, x, y, z, block, par6); + } + + @Override + public String getName(){ + return "blockFurnaceDouble"; + } + + 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(Util.isShiftPressed()) list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc")); + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGiantChest.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGiantChest.java index 8ecd9f79a..db6879e77 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGiantChest.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGiantChest.java @@ -12,17 +12,23 @@ 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 BlockGiantChest extends BlockContainerBase implements IName{ private IIcon topIcon; public BlockGiantChest(){ super(Material.wood); - this.setBlockName(Util.getNamePrefix() + this.getName()); + this.setBlockName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); this.setHarvestLevel("axe", 0); this.setHardness(1.0F); @@ -66,4 +72,41 @@ public class BlockGiantChest extends BlockContainerBase implements IName{ public String getName(){ return "blockGiantChest"; } + + 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.uncommon; + } + + @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(Util.isShiftPressed()) list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc")); + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } + + } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGrinder.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGrinder.java new file mode 100644 index 000000000..5bfb0411e --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockGrinder.java @@ -0,0 +1,147 @@ +package ellpeck.someprettyrandomstuff.blocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.SomePrettyRandomStuff; +import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.inventory.GuiHandler; +import ellpeck.someprettyrandomstuff.tile.TileEntityGrinder; +import ellpeck.someprettyrandomstuff.util.IName; +import ellpeck.someprettyrandomstuff.util.Util; +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.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; +import java.util.Random; + +public class BlockGrinder extends BlockContainerBase implements IName{ + + private IIcon topIcon; + private IIcon onIcon; + private IIcon bottomIcon; + + private boolean isDouble; + + public BlockGrinder(boolean isDouble){ + super(Material.wood); + this.isDouble = isDouble; + this.setBlockName(Util.setUnlocalizedName(this)); + this.setCreativeTab(CreativeTab.instance); + this.setHarvestLevel("pickaxe", 0); + this.setHardness(1.0F); + this.setStepSound(soundTypeStone); + this.setTickRandomly(true); + } + + @Override + public TileEntity createNewTileEntity(World world, int par2){ + return new TileEntityGrinder(this.isDouble); + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z){ + return world.getBlockMetadata(x, y, z) == 1 ? 12 : 0; + } + + @Override + public IIcon getIcon(int side, int meta){ + if(side == 1 && meta != 1) return this.topIcon; + if(side == 1) return this.onIcon; + if(side == 0) return this.bottomIcon; + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand){ + int meta = world.getBlockMetadata(x, y, z); + + if (meta == 1){ + for(int i = 0; i < 5; i++){ + double xRand = new Random().nextDouble()/0.75D - 0.5D; + double zRand = new Random().nextDouble()/0.75D - 0.5D; + world.spawnParticle("crit", (double)x+0.4F, (double)y + 0.8F, (double)z+0.4F, xRand, 0.5D, zRand); + } + world.spawnParticle("smoke", (double)x+0.5F, (double)y + 1.0F, (double)z+0.5F, 0.0D, 0.0D, 0.0D); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconReg){ + this.blockIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); + this.topIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":blockGrinderTop"); + this.onIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":blockGrinderOn"); + this.bottomIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":blockGrinderBottom"); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){ + if(!world.isRemote){ + TileEntityGrinder grinder = (TileEntityGrinder)world.getTileEntity(x, y, z); + if (grinder != null) player.openGui(SomePrettyRandomStuff.instance, this.isDouble ? GuiHandler.GRINDER_DOUBLE_ID : GuiHandler.GRINDER_ID, world, x, y, z); + return true; + } + return true; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6){ + this.dropInventory(world, x, y, z); + super.breakBlock(world, x, y, z, block, par6); + } + + @Override + public String getName(){ + return isDouble ? "blockGrinderDouble" : "blockGrinder"; + } + + 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 ((BlockGrinder)theBlock).isDouble ? EnumRarity.epic : 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(Util.isShiftPressed()){ + for(int i = 0; i < (((BlockGrinder)theBlock).isDouble ? 3 : 4); i++){ + list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)theBlock).getName() + ".desc." + (i+1))); + } + } + else list.add(Util.shiftForInfo()); + } + + @Override + public int getMetadata(int damage){ + return damage; + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockMisc.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockMisc.java index c6347062a..2843c45ad 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockMisc.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/BlockMisc.java @@ -13,6 +13,7 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -29,7 +30,7 @@ public class BlockMisc extends Block implements IName{ public BlockMisc(){ super(Material.rock); - this.setBlockName(Util.getNamePrefix() + this.getName()); + this.setBlockName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -74,17 +75,22 @@ public class BlockMisc extends Block implements IName{ return "blockMisc"; } - public static class ItemBlockMisc extends ItemBlock{ + public static class TheItemBlock extends ItemBlock{ private Block theBlock; - public ItemBlockMisc(Block block){ + public TheItemBlock(Block block){ super(block); this.theBlock = block; this.setHasSubtypes(true); this.setMaxDamage(0); } + @Override + public EnumRarity getRarity(ItemStack stack){ + return allMiscBlocks[stack.getItemDamage()].rarity; + } + @Override public String getUnlocalizedName(ItemStack stack){ return this.getUnlocalizedName() + allMiscBlocks[stack.getItemDamage()].getName(); diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/InitBlocks.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/InitBlocks.java index 54d718cce..3d8f43b95 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/InitBlocks.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/InitBlocks.java @@ -1,8 +1,5 @@ package ellpeck.someprettyrandomstuff.blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.block.Block; @@ -13,19 +10,32 @@ public class InitBlocks{ public static Block blockFeeder; public static Block blockGiantChest; + public static Block blockGrinder; + public static Block blockGrinderDouble; + public static Block blockFurnaceDouble; + public static void init(){ Util.logInfo("Initializing Blocks..."); blockCompost = new BlockCompost(); - GameRegistry.registerBlock(blockCompost, DefaultItemBlock.class, ((IName)blockCompost).getName()); + Util.register(blockCompost, BlockCompost.TheItemBlock.class); blockMisc = new BlockMisc(); - GameRegistry.registerBlock(blockMisc, BlockMisc.ItemBlockMisc.class, ((IName)blockMisc).getName()); + Util.register(blockMisc, BlockMisc.TheItemBlock.class); blockFeeder = new BlockFeeder(); - GameRegistry.registerBlock(blockFeeder, DefaultItemBlock.class, ((IName)blockFeeder).getName()); + Util.register(blockFeeder, BlockFeeder.TheItemBlock.class); blockGiantChest = new BlockGiantChest(); - GameRegistry.registerBlock(blockGiantChest, DefaultItemBlock.class, ((IName)blockGiantChest).getName()); + Util.register(blockGiantChest, BlockGiantChest.TheItemBlock.class); + + blockGrinder = new BlockGrinder(false); + Util.register(blockGrinder, BlockGrinder.TheItemBlock.class); + + blockGrinderDouble = new BlockGrinder(true); + Util.register(blockGrinderDouble, BlockGrinder.TheItemBlock.class); + + blockFurnaceDouble = new BlockFurnaceDouble(); + Util.register(blockFurnaceDouble, BlockFurnaceDouble.TheItemBlock.class); } } \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/metalists/TheMiscBlocks.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/metalists/TheMiscBlocks.java index 933ec360d..ec7591d08 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/blocks/metalists/TheMiscBlocks.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/metalists/TheMiscBlocks.java @@ -1,18 +1,21 @@ package ellpeck.someprettyrandomstuff.blocks.metalists; import ellpeck.someprettyrandomstuff.util.IName; +import net.minecraft.item.EnumRarity; public enum TheMiscBlocks implements IName{ - QUARTZ_PILLAR("BlackQuartzPillar"), - QUARTZ_CHISELED("BlackQuartzChiseled"), - QUARTZ("BlackQuartz"), - ORE_QUARTZ("OreBlackQuartz"); + QUARTZ_PILLAR("BlackQuartzPillar", EnumRarity.rare), + QUARTZ_CHISELED("BlackQuartzChiseled", EnumRarity.rare), + QUARTZ("BlackQuartz", EnumRarity.rare), + ORE_QUARTZ("OreBlackQuartz", EnumRarity.epic); public final String name; + public final EnumRarity rarity; - private TheMiscBlocks(String name){ + private TheMiscBlocks(String name, EnumRarity rarity){ this.name = name; + this.rarity = rarity; } @Override diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelBaseSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelBaseSPRS.java new file mode 100644 index 000000000..1704b444e --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelBaseSPRS.java @@ -0,0 +1,14 @@ +package ellpeck.someprettyrandomstuff.blocks.render; + +import net.minecraft.client.model.ModelBase; + +public class ModelBaseSPRS extends ModelBase{ + + public void render(float f){ + + } + + public String getName(){ + return null; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelCompost.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelCompost.java new file mode 100644 index 000000000..4152cf357 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/ModelCompost.java @@ -0,0 +1,46 @@ +package ellpeck.someprettyrandomstuff.blocks.render; + +import net.minecraft.client.model.ModelRenderer; + +public class ModelCompost extends ModelBaseSPRS{ + + public ModelRenderer floor; + public ModelRenderer wallOne; + public ModelRenderer wallTwo; + public ModelRenderer wallThree; + public ModelRenderer wallFour; + + public ModelCompost(){ + this.textureWidth = 64; + this.textureHeight = 64; + this.wallThree = new ModelRenderer(this, 0, 0); + this.wallThree.setRotationPoint(-6.0F, 8.0F, 6.0F); + this.wallThree.addBox(0.0F, 0.0F, 0.0F, 12, 15, 1, 0.0F); + this.wallFour = new ModelRenderer(this, 0, 0); + this.wallFour.setRotationPoint(-6.0F, 8.0F, -7.0F); + this.wallFour.addBox(0.0F, 0.0F, 0.0F, 12, 15, 1, 0.0F); + this.wallOne = new ModelRenderer(this, 0, 0); + this.wallOne.setRotationPoint(-7.0F, 8.0F, -7.0F); + this.wallOne.addBox(0.0F, 0.0F, 0.0F, 1, 15, 14, 0.0F); + this.wallTwo = new ModelRenderer(this, 0, 0); + this.wallTwo.setRotationPoint(6.0F, 8.0F, -7.0F); + this.wallTwo.addBox(0.0F, 0.0F, 0.0F, 1, 15, 14, 0.0F); + this.floor = new ModelRenderer(this, 0, 0); + this.floor.setRotationPoint(-7.0F, 23.0F, -7.0F); + this.floor.addBox(0.0F, 0.0F, 0.0F, 14, 1, 14, 0.0F); + } + + @Override + public void render(float f){ + this.wallThree.render(f); + this.wallFour.render(f); + this.wallOne.render(f); + this.wallTwo.render(f); + this.floor.render(f); + } + + @Override + public String getName(){ + return "modelCompost"; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderItems.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderItems.java new file mode 100644 index 000000000..40fa7e57f --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderItems.java @@ -0,0 +1,74 @@ +package ellpeck.someprettyrandomstuff.blocks.render; + +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + +public class RenderItems implements IItemRenderer{ + + ModelBaseSPRS theModel; + ResourceLocation theTexture; + + public RenderItems(ModelBaseSPRS model){ + this.theModel = model; + this.theTexture = new ResourceLocation(Util.MOD_ID_LOWER, "textures/blocks/models/" + this.theModel.getName() + ".png"); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type){ + return true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper){ + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data){ + switch(type){ + case INVENTORY: + GL11.glPushMatrix(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-0.5F, -1.27F, 0.5F); + Minecraft.getMinecraft().renderEngine.bindTexture(theTexture); + theModel.render(0.0625F); + GL11.glPopMatrix(); + break; + + case EQUIPPED: + GL11.glPushMatrix(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.6F, -1.2F, -0.0F); + Minecraft.getMinecraft().renderEngine.bindTexture(theTexture); + theModel.render(0.0625F); + GL11.glPopMatrix(); + break; + + case EQUIPPED_FIRST_PERSON: + GL11.glPushMatrix(); + GL11.glScalef(1.2F, 1.2F, 1.2F); + GL11.glRotatef(180, 2F, -0F, 0.1F); + GL11.glTranslatef(1.5F, -1.2F, -0.3F); + Minecraft.getMinecraft().renderEngine.bindTexture(theTexture); + theModel.render(0.0625F); + GL11.glPopMatrix(); + break; + + default: + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.0F, -1.27F, 0.0F); + Minecraft.getMinecraft().renderEngine.bindTexture(theTexture); + theModel.render(0.0625F); + GL11.glPopMatrix(); + break; + } + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderTileEntity.java b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderTileEntity.java new file mode 100644 index 000000000..a6cf9c312 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/blocks/render/RenderTileEntity.java @@ -0,0 +1,28 @@ +package ellpeck.someprettyrandomstuff.blocks.render; + +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class RenderTileEntity extends TileEntitySpecialRenderer{ + + ModelBaseSPRS theModel; + + public RenderTileEntity(ModelBaseSPRS model){ + this.theModel = model; + } + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float par5){ + GL11.glPushMatrix(); + GL11.glTranslatef((float)x+0.5F, (float)y-0.5F, (float)z+0.5F); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.0F, -2.0F, 0.0F); + this.bindTexture(new ResourceLocation(Util.MOD_ID_LOWER, "textures/blocks/models/" + this.theModel.getName() + ".png")); + theModel.render(0.0625F); + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigValues.java b/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigValues.java index 0664203d3..fa8dbc600 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigValues.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigValues.java @@ -10,6 +10,12 @@ public class ConfigValues{ public static boolean[] enabledMiscRecipes = new boolean[TheMiscItems.values().length]; public static boolean enableCompostRecipe; public static boolean enableKnifeRecipe; + public static boolean enableCrusherRecipe; + public static boolean enableCrusherDoubleRecipe; + public static boolean enableFurnaceDoubleRecipe; + public static boolean enableGiantChestRecipe; + public static boolean enableFeederRecipe; + public static boolean enableCrafterRecipe; public static int tileEntityCompostAmountNeededToConvert; public static int tileEntityCompostConversionTimeNeeded; @@ -25,46 +31,79 @@ public class ConfigValues{ public static float toolEmeraldEfficiency; public static float toolEmeraldDamage; public static int toolEmeraldEnchantability; + public static boolean enableToolEmeraldRecipe; public static int toolObsidianHarvestLevel; public static int toolObsidianMaxUses; public static float toolObsidianEfficiency; public static float toolObsidianDamage; public static int toolObsidianEnchantability; + public static boolean enableToolObsidianRecipe; + public static int furnaceDoubleSmeltTime; + public static int grinderDoubleCrushTime; + public static int grinderCrushTime; + + public static boolean enableExperienceDrop; + public static boolean enableBloodDrop; + public static boolean enableHeartDrop; + public static boolean enableSubstanceDrop; + public static boolean enablePearlShardDrop; + public static boolean enableEmeraldShardDrop; public static void defineConfigValues(Configuration config){ for(int i = 0; i < enabledFoodRecipes.length; i++){ - enabledFoodRecipes[i] = config.getBoolean("isItemFood" + TheFoods.values()[i].name + "CraftingRecipeEnabled", ConfigurationHandler.CATEGORY_FOOD_CRAFTING, true, "If the Crafting Recipe for " + TheFoods.values()[i].name + " is Enabled"); + enabledFoodRecipes[i] = config.getBoolean(TheFoods.values()[i].name, ConfigurationHandler.CATEGORY_FOOD_CRAFTING, true, "If the Crafting Recipe for " + TheFoods.values()[i].name + " is Enabled"); } for(int i = 0; i < enabledMiscRecipes.length; i++){ - enabledMiscRecipes[i] = config.getBoolean("isItemMisc" + TheMiscItems.values()[i].name + "CraftingRecipeEnabled", ConfigurationHandler.CATEGORY_MISC_CRAFTING, true, "If the Crafting Recipe for " + TheMiscItems.values()[i].name + " is Enabled"); + if(i != TheMiscItems.QUARTZ.ordinal()){ + enabledMiscRecipes[i] = config.getBoolean(TheMiscItems.values()[i].name, ConfigurationHandler.CATEGORY_MISC_CRAFTING, true, "If the Crafting Recipe for " + TheMiscItems.values()[i].name + " is Enabled"); + } } - enableCompostRecipe = config.getBoolean("isCompostCraftingRecipeEnabled", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Compost is Enabled"); - enableKnifeRecipe = config.getBoolean("isKnifeCraftingRecipeEnabled", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for the Knife is Enabled"); + //TODO CHANGE TO BE TRUE BY DEFAULT + enableExperienceDrop = config.getBoolean("Solidified Experience", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Solidified Experience drops from Mobs"); + enableBloodDrop = config.getBoolean("Blood Fragments", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Blood Fragments drop from Mobs"); + enableHeartDrop = config.getBoolean("Heart Parts", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Heart Parts drop from Mobs"); + enableSubstanceDrop = config.getBoolean("Unknown Substance", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Unknown Substance drops from Mobs"); + enablePearlShardDrop = config.getBoolean("Ender Pearl Shard", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Ender Pearl Shard drops from Mobs"); + enableEmeraldShardDrop = config.getBoolean("Emerald Shard", ConfigurationHandler.CATEGORY_MOB_DROPS, false, "If the Emerald Shard drops from Mobs"); - tileEntityCompostAmountNeededToConvert = config.getInt("tileEntityCompostAmountNeededToConvert", ConfigurationHandler.CATEGORY_COMPOST_VALUES, 10, 1, 64, "How many items are needed in the Compost to convert to Fertilizer"); - tileEntityCompostConversionTimeNeeded = config.getInt("tileEntityCompostConversionTimeNeeded", ConfigurationHandler.CATEGORY_COMPOST_VALUES, 1000, 30, 10000, "How long the Compost needs to convert to Fertilizer"); + enableCompostRecipe = config.getBoolean("Compost", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Compost is Enabled"); + enableKnifeRecipe = config.getBoolean("Knife", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for the Knife is Enabled"); + enableCrusherDoubleRecipe = config.getBoolean("Double Crusher", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Double Crusher is Enabled"); + enableCrusherRecipe = config.getBoolean("Crusher", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Crusher is Enabled"); + enableFurnaceDoubleRecipe = config.getBoolean("Double Furnace", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Double Furnace is Enabled"); + enableGiantChestRecipe = config.getBoolean("Giant Chest", ConfigurationHandler.CATEGORY_BLOCKS_CRAFTING, true, "If the Crafting Recipe for the Giant Chest is Enabled"); + 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"); - tileEntityFeederReach = config.getInt("tileEntityFeederReach", ConfigurationHandler.CATEGORY_FEEDER_VALUES, 5, 1, 20, "The Radius of Action of the Feeder"); - tileEntityFeederTimeNeeded = config.getInt("tileEntityFeederTimeNeeded", ConfigurationHandler.CATEGORY_FEEDER_VALUES, 100, 50, 5000, "The time spent between feeding animals with the Feeder"); - tileEntityFeederThreshold = config.getInt("tileEntityFeederThreshold", ConfigurationHandler.CATEGORY_FEEDER_VALUES, 30, 3, 500, "How many animals need to be in the area for the Feeder to stop"); + 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"); - itemKnifeMaxDamage = config.getInt("itemKnifeMaxDamage", ConfigurationHandler.CATEGORY_ITEM_DAMAGE_VALUES, 100, 5, 5000, "How often the Knife can be crafted with"); + tileEntityFeederReach = config.getInt("Feeder: Reach", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 5, 1, 20, "The Radius of Action of the Feeder"); + tileEntityFeederTimeNeeded = config.getInt("Feeder: Time Needed", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 100, 50, 5000, "The time spent between feeding animals with the Feeder"); + tileEntityFeederThreshold = config.getInt("Feeder: Threshold", ConfigurationHandler.CATEGORY_MACHINE_VALUES, 30, 3, 500, "How many animals need to be in the area for the Feeder to stop"); + + itemKnifeMaxDamage = config.getInt("Knife: Max Uses", ConfigurationHandler.CATEGORY_TOOL_VALUES, 100, 5, 5000, "How often the Knife can be crafted with"); - toolEmeraldHarvestLevel = config.getInt("toolEmeraldHarvestLevel", ConfigurationHandler.CATEGORY_TOOL_VALUES, 3, 0, 3, "What Harvest Level Emerald Tools have (0 = Wood, 1 = Stone, 2 = Iron, 3 = Diamond)"); - toolEmeraldMaxUses = config.getInt("toolEmeraldMaxUses", ConfigurationHandler.CATEGORY_TOOL_VALUES, 2000, 50, 10000, "How often Emerald Tools can be used"); - toolEmeraldEfficiency = config.getFloat("toolEmeraldEfficiency", ConfigurationHandler.CATEGORY_TOOL_VALUES, 9.0F, 1.0F, 20.0F, "How fast Emerald Tools are"); - toolEmeraldDamage = config.getFloat("toolEmeraldDamage", ConfigurationHandler.CATEGORY_TOOL_VALUES, 5.0F, 0.1F, 50.0F, "How much damage an Emerald Tool deals"); - toolEmeraldEnchantability = config.getInt("toolEmeraldEnchantability", ConfigurationHandler.CATEGORY_TOOL_VALUES, 15, 1, 30, "How enchantable an Emerald Tool is"); + toolEmeraldHarvestLevel = config.getInt("Emerald: Harvest Level", ConfigurationHandler.CATEGORY_TOOL_VALUES, 3, 0, 3, "What Harvest Level Emerald Tools have (0 = Wood, 1 = Stone, 2 = Iron, 3 = Diamond)"); + toolEmeraldMaxUses = config.getInt("Emerald: Max Uses", ConfigurationHandler.CATEGORY_TOOL_VALUES, 2000, 50, 10000, "How often Emerald Tools can be used"); + toolEmeraldEfficiency = config.getFloat("Emerald: Efficiency", ConfigurationHandler.CATEGORY_TOOL_VALUES, 9.0F, 1.0F, 20.0F, "How fast Emerald Tools are"); + toolEmeraldDamage = config.getFloat("Emerald: Damage", ConfigurationHandler.CATEGORY_TOOL_VALUES, 5.0F, 0.1F, 50.0F, "How much damage an Emerald Tool deals"); + toolEmeraldEnchantability = config.getInt("Emerald: Enchantability", ConfigurationHandler.CATEGORY_TOOL_VALUES, 15, 1, 30, "How enchantable an Emerald Tool is"); + enableToolEmeraldRecipe = config.getBoolean("Emerald Tools", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for Emerald Tools is Enabled"); - toolObsidianHarvestLevel = config.getInt("toolObsidianHarvestLevel", ConfigurationHandler.CATEGORY_TOOL_VALUES, 3, 0, 3, "What Harvest Level Obsidian Tools have (0 = Wood, 1 = Stone, 2 = Iron, 3 = Diamond)"); - toolObsidianMaxUses = config.getInt("toolObsidianMaxUses", ConfigurationHandler.CATEGORY_TOOL_VALUES, 8000, 50, 20000, "How often Obsidian Tools can be used"); - toolObsidianEfficiency = config.getFloat("toolObsidianEfficiency", ConfigurationHandler.CATEGORY_TOOL_VALUES, 4.0F, 1.0F, 20.0F, "How fast Obsidian Tools are"); - toolObsidianDamage = config.getFloat("toolObsidianDamage", ConfigurationHandler.CATEGORY_TOOL_VALUES, 2.0F, 0.1F, 50.0F, "How much damage an Obsidian Tool deals"); - toolObsidianEnchantability = config.getInt("toolObsidianEnchantability", ConfigurationHandler.CATEGORY_TOOL_VALUES, 15, 1, 30, "How enchantable an Obsidian Tool is"); + toolObsidianHarvestLevel = config.getInt("Obsidian: Harvest Level", ConfigurationHandler.CATEGORY_TOOL_VALUES, 3, 0, 3, "What Harvest Level Obsidian Tools have (0 = Wood, 1 = Stone, 2 = Iron, 3 = Diamond)"); + toolObsidianMaxUses = config.getInt("Obsidian: Max Uses", ConfigurationHandler.CATEGORY_TOOL_VALUES, 8000, 50, 20000, "How often Obsidian Tools can be used"); + toolObsidianEfficiency = config.getFloat("Obsidian: Efficiency", ConfigurationHandler.CATEGORY_TOOL_VALUES, 4.0F, 1.0F, 20.0F, "How fast Obsidian Tools are"); + toolObsidianDamage = config.getFloat("Obsidian: Damage", ConfigurationHandler.CATEGORY_TOOL_VALUES, 2.0F, 0.1F, 50.0F, "How much damage an Obsidian Tool deals"); + toolObsidianEnchantability = config.getInt("Obsidian: Enchantability", ConfigurationHandler.CATEGORY_TOOL_VALUES, 15, 1, 30, "How enchantable an Obsidian Tool is"); + enableToolObsidianRecipe = config.getBoolean("Obsidian Tools", ConfigurationHandler.CATEGORY_ITEMS_CRAFTING, true, "If the Crafting Recipe for Obsidian Tools is Enabled"); + 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"); } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigurationHandler.java b/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigurationHandler.java index d9ed016b9..4db277db2 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigurationHandler.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/config/ConfigurationHandler.java @@ -9,14 +9,12 @@ public class ConfigurationHandler{ public static final String CATEGORY_FOOD_CRAFTING = "food crafting"; public static final String CATEGORY_MISC_CRAFTING = "misc crafting"; - public static final String CATEGORY_COMPOST_VALUES = "compost values"; public static final String CATEGORY_BLOCKS_CRAFTING = "block crafting"; public static final String CATEGORY_ITEMS_CRAFTING = "items crafting"; - public static final String CATEGORY_ITEM_DAMAGE_VALUES = "item damage values"; public static final String CATEGORY_TOOL_VALUES = "tool values"; - public static final String CATEGORY_FEEDER_VALUES = "feeder values"; + public static final String CATEGORY_MACHINE_VALUES = "machine values"; + public static final String CATEGORY_MOB_DROPS = "mob drops"; - public static Configuration config; public static void init(File configFile){ Util.logInfo("Grabbing Configurations..."); diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/BlockCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/BlockCrafting.java new file mode 100644 index 000000000..958e823a8 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/BlockCrafting.java @@ -0,0 +1,65 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.someprettyrandomstuff.blocks.InitBlocks; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class BlockCrafting{ + + public static void init(){ + + //Compost + if(ConfigValues.enableCompostRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockCompost), + "W W", "WFW", "WWW", + 'W', new ItemStack(Blocks.planks, 1, Util.WILDCARD), + 'F', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.MASHED_FOOD.ordinal())); + + //Crusher + if(ConfigValues.enableCrusherRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockGrinder), + "CFC", "CPC", "CFC", + 'C', new ItemStack(Blocks.cobblestone), + 'P', new ItemStack(Blocks.piston), + 'F', new ItemStack(Items.flint)); + + //Double Crusher + if(ConfigValues.enableCrusherDoubleRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockGrinderDouble), + "CCC", "RPR", "CCC", + 'C', new ItemStack(Blocks.cobblestone), + 'R', new ItemStack(InitBlocks.blockGrinder), + 'P', new ItemStack(Blocks.piston)); + + //Double Furnace + if(ConfigValues.enableFurnaceDoubleRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockFurnaceDouble), + "CCC", "RPR", "CCC", + 'C', new ItemStack(Blocks.cobblestone), + 'R', new ItemStack(Blocks.furnace), + 'P', new ItemStack(Items.brick)); + + //Feeder + if(ConfigValues.enableFeederRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockFeeder), + "WCW", "WHW", "WCW", + 'W', new ItemStack(Blocks.planks, 1, Util.WILDCARD), + 'C', new ItemStack(Items.golden_carrot), + 'H', new ItemStack(Items.wheat)); + + //Giant Chest + if(ConfigValues.enableGiantChestRecipe) + GameRegistry.addRecipe(new ItemStack(InitBlocks.blockGiantChest), + "CWC", "W W", "CWC", + 'C', new ItemStack(Blocks.chest), + 'W', new ItemStack(Blocks.planks, 1, Util.WILDCARD)); + + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/FoodCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/FoodCrafting.java new file mode 100644 index 000000000..29c03e1c2 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/FoodCrafting.java @@ -0,0 +1,132 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheFoods; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class FoodCrafting{ + + public static void init(){ + + //Baguette + if(ConfigValues.enabledFoodRecipes[TheFoods.BAGUETTE.ordinal()]) + GameRegistry.addSmelting(new ItemStack(InitItems.itemMisc, 1, + TheMiscItems.DOUGH.ordinal()), new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()), 1F); + + //Pizza + if(ConfigValues.enabledFoodRecipes[TheFoods.PIZZA.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.PIZZA.ordinal()), + "HKH", "MCF", " D ", + 'D', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), + 'M', new ItemStack(Blocks.brown_mushroom), + 'C', new ItemStack(Items.carrot), + 'F', new ItemStack(Items.cooked_fished, 1, Util.WILDCARD), + 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD), + 'H', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal())); + + //Hamburger + if(ConfigValues.enabledFoodRecipes[TheFoods.HAMBURGER.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.HAMBURGER.ordinal()), + "KT ", "CB ", " T ", + 'T', new ItemStack(InitItems.itemFoods, 1, TheFoods.TOAST.ordinal()), + 'C', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), + 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD), + 'B', new ItemStack(Items.cooked_beef)); + + //Big Cookie + if(ConfigValues.enabledFoodRecipes[TheFoods.BIG_COOKIE.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.BIG_COOKIE.ordinal()), + "DCD", "CDC", "DCD", + 'D', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), + 'C', new ItemStack(Items.dye, 1, 3)); + + //Sub Sandwich + if(ConfigValues.enabledFoodRecipes[TheFoods.SUBMARINE_SANDWICH.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.SUBMARINE_SANDWICH.ordinal()), + "KCP", "FB ", "PCP", + 'P', new ItemStack(Items.paper), + 'C', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), + 'F', new ItemStack(Items.cooked_fished, 1, Util.WILDCARD), + 'B', new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()), + 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD)); + + //French Fry + if(ConfigValues.enabledFoodRecipes[TheFoods.FRENCH_FRY.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal()), + new ItemStack(Items.baked_potato), + new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD)); + + //French Fries + if(ConfigValues.enabledFoodRecipes[TheFoods.FRENCH_FRIES.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRIES.ordinal()), + "FFF", " P ", + 'P', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), + 'F', new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal())); + + //Fish N Chips + if(ConfigValues.enabledFoodRecipes[TheFoods.FISH_N_CHIPS.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FISH_N_CHIPS.ordinal()), + "FIF", " P ", + 'I', new ItemStack(Items.cooked_fished, 1, Util.WILDCARD), + 'P', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), + 'F', new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal())); + + //Cheese + if(ConfigValues.enabledFoodRecipes[TheFoods.CHEESE.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), + new ItemStack(Items.milk_bucket)); + + //Pumpkin Stew + if(ConfigValues.enabledFoodRecipes[TheFoods.PUMPKIN_STEW.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.PUMPKIN_STEW.ordinal()), + "P", "B", + 'P', new ItemStack(Blocks.pumpkin), + 'B', new ItemStack(Items.bowl)); + + //Carrot Juice + if(ConfigValues.enabledFoodRecipes[TheFoods.CARROT_JUICE.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CARROT_JUICE.ordinal()), + new ItemStack(Items.glass_bottle), new ItemStack(Items.carrot), new ItemStack(InitItems.itemKnife)); + + //Spaghetti + if(ConfigValues.enabledFoodRecipes[TheFoods.SPAGHETTI.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.SPAGHETTI.ordinal()), + "NNN", " B ", + 'N', new ItemStack(InitItems.itemFoods, 1, TheFoods.NOODLE.ordinal()), + 'B', new ItemStack(Items.bowl)); + + //Noodle + if(ConfigValues.enabledFoodRecipes[TheFoods.NOODLE.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.NOODLE.ordinal()), + new ItemStack(Items.wheat), new ItemStack(InitItems.itemKnife)); + + //Chocolate + if(ConfigValues.enabledFoodRecipes[TheFoods.CHOCOLATE.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CHOCOLATE.ordinal()), + "C C", "CMC", "C C", + 'C', new ItemStack(Items.dye, 1, 3), + 'M', new ItemStack(Items.milk_bucket)); + + //Chocolate Cake + if(ConfigValues.enabledFoodRecipes[TheFoods.CHOCOLATE_CAKE.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CHOCOLATE_CAKE.ordinal()), + "MMM", "CCC", "EDS", + 'M', new ItemStack(Items.milk_bucket), + 'E', new ItemStack(Items.egg), + 'D', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), + 'S', new ItemStack(Items.sugar), + 'C', new ItemStack(Items.dye, 1, 3)); + + //Toast + if(ConfigValues.enabledFoodRecipes[TheFoods.TOAST.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 2, TheFoods.TOAST.ordinal()), + new ItemStack(Items.bread)); + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/GrinderCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/GrinderCrafting.java new file mode 100644 index 000000000..439470d9c --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/GrinderCrafting.java @@ -0,0 +1,54 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheDusts; +import ellpeck.someprettyrandomstuff.recipe.GrinderRecipes; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import org.apache.logging.log4j.Level; + +import java.util.ArrayList; + +public class GrinderCrafting{ + + public static void init(){ + + GrinderRecipes.instance().registerRecipe(new ItemStack(Blocks.iron_ore), new ItemStack(InitItems.itemDust, 2, TheDusts.IRON.ordinal()), new ItemStack(InitItems.itemDust, 1, TheDusts.GOLD.ordinal()), 10); + GrinderRecipes.instance().registerRecipe(new ItemStack(Blocks.redstone_ore), new ItemStack(Items.redstone, 10), null, 0); + GrinderRecipes.instance().registerRecipe(new ItemStack(Blocks.lapis_ore), new ItemStack(Items.dye, 15, 4), null, 0); + + registerFinally(); + } + + public static void registerFinally(){ + String[] names = OreDictionary.getOreNames(); + for(String name : names){ + if(name.contains("ore")){ + String nameOfOre = name.substring(3); + ArrayList allDusts = OreDictionary.getOres("dust" + nameOfOre); + if(allDusts != null && allDusts.size() > 0){ + ItemStack output = allDusts.get(0); + output.stackSize = 2; + ArrayList allOresOfName = OreDictionary.getOres(name); + if(allOresOfName != null && allOresOfName.size() > 0){ + for(ItemStack input : allOresOfName){ + if(GrinderRecipes.instance().getOutput(input, false) == null){ + + //Special Second Outputs + if(name.equals("oreNickel")) GrinderRecipes.instance().registerRecipe(input, output, OreDictionary.getOres("dustPlatinum").get(0), 10); + + else GrinderRecipes.instance().registerRecipe(input, output, null, 0); + } + } + } + else Util.SPRS_LOGGER.log(Level.ERROR, "Couldn't register Crusher Recipe! Didn't find Items registered as '" + name + "'! This shouldn't happen as there is something registered as '" + name + "' that doesn't exist!"); + } + else Util.SPRS_LOGGER.log(Level.WARN, "Couldn't register Crusher Recipe! An Item with OreDictionary Registry 'dust" + nameOfOre + "' doesn't exist! This is not an Error, just a bit sad :("); + } + + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/InitCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/InitCrafting.java index 3c5580311..e644b2f0e 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/crafting/InitCrafting.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/InitCrafting.java @@ -1,166 +1,19 @@ package ellpeck.someprettyrandomstuff.crafting; -import cpw.mods.fml.common.registry.GameRegistry; -import ellpeck.someprettyrandomstuff.blocks.InitBlocks; -import ellpeck.someprettyrandomstuff.config.ConfigValues; -import ellpeck.someprettyrandomstuff.items.InitItems; -import ellpeck.someprettyrandomstuff.items.metalists.TheFoods; -import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; import ellpeck.someprettyrandomstuff.util.Util; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; public class InitCrafting { public static void init(){ Util.logInfo("Initializing Crafting Recipes..."); - //Baguette - if(ConfigValues.enabledFoodRecipes[TheFoods.BAGUETTE.ordinal()]) - GameRegistry.addSmelting(new ItemStack(InitItems.itemMisc, 1, - TheMiscItems.DOUGH.ordinal()), new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()), 1F); + ItemCrafting.init(); + BlockCrafting.init(); + MiscCrafting.init(); + FoodCrafting.init(); + ToolCrafting.init(); + GrinderCrafting.init(); - //Dough - if(ConfigValues.enabledMiscRecipes[TheMiscItems.DOUGH.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 2, TheMiscItems.DOUGH.ordinal()), - new ItemStack(Items.wheat), new ItemStack(Items.wheat)); - - //Pizza - if(ConfigValues.enabledFoodRecipes[TheFoods.PIZZA.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.PIZZA.ordinal()), - "HKH", "MCF", " D ", - 'D', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), - 'M', new ItemStack(Blocks.brown_mushroom), - 'C', new ItemStack(Items.carrot), - 'F', new ItemStack(Items.fish, 1, Util.WILDCARD), - 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD), - 'H', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal())); - - //Hamburger - if(ConfigValues.enabledFoodRecipes[TheFoods.HAMBURGER.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.HAMBURGER.ordinal()), - "KT ", "CBS", " T ", - 'T', new ItemStack(InitItems.itemFoods, 1, TheFoods.TOAST.ordinal()), - 'C', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), - 'S', new ItemStack(Blocks.leaves, 1, Util.WILDCARD), - 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD), - 'B', new ItemStack(Items.cooked_beef)); - - //Big Cookie - if(ConfigValues.enabledFoodRecipes[TheFoods.BIG_COOKIE.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.BIG_COOKIE.ordinal()), - "DCD", "CDC", "DCD", - 'D', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), - 'C', new ItemStack(Items.dye, 1, 3)); - - //Sub Sandwich - if(ConfigValues.enabledFoodRecipes[TheFoods.SUBMARINE_SANDWICH.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.SUBMARINE_SANDWICH.ordinal()), - "KCP", "FBS", "PCP", - 'P', new ItemStack(Items.paper), - 'C', new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), - 'F', new ItemStack(Items.fish, 1, Util.WILDCARD), - 'B', new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()), - 'K', new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD), - 'S', new ItemStack(Blocks.leaves, 1, Util.WILDCARD)); - - //Paper Cone - if(ConfigValues.enabledMiscRecipes[TheMiscItems.PAPER_CONE.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), - "P P", " P ", - 'P', new ItemStack(Items.paper)); - - //French Fry - if(ConfigValues.enabledFoodRecipes[TheFoods.FRENCH_FRY.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal()), - new ItemStack(Items.baked_potato), - new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD)); - - //Knife Handle - if(ConfigValues.enabledMiscRecipes[TheMiscItems.KNIFE_HANDLE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_HANDLE.ordinal()), - new ItemStack(Items.stick), - new ItemStack(Items.slime_ball)); - - //Knife Blade - if(ConfigValues.enabledMiscRecipes[TheMiscItems.KNIFE_BLADE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), - new ItemStack(Items.iron_ingot), - new ItemStack(Items.slime_ball)); - - //Knife - if(ConfigValues.enableKnifeRecipe) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemKnife), - new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), - new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_HANDLE.ordinal())); - - //French Fries - if(ConfigValues.enabledFoodRecipes[TheFoods.FRENCH_FRIES.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRIES.ordinal()), - "FFF", " P ", - 'P', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), - 'F', new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal())); - - //Fish N Chips - if(ConfigValues.enabledFoodRecipes[TheFoods.FISH_N_CHIPS.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.FISH_N_CHIPS.ordinal()), - "FIF", " P ", - 'I', new ItemStack(Items.cooked_fished, 1, Util.WILDCARD), - 'P', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), - 'F', new ItemStack(InitItems.itemFoods, 1, TheFoods.FRENCH_FRY.ordinal())); - - //Compost - if(ConfigValues.enableCompostRecipe) - GameRegistry.addRecipe(new ItemStack(InitBlocks.blockCompost), - "W W", "WFW", "WWW", - 'W', new ItemStack(Blocks.planks, 1, Util.WILDCARD), - 'F', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.MASHED_FOOD.ordinal())); - - //Cheese - if(ConfigValues.enabledFoodRecipes[TheFoods.CHEESE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CHEESE.ordinal()), - new ItemStack(Items.milk_bucket)); - - //Pumpkin Stew - if(ConfigValues.enabledFoodRecipes[TheFoods.PUMPKIN_STEW.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.PUMPKIN_STEW.ordinal()), - "P", "B", - 'P', new ItemStack(Blocks.pumpkin), - 'B', new ItemStack(Items.bowl)); - - //Carrot Juice - if(ConfigValues.enabledFoodRecipes[TheFoods.CARROT_JUICE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.CARROT_JUICE.ordinal()), - new ItemStack(Items.glass_bottle), new ItemStack(Items.carrot), new ItemStack(InitItems.itemKnife)); - - //Spaghetti - if(ConfigValues.enabledFoodRecipes[TheFoods.SPAGHETTI.ordinal()]) - GameRegistry.addRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.SPAGHETTI.ordinal()), - "NNN", "B", - 'N', new ItemStack(InitItems.itemFoods, 1, TheFoods.NOODLE.ordinal()), - 'B', new ItemStack(Items.bowl)); - - //Noodle - if(ConfigValues.enabledFoodRecipes[TheFoods.NOODLE.ordinal()]) - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.NOODLE.ordinal()), - new ItemStack(Items.wheat), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.DOUGH.ordinal()), new ItemStack(InitItems.itemKnife)); - - //Mashed Food - if(ConfigValues.enabledMiscRecipes[TheMiscItems.MASHED_FOOD.ordinal()]) - initMashedFoodRecipes(); - } - - public static void initMashedFoodRecipes(){ - - for(Object nextIterator : Item.itemRegistry){ - if(nextIterator instanceof ItemFood){ - ItemStack ingredient = new ItemStack((Item)nextIterator, 1, Util.WILDCARD); - GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 4, TheMiscItems.MASHED_FOOD.ordinal()), ingredient, ingredient, ingredient, ingredient, new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD)); - } - } } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/ItemCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/ItemCrafting.java new file mode 100644 index 000000000..75781897b --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/ItemCrafting.java @@ -0,0 +1,45 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; + +public class ItemCrafting{ + + public static void init(){ + + //Knife + if(ConfigValues.enableKnifeRecipe) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemKnife), + new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), + new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_HANDLE.ordinal())); + + //Crafter on a Stick + if(ConfigValues.enableCrafterRecipe) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemCrafterOnAStick), + new ItemStack(Blocks.crafting_table), + new ItemStack(Items.sign), + new ItemStack(Items.slime_ball)); + + //Mashed Food + if(ConfigValues.enabledMiscRecipes[TheMiscItems.MASHED_FOOD.ordinal()]) + initMashedFoodRecipes(); + + } + + public static void initMashedFoodRecipes(){ + for(Object nextIterator : Item.itemRegistry){ + if(nextIterator instanceof ItemFood){ + ItemStack ingredient = new ItemStack((Item)nextIterator, 1, Util.WILDCARD); + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 4, TheMiscItems.MASHED_FOOD.ordinal()), ingredient, ingredient, ingredient, ingredient, new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD)); + } + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/MiscCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/MiscCrafting.java new file mode 100644 index 000000000..662d56ff7 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/MiscCrafting.java @@ -0,0 +1,39 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class MiscCrafting{ + + public static void init(){ + + //Dough + if(ConfigValues.enabledMiscRecipes[TheMiscItems.DOUGH.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 2, TheMiscItems.DOUGH.ordinal()), + new ItemStack(Items.wheat), new ItemStack(Items.wheat)); + + //Paper Cone + if(ConfigValues.enabledMiscRecipes[TheMiscItems.PAPER_CONE.ordinal()]) + GameRegistry.addRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), + "P P", " P ", + 'P', new ItemStack(Items.paper)); + + //Knife Handle + if(ConfigValues.enabledMiscRecipes[TheMiscItems.KNIFE_HANDLE.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_HANDLE.ordinal()), + new ItemStack(Items.stick), + new ItemStack(Items.leather)); + + //Knife Blade + if(ConfigValues.enabledMiscRecipes[TheMiscItems.KNIFE_BLADE.ordinal()]) + GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), + new ItemStack(Items.iron_ingot), + new ItemStack(Items.flint)); + + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/crafting/ToolCrafting.java b/src/main/java/ellpeck/someprettyrandomstuff/crafting/ToolCrafting.java new file mode 100644 index 000000000..c7e3d047b --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/crafting/ToolCrafting.java @@ -0,0 +1,79 @@ +package ellpeck.someprettyrandomstuff.crafting; + +import cpw.mods.fml.common.registry.GameRegistry; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.items.InitItems; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class ToolCrafting{ + + public static void init(){ + + if(ConfigValues.enableToolEmeraldRecipe){ + //Pickaxe + GameRegistry.addRecipe(new ItemStack(InitItems.itemPickaxeEmerald), + "EEE", " S ", " S ", + 'E', new ItemStack(Items.emerald), + 'S', new ItemStack(Items.stick)); + + //Sword + GameRegistry.addRecipe(new ItemStack(InitItems.itemSwordEmerald), + "E", "E", "S", + 'E', new ItemStack(Items.emerald), + 'S', new ItemStack(Items.stick)); + + //Axe + GameRegistry.addRecipe(new ItemStack(InitItems.itemAxeEmerald), + "EE", "ES", " S", + 'E', new ItemStack(Items.emerald), + 'S', new ItemStack(Items.stick)); + + //Shovel + GameRegistry.addRecipe(new ItemStack(InitItems.itemShovelEmerald), + "E", "S", "S", + 'E', new ItemStack(Items.emerald), + 'S', new ItemStack(Items.stick)); + + //Hoe + GameRegistry.addRecipe(new ItemStack(InitItems.itemHoeEmerald), + "EE", " S", " S", + 'E', new ItemStack(Items.emerald), + 'S', new ItemStack(Items.stick)); + } + + if(ConfigValues.enableToolObsidianRecipe){ + //Pickaxe + GameRegistry.addRecipe(new ItemStack(InitItems.itemPickaxeObsidian), + "EEE", " S ", " S ", + 'E', new ItemStack(Blocks.obsidian), + 'S', new ItemStack(Items.stick)); + + //Sword + GameRegistry.addRecipe(new ItemStack(InitItems.itemSwordObsidian), + "E", "E", "S", + 'E', new ItemStack(Blocks.obsidian), + 'S', new ItemStack(Items.stick)); + + //Axe + GameRegistry.addRecipe(new ItemStack(InitItems.itemAxeObsidian), + "EE", "ES", " S", + 'E', new ItemStack(Blocks.obsidian), + 'S', new ItemStack(Items.stick)); + + //Shovel + GameRegistry.addRecipe(new ItemStack(InitItems.itemShovelObsidian), + "E", "S", "S", + 'E', new ItemStack(Blocks.obsidian), + 'S', new ItemStack(Items.stick)); + + //Hoe + GameRegistry.addRecipe(new ItemStack(InitItems.itemHoeObsidian), + "EE", " S", " S", + 'E', new ItemStack(Blocks.obsidian), + 'S', new ItemStack(Items.stick)); + } + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/event/CraftEvent.java b/src/main/java/ellpeck/someprettyrandomstuff/event/CraftEvent.java new file mode 100644 index 000000000..9c0f5ad9b --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/event/CraftEvent.java @@ -0,0 +1,46 @@ +package ellpeck.someprettyrandomstuff.event; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import ellpeck.someprettyrandomstuff.achievement.InitAchievements; +import ellpeck.someprettyrandomstuff.blocks.InitBlocks; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheFoods; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; +import net.minecraft.item.Item; + +public class CraftEvent{ + @SubscribeEvent + public void onCraftedEvent(PlayerEvent.ItemCraftedEvent event){ + if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.DOUGH.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftDough, 1); + } + if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.MASHED_FOOD.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftMashedFood, 1); + } + if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.KNIFE_BLADE.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftKnifeBlade, 1); + } + if(event.crafting.getItem() == InitItems.itemKnife){ + event.player.addStat(InitAchievements.achievementCraftKnife, 1); + } + if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.SUBMARINE_SANDWICH.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftSubSandwich, 1); + } + if(event.crafting.getItem() == InitItems.itemMisc && event.crafting.getItemDamage() == TheMiscItems.PAPER_CONE.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftPaperCone, 1); + } + if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRY.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftFrenchFry, 1); + } + if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FRENCH_FRIES.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftFrenchFries, 1); + } + if(event.crafting.getItem() == InitItems.itemFoods && event.crafting.getItemDamage() == TheFoods.FISH_N_CHIPS.ordinal()){ + event.player.addStat(InitAchievements.achievementCraftFishNChips, 1); + } + if(event.crafting.getItem()== Item.getItemFromBlock(InitBlocks.blockCompost)){ + event.player.addStat(InitAchievements.achievementCraftCompost, 1); + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/event/InitEvents.java b/src/main/java/ellpeck/someprettyrandomstuff/event/InitEvents.java new file mode 100644 index 000000000..fb7ac885c --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/event/InitEvents.java @@ -0,0 +1,15 @@ +package ellpeck.someprettyrandomstuff.event; + +import ellpeck.someprettyrandomstuff.util.Util; + +public class InitEvents{ + + public static void init(){ + Util.logInfo("Initializing Events..."); + + Util.registerEvent(new SmeltEvent()); + Util.registerEvent(new CraftEvent()); + Util.registerEvent(new KilledEvent()); + } + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/event/KilledEvent.java b/src/main/java/ellpeck/someprettyrandomstuff/event/KilledEvent.java new file mode 100644 index 000000000..f282babfc --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/event/KilledEvent.java @@ -0,0 +1,30 @@ +package ellpeck.someprettyrandomstuff.event; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheSpecialDrops; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.event.entity.living.LivingDropsEvent; + +import java.util.Random; + +public class KilledEvent{ + @SubscribeEvent + public void onEntityDropEvent(LivingDropsEvent event){ + if(event.source.getEntity() instanceof EntityPlayer){ + for(int i = 0; i < TheSpecialDrops.values().length; i++){ + TheSpecialDrops theDrop = TheSpecialDrops.values()[i]; + if(theDrop.canDrop && event.entityLiving.getClass() == theDrop.dropFrom || (event.entityLiving instanceof EntityCreature && theDrop.dropFrom == EntityCreature.class) || (event.entityLiving instanceof EntityMob && theDrop.dropFrom == EntityMob.class) || (event.entityLiving instanceof EntityAnimal && theDrop.dropFrom == EntityAnimal.class)){ + if(new Random().nextInt(100) + 1 <= theDrop.chance){ + event.entityLiving.entityDropItem(new ItemStack(InitItems.itemSpecialDrop, new Random().nextInt(theDrop.maxAmount) + 1, theDrop.ordinal()), 0); + } + } + } + } + + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/event/SmeltEvent.java b/src/main/java/ellpeck/someprettyrandomstuff/event/SmeltEvent.java new file mode 100644 index 000000000..65535cf77 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/event/SmeltEvent.java @@ -0,0 +1,16 @@ +package ellpeck.someprettyrandomstuff.event; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import ellpeck.someprettyrandomstuff.achievement.InitAchievements; +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheFoods; + +public class SmeltEvent{ + @SubscribeEvent + public void onSmeltedEvent(PlayerEvent.ItemSmeltedEvent event){ + if(event.smelting.getItem() == InitItems.itemFoods && event.smelting.getItemDamage() == TheFoods.BAGUETTE.ordinal()){ + event.player.addStat(InitAchievements.achievementSmeltBaguette, 1); + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerCrafter.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerCrafter.java new file mode 100644 index 000000000..c104e025f --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerCrafter.java @@ -0,0 +1,95 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.*; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.world.World; + +public class ContainerCrafter extends Container{ + + public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); + public IInventory craftResult = new InventoryCraftResult(); + + public final int x; + public final int y; + public final int z; + public final World world; + + public ContainerCrafter(EntityPlayer player){ + InventoryPlayer inventory = player.inventory; + + this.world = player.worldObj; + this.x = (int)player.posX; + this.y = (int)player.posY; + this.z = (int)player.posZ; + + this.addSlotToContainer(new SlotCrafting(inventory.player, this.craftMatrix, this.craftResult, 0, 124, 35)); + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 3; j++){ + this.addSlotToContainer(new Slot(this.craftMatrix, j + i*3, 30 + j*18, 17 + i*18)); + } + } + + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 9; j++){ + this.addSlotToContainer(new Slot(inventory, j + i*9 + 9, 8 + j*18, 84 + i*18)); + } + } + for (int i = 0; i < 9; i++){ + this.addSlotToContainer(new Slot(inventory, i, 8 + i*18, 142)); + } + + this.onCraftMatrixChanged(this.craftMatrix); + } + + @Override + public void onCraftMatrixChanged(IInventory p_75130_1_){ + this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.world)); + } + + @Override + public void onContainerClosed(EntityPlayer player){ + super.onContainerClosed(player); + + if (!this.world.isRemote){ + for (int i = 0; i < 9; ++i){ + ItemStack stack = this.craftMatrix.getStackInSlotOnClosing(i); + if(stack != null) player.dropPlayerItemWithRandomChoice(stack, false); + } + } + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return true; + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + ItemStack stack = null; + Slot theSlot = (Slot)this.inventorySlots.get(slot); + + if(theSlot != null && theSlot.getHasStack()){ + ItemStack savedStack = theSlot.getStack(); + stack = savedStack.copy(); + + if(slot == 0){ + if(!this.mergeItemStack(savedStack, 10, 46, true)) return null; + theSlot.onSlotChange(savedStack, stack); + } + else if(slot >= 10 && slot < 37 && !this.mergeItemStack(savedStack, 37, 46, false)) return null; + else if(slot >= 37 && slot < 46 && !this.mergeItemStack(savedStack, 10, 37, false)) return null; + else if(!this.mergeItemStack(savedStack, 10, 46, false)) return null; + + if(savedStack.stackSize == 0) theSlot.putStack(null); + else theSlot.onSlotChanged(); + + if(savedStack.stackSize == stack.stackSize) return null; + + theSlot.onPickupFromSlot(player, savedStack); + } + return stack; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerFurnaceDouble.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerFurnaceDouble.java new file mode 100644 index 000000000..77b007c42 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerFurnaceDouble.java @@ -0,0 +1,89 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.inventory.slot.SlotOutput; +import ellpeck.someprettyrandomstuff.tile.TileEntityBase; +import ellpeck.someprettyrandomstuff.tile.TileEntityFurnaceDouble; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerFurnaceDouble extends Container{ + + private TileEntityFurnaceDouble tileFurnace; + + private int lastCoalTime; + private int lastCoalTimeLeft; + private int lastFirstCrushTime; + private int lastSecondCrushTime; + + public ContainerFurnaceDouble(InventoryPlayer inventory, TileEntityBase tile){ + this.tileFurnace = (TileEntityFurnaceDouble)tile; + + this.addSlotToContainer(new Slot(this.tileFurnace, TileEntityFurnaceDouble.SLOT_COAL, 80, 21)); + + this.addSlotToContainer(new Slot(this.tileFurnace, TileEntityFurnaceDouble.SLOT_INPUT_1, 51, 21)); + this.addSlotToContainer(new Slot(this.tileFurnace, TileEntityFurnaceDouble.SLOT_INPUT_2, 109, 21)); + this.addSlotToContainer(new SlotOutput(this.tileFurnace, TileEntityFurnaceDouble.SLOT_OUTPUT_1, 51, 69)); + this.addSlotToContainer(new SlotOutput(this.tileFurnace, TileEntityFurnaceDouble.SLOT_OUTPUT_2, 108, 69)); + + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 9; j++){ + this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 97 + i * 18)); + } + } + for (int i = 0; i < 9; i++){ + this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155)); + } + } + + @Override + public void addCraftingToCrafters(ICrafting iCraft){ + super.addCraftingToCrafters(iCraft); + iCraft.sendProgressBarUpdate(this, 0, this.tileFurnace.coalTime); + iCraft.sendProgressBarUpdate(this, 1, this.tileFurnace.coalTimeLeft); + iCraft.sendProgressBarUpdate(this, 2, this.tileFurnace.firstSmeltTime); + iCraft.sendProgressBarUpdate(this, 3, this.tileFurnace.secondSmeltTime); + } + + @Override + public void detectAndSendChanges(){ + super.detectAndSendChanges(); + for(Object crafter : this.crafters){ + ICrafting iCraft = (ICrafting)crafter; + + if(this.lastCoalTime != this.tileFurnace.coalTime) iCraft.sendProgressBarUpdate(this, 0, this.tileFurnace.coalTime); + if(this.lastCoalTimeLeft != this.tileFurnace.coalTimeLeft) iCraft.sendProgressBarUpdate(this, 1, this.tileFurnace.coalTimeLeft); + if(this.lastFirstCrushTime != this.tileFurnace.firstSmeltTime) iCraft.sendProgressBarUpdate(this, 2, this.tileFurnace.firstSmeltTime); + if(this.lastSecondCrushTime != this.tileFurnace.secondSmeltTime) iCraft.sendProgressBarUpdate(this, 3, this.tileFurnace.secondSmeltTime); + } + + this.lastCoalTime = this.tileFurnace.coalTime; + this.lastCoalTimeLeft = this.tileFurnace.coalTimeLeft; + this.lastFirstCrushTime = this.tileFurnace.firstSmeltTime; + this.lastSecondCrushTime = this.tileFurnace.secondSmeltTime; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2){ + if(par1 == 0) this.tileFurnace.coalTime = par2; + if(par1 == 1) this.tileFurnace.coalTimeLeft = par2; + if(par1 == 2) this.tileFurnace.firstSmeltTime = par2; + if(par1 == 3) this.tileFurnace.secondSmeltTime = par2; + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.tileFurnace.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + return null; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerGrinder.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerGrinder.java new file mode 100644 index 000000000..8b0a0c4dc --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/ContainerGrinder.java @@ -0,0 +1,95 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.inventory.slot.SlotOutput; +import ellpeck.someprettyrandomstuff.tile.TileEntityBase; +import ellpeck.someprettyrandomstuff.tile.TileEntityGrinder; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerGrinder extends Container{ + + private TileEntityGrinder tileGrinder; + private boolean isDouble; + + private int lastCoalTime; + private int lastCoalTimeLeft; + private int lastFirstCrushTime; + private int lastSecondCrushTime; + + public ContainerGrinder(InventoryPlayer inventory, TileEntityBase tile, boolean isDouble){ + this.tileGrinder = (TileEntityGrinder)tile; + this.isDouble = isDouble; + + this.addSlotToContainer(new Slot(this.tileGrinder, TileEntityGrinder.SLOT_COAL, this.isDouble ? 80 : 51, 21)); + + this.addSlotToContainer(new Slot(this.tileGrinder, TileEntityGrinder.SLOT_INPUT_1, this.isDouble ? 51 : 80, 21)); + this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_1_1, this.isDouble ? 37 : 66, 69)); + this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_1_2, this.isDouble ? 64 : 92, 69)); + if(this.isDouble){ + this.addSlotToContainer(new Slot(this.tileGrinder, TileEntityGrinder.SLOT_INPUT_2, 109, 21)); + this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_2_1, 96, 69)); + this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_2_2, 121, 69)); + } + + for (int i = 0; i < 3; i++){ + for (int j = 0; j < 9; j++){ + this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 97 + i * 18)); + } + } + for (int i = 0; i < 9; i++){ + this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 155)); + } + } + + @Override + public void addCraftingToCrafters(ICrafting iCraft){ + super.addCraftingToCrafters(iCraft); + iCraft.sendProgressBarUpdate(this, 0, this.tileGrinder.coalTime); + iCraft.sendProgressBarUpdate(this, 1, this.tileGrinder.coalTimeLeft); + iCraft.sendProgressBarUpdate(this, 2, this.tileGrinder.firstCrushTime); + if(this.isDouble) iCraft.sendProgressBarUpdate(this, 3, this.tileGrinder.secondCrushTime); + } + + @Override + public void detectAndSendChanges(){ + super.detectAndSendChanges(); + for(Object crafter : this.crafters){ + ICrafting iCraft = (ICrafting)crafter; + + if(this.lastCoalTime != this.tileGrinder.coalTime) iCraft.sendProgressBarUpdate(this, 0, this.tileGrinder.coalTime); + if(this.lastCoalTimeLeft != this.tileGrinder.coalTimeLeft) iCraft.sendProgressBarUpdate(this, 1, this.tileGrinder.coalTimeLeft); + if(this.lastFirstCrushTime != this.tileGrinder.firstCrushTime) iCraft.sendProgressBarUpdate(this, 2, this.tileGrinder.firstCrushTime); + if(this.isDouble) if(this.lastSecondCrushTime != this.tileGrinder.secondCrushTime) iCraft.sendProgressBarUpdate(this, 3, this.tileGrinder.secondCrushTime); + } + + this.lastCoalTime = this.tileGrinder.coalTime; + this.lastCoalTimeLeft = this.tileGrinder.coalTimeLeft; + this.lastFirstCrushTime = this.tileGrinder.firstCrushTime; + if(this.isDouble) this.lastSecondCrushTime = this.tileGrinder.secondCrushTime; + } + + @Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2){ + if(par1 == 0) this.tileGrinder.coalTime = par2; + if(par1 == 1) this.tileGrinder.coalTimeLeft = par2; + if(par1 == 2) this.tileGrinder.firstCrushTime = par2; + if(this.isDouble && par1 == 3) this.tileGrinder.secondCrushTime = par2; + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.tileGrinder.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + return null; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiCrafter.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiCrafter.java new file mode 100644 index 000000000..ae9be67c7 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiCrafter.java @@ -0,0 +1,28 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiCrafter extends GuiContainer{ + + private static final ResourceLocation resLoc = new ResourceLocation("textures/gui/container/crafting_table.png"); + + public GuiCrafter(EntityPlayer player){ + super(new ContainerCrafter(player)); + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(resLoc); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize); + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFeeder.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFeeder.java index d55141381..3291b275f 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFeeder.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFeeder.java @@ -58,7 +58,7 @@ public class GuiFeeder extends GuiContainer{ public void drawScreen(int x, int y, float f){ super.drawScreen(x, y, f); if(x >= guiLeft+69 && y >= guiTop+30 && x <= guiLeft+69+10 && y <= guiTop+30+10){ - String[] array = new String[]{(this.tileFeeder.currentAnimalAmount + " " + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.animal.desc") + (this.tileFeeder.currentAnimalAmount == 1 ? "" : StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.animalsSuffix.desc"))), ((this.tileFeeder.currentAnimalAmount >= 2 && this.tileFeeder.currentAnimalAmount < this.tileFeeder.animalThreshold) ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.enoughToBreed.desc") : (this.tileFeeder.currentAnimalAmount >= this.tileFeeder.animalThreshold ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.tooMany.desc") : StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.notEnough.desc")))}; + String[] array = new String[]{(this.tileFeeder.currentAnimalAmount + " " + StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.animals.desc")), ((this.tileFeeder.currentAnimalAmount >= 2 && this.tileFeeder.currentAnimalAmount < this.tileFeeder.animalThreshold) ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.enoughToBreed.desc") : (this.tileFeeder.currentAnimalAmount >= this.tileFeeder.animalThreshold ? StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.tooMany.desc") : StatCollector.translateToLocal("info." + Util.MOD_ID_LOWER + ".feeder.notEnough.desc")))}; this.func_146283_a(Arrays.asList(array), x, y); } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFurnaceDouble.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFurnaceDouble.java new file mode 100644 index 000000000..f43e8ddac --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiFurnaceDouble.java @@ -0,0 +1,54 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.tile.TileEntityBase; +import ellpeck.someprettyrandomstuff.tile.TileEntityFurnaceDouble; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiFurnaceDouble extends GuiContainer{ + + private static final ResourceLocation resLoc = Util.getGuiLocation("guiFurnaceDouble"); + private TileEntityFurnaceDouble tileFurnace; + + public GuiFurnaceDouble(InventoryPlayer inventory, TileEntityBase tile){ + super(new ContainerFurnaceDouble(inventory, tile)); + this.tileFurnace = (TileEntityFurnaceDouble)tile; + this.xSize = 176; + this.ySize = 93+86; + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(Util.GUI_INVENTORY_LOCATION); + this.drawTexturedModalRect(this.guiLeft, this.guiTop+93, 0, 0, 176, 86); + + this.mc.getTextureManager().bindTexture(resLoc); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93); + + if(this.tileFurnace.coalTime > 0){ + int i = this.tileFurnace.getCoalTimeToScale(15); + this.drawTexturedModalRect(this.guiLeft+80, this.guiTop+5+14-i, 176, 44+14-i, 14, i); + } + if(this.tileFurnace.firstSmeltTime > 0){ + int i = this.tileFurnace.getFirstTimeToScale(23); + this.drawTexturedModalRect(this.guiLeft+51, this.guiTop+40, 176, 0, 24, i); + } + if(this.tileFurnace.secondSmeltTime > 0){ + int i = this.tileFurnace.getSecondTimeToScale(23); + this.drawTexturedModalRect(this.guiLeft + 101, this.guiTop + 40, 176, 22, 24, i); + } + } + + @Override + public void drawScreen(int x, int y, float f){ + super.drawScreen(x, y, f); + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiGrinder.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiGrinder.java new file mode 100644 index 000000000..e91b37c09 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiGrinder.java @@ -0,0 +1,59 @@ +package ellpeck.someprettyrandomstuff.inventory; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.tile.TileEntityBase; +import ellpeck.someprettyrandomstuff.tile.TileEntityGrinder; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiGrinder extends GuiContainer{ + + private static final ResourceLocation resLoc = Util.getGuiLocation("guiGrinder"); + private static final ResourceLocation resLocDouble = Util.getGuiLocation("guiGrinderDouble"); + private TileEntityGrinder tileGrinder; + private boolean isDouble; + + public GuiGrinder(InventoryPlayer inventory, TileEntityBase tile, boolean isDouble){ + super(new ContainerGrinder(inventory, tile, isDouble)); + this.tileGrinder = (TileEntityGrinder)tile; + this.isDouble = isDouble; + this.xSize = 176; + this.ySize = 93+86; + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(Util.GUI_INVENTORY_LOCATION); + this.drawTexturedModalRect(this.guiLeft, this.guiTop+93, 0, 0, 176, 86); + + this.mc.getTextureManager().bindTexture(this.isDouble ? resLocDouble : resLoc); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93); + + if(this.tileGrinder.coalTime > 0){ + int i = this.tileGrinder.getCoalTimeToScale(15); + this.drawTexturedModalRect(this.guiLeft+(isDouble ? 80 : 51), this.guiTop+5+14-i, 176, 44+14-i, 14, i); + } + if(this.tileGrinder.firstCrushTime > 0){ + int i = this.tileGrinder.getFirstTimeToScale(23); + this.drawTexturedModalRect(this.guiLeft+(isDouble ? 51 : 80), this.guiTop+40, 176, 0, 24, i); + } + if(this.isDouble){ + if(this.tileGrinder.secondCrushTime > 0){ + int i = this.tileGrinder.getSecondTimeToScale(23); + this.drawTexturedModalRect(this.guiLeft + 101, this.guiTop + 40, 176, 22, 24, i); + } + } + } + + @Override + public void drawScreen(int x, int y, float f){ + super.drawScreen(x, y, f); + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiHandler.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiHandler.java index 716f1d042..b29cf6f9c 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiHandler.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/GuiHandler.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; import ellpeck.someprettyrandomstuff.SomePrettyRandomStuff; import ellpeck.someprettyrandomstuff.tile.TileEntityBase; +import ellpeck.someprettyrandomstuff.tile.TileEntityGrinder; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -12,12 +13,24 @@ public class GuiHandler implements IGuiHandler{ @Override public Object getServerGuiElement(int id, EntityPlayer entityPlayer, World world, int x, int y, int z){ - TileEntityBase tile = (TileEntityBase)world.getTileEntity(x, y, z); switch (id){ case FEEDER_ID: - return new ContainerFeeder(entityPlayer.inventory, tile); + TileEntityBase tileFeeder = (TileEntityBase)world.getTileEntity(x, y, z); + return new ContainerFeeder(entityPlayer.inventory, tileFeeder); case GIANT_CHEST_ID: - return new ContainerGiantChest(entityPlayer.inventory, tile); + TileEntityBase tileChest = (TileEntityBase)world.getTileEntity(x, y, z); + return new ContainerGiantChest(entityPlayer.inventory, tileChest); + case CRAFTER_ID: + return new ContainerCrafter(entityPlayer); + case GRINDER_ID: + TileEntityBase tileGrinder = (TileEntityGrinder)world.getTileEntity(x, y, z); + return new ContainerGrinder(entityPlayer.inventory, tileGrinder, false); + case GRINDER_DOUBLE_ID: + TileEntityBase tileGrinderDouble = (TileEntityGrinder)world.getTileEntity(x, y, z); + return new ContainerGrinder(entityPlayer.inventory, tileGrinderDouble, true); + case FURNACE_DOUBLE_ID: + TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); + return new ContainerFurnaceDouble(entityPlayer.inventory, tileFurnace); default: return null; } @@ -25,12 +38,24 @@ public class GuiHandler implements IGuiHandler{ @Override public Object getClientGuiElement(int id, EntityPlayer entityPlayer, World world, int x, int y, int z){ - TileEntityBase tile = (TileEntityBase)world.getTileEntity(x, y, z); switch (id){ case FEEDER_ID: - return new GuiFeeder(entityPlayer.inventory, tile); + TileEntityBase tileFeeder = (TileEntityBase)world.getTileEntity(x, y, z); + return new GuiFeeder(entityPlayer.inventory, tileFeeder); case GIANT_CHEST_ID: - return new GuiGiantChest(entityPlayer.inventory, tile); + TileEntityBase tileChest = (TileEntityBase)world.getTileEntity(x, y, z); + return new GuiGiantChest(entityPlayer.inventory, tileChest); + case CRAFTER_ID: + return new GuiCrafter(entityPlayer); + case GRINDER_ID: + TileEntityBase tileGrinder = (TileEntityGrinder)world.getTileEntity(x, y, z); + return new GuiGrinder(entityPlayer.inventory, tileGrinder, false); + case GRINDER_DOUBLE_ID: + TileEntityBase tileGrinderDouble = (TileEntityGrinder)world.getTileEntity(x, y, z); + return new GuiGrinder(entityPlayer.inventory, tileGrinderDouble, true); + case FURNACE_DOUBLE_ID: + TileEntityBase tileFurnace = (TileEntityBase)world.getTileEntity(x, y, z); + return new GuiFurnaceDouble(entityPlayer.inventory, tileFurnace); default: return null; } @@ -38,6 +63,10 @@ public class GuiHandler implements IGuiHandler{ public static final int FEEDER_ID = 0; public static final int GIANT_CHEST_ID = 1; + public static final int CRAFTER_ID = 2; + public static final int GRINDER_ID = 3; + public static final int GRINDER_DOUBLE_ID = 4; + public static final int FURNACE_DOUBLE_ID = 5; public static void init(){ Util.logInfo("Initializing GuiHandler..."); diff --git a/src/main/java/ellpeck/someprettyrandomstuff/inventory/slot/SlotOutput.java b/src/main/java/ellpeck/someprettyrandomstuff/inventory/slot/SlotOutput.java new file mode 100644 index 000000000..033b42dd7 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/inventory/slot/SlotOutput.java @@ -0,0 +1,17 @@ +package ellpeck.someprettyrandomstuff.inventory.slot; + +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotOutput extends Slot{ + + public SlotOutput(IInventory inventory, int id, int x, int y){ + super(inventory, id, x, y); + } + + @Override + public boolean isItemValid(ItemStack stack){ + return false; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/InitItems.java b/src/main/java/ellpeck/someprettyrandomstuff/items/InitItems.java index 66505a8e6..f68c46082 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/InitItems.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/InitItems.java @@ -1,10 +1,9 @@ package ellpeck.someprettyrandomstuff.items; -import cpw.mods.fml.common.registry.GameRegistry; import ellpeck.someprettyrandomstuff.items.tools.*; import ellpeck.someprettyrandomstuff.material.InitItemMaterials; -import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; public class InitItems{ @@ -13,6 +12,9 @@ public class InitItems{ public static Item itemMisc; public static Item itemFoods; public static Item itemKnife; + public static Item itemCrafterOnAStick; + public static Item itemDust; + public static Item itemSpecialDrop; public static Item itemPickaxeEmerald; public static Item itemAxeEmerald; @@ -30,29 +32,38 @@ public class InitItems{ Util.logInfo("Initializing Items..."); itemFertilizer = new ItemFertilizer(); - GameRegistry.registerItem(itemFertilizer, ((IName)itemFertilizer).getName()); + Util.register(itemFertilizer); itemMisc = new ItemMisc(); - GameRegistry.registerItem(itemMisc, ((IName)itemMisc).getName()); + Util.register(itemMisc); itemFoods = new ItemFoods(); - GameRegistry.registerItem(itemFoods, ((IName)itemFoods).getName()); + Util.register(itemFoods); itemKnife = new ItemKnife(); - GameRegistry.registerItem(itemKnife, ((IName)itemKnife).getName()); + Util.register(itemKnife); - itemPickaxeEmerald = new ItemPickaxeSPRS(InitItemMaterials.toolMaterialEmerald, "itemPickaxeEmerald"); - itemAxeEmerald = new ItemAxeSPRS(InitItemMaterials.toolMaterialEmerald, "itemAxeEmerald"); - itemShovelEmerald = new ItemShovelSPRS(InitItemMaterials.toolMaterialEmerald, "itemShovelEmerald"); - itemSwordEmerald = new ItemSwordSPRS(InitItemMaterials.toolMaterialEmerald, "itemSwordEmerald"); - itemHoeEmerald = new ItemHoeSPRS(InitItemMaterials.toolMaterialEmerald, "itemHoeEmerald"); + itemCrafterOnAStick = new ItemCrafterOnAStick(); + Util.register(itemCrafterOnAStick); + + itemDust = new ItemDust(); + Util.register(itemDust); + + itemSpecialDrop = new ItemSpecialDrop(); + Util.register(itemSpecialDrop); + + itemPickaxeEmerald = new ItemPickaxeSPRS(InitItemMaterials.toolMaterialEmerald, "itemPickaxeEmerald", EnumRarity.rare); + itemAxeEmerald = new ItemAxeSPRS(InitItemMaterials.toolMaterialEmerald, "itemAxeEmerald", EnumRarity.rare); + itemShovelEmerald = new ItemShovelSPRS(InitItemMaterials.toolMaterialEmerald, "itemShovelEmerald", EnumRarity.rare); + itemSwordEmerald = new ItemSwordSPRS(InitItemMaterials.toolMaterialEmerald, "itemSwordEmerald", EnumRarity.rare); + itemHoeEmerald = new ItemHoeSPRS(InitItemMaterials.toolMaterialEmerald, "itemHoeEmerald", EnumRarity.rare); Util.registerItems(new Item[]{itemPickaxeEmerald, itemAxeEmerald, itemShovelEmerald, itemSwordEmerald, itemHoeEmerald}); - itemPickaxeObsidian = new ItemPickaxeSPRS(InitItemMaterials.toolMaterialObsidian, "itemPickaxeObsidian"); - itemAxeObsidian = new ItemAxeSPRS(InitItemMaterials.toolMaterialObsidian, "itemAxeObsidian"); - itemShovelObsidian = new ItemShovelSPRS(InitItemMaterials.toolMaterialObsidian, "itemShovelObsidian"); - itemSwordObsidian = new ItemSwordSPRS(InitItemMaterials.toolMaterialObsidian, "itemSwordObsidian"); - itemHoeObsidian = new ItemHoeSPRS(InitItemMaterials.toolMaterialObsidian, "itemHoeObsidian"); + itemPickaxeObsidian = new ItemPickaxeSPRS(InitItemMaterials.toolMaterialObsidian, "itemPickaxeObsidian", EnumRarity.uncommon); + itemAxeObsidian = new ItemAxeSPRS(InitItemMaterials.toolMaterialObsidian, "itemAxeObsidian", EnumRarity.uncommon); + itemShovelObsidian = new ItemShovelSPRS(InitItemMaterials.toolMaterialObsidian, "itemShovelObsidian", EnumRarity.uncommon); + itemSwordObsidian = new ItemSwordSPRS(InitItemMaterials.toolMaterialObsidian, "itemSwordObsidian", EnumRarity.uncommon); + itemHoeObsidian = new ItemHoeSPRS(InitItemMaterials.toolMaterialObsidian, "itemHoeObsidian", EnumRarity.uncommon); Util.registerItems(new Item[]{itemPickaxeObsidian, itemAxeObsidian, itemShovelObsidian, itemSwordObsidian, itemHoeObsidian}); } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemCrafterOnAStick.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemCrafterOnAStick.java new file mode 100644 index 000000000..5cdefc279 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemCrafterOnAStick.java @@ -0,0 +1,61 @@ +package ellpeck.someprettyrandomstuff.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.SomePrettyRandomStuff; +import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.inventory.GuiHandler; +import ellpeck.someprettyrandomstuff.util.IName; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemCrafterOnAStick extends Item implements IName{ + + public ItemCrafterOnAStick(){ + this.setUnlocalizedName(Util.setUnlocalizedName(this)); + this.setCreativeTab(CreativeTab.instance); + this.setMaxStackSize(1); + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) { + list.add(Util.addStandardInformation(this)); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player){ + if(!world.isRemote) player.openGui(SomePrettyRandomStuff.instance, GuiHandler.CRAFTER_ID, world, (int)player.posX, (int)player.posY, (int)player.posZ); + return stack; + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.epic; + } + + @Override + public String getName(){ + return "itemCrafterOnAStick"; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemDust.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemDust.java new file mode 100644 index 000000000..9000780f3 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemDust.java @@ -0,0 +1,82 @@ +package ellpeck.someprettyrandomstuff.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.items.metalists.TheDusts; +import ellpeck.someprettyrandomstuff.util.IName; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +import java.util.List; + +public class ItemDust extends Item implements IName{ + + public static final TheDusts[] allDusts = TheDusts.values(); + + public ItemDust(){ + this.setUnlocalizedName(Util.setUnlocalizedName(this)); + this.setHasSubtypes(true); + this.setCreativeTab(CreativeTab.instance); + } + + @Override + public String getName(){ + return "itemDust"; + } + + @Override + public int getMetadata(int damage){ + return damage; + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return allDusts[stack.getItemDamage()].rarity; + } + + @SuppressWarnings("all") + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list){ + for(int j = 0; j < allDusts.length; j++){ + list.add(new ItemStack(this, 1, j)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName() + allDusts[stack.getItemDamage()].name; + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ + if(Util.isShiftPressed()) list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + this.getName() + allDusts[stack.getItemDamage()].getName() + ".desc")); + else list.add(Util.shiftForInfo()); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass){ + return allDusts[stack.getItemDamage()].color; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFertilizer.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFertilizer.java index 62dcd9bab..fdf3651d6 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFertilizer.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFertilizer.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemDye; import net.minecraft.item.ItemStack; @@ -18,7 +19,7 @@ import java.util.List; public class ItemFertilizer extends Item implements IName{ public ItemFertilizer(){ - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -31,6 +32,11 @@ public class ItemFertilizer extends Item implements IName{ return super.onItemUse(stack, player, world, x, y, z, par7, par8, par9, par10); } + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFoods.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFoods.java index b9c1bda4a..aa83156db 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFoods.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemFoods.java @@ -10,10 +10,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; @@ -27,7 +24,7 @@ public class ItemFoods extends ItemFood implements IName{ public ItemFoods(){ super(0, 0.0F, false); - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setHasSubtypes(true); this.setMaxDamage(0); this.setCreativeTab(CreativeTab.instance); @@ -35,6 +32,11 @@ public class ItemFoods extends ItemFood implements IName{ TheFoods.setReturnItems(); } + @Override + public EnumRarity getRarity(ItemStack stack){ + return allFoods[stack.getItemDamage()].rarity; + } + @Override public int func_150905_g(ItemStack stack){ return allFoods[stack.getItemDamage()].healAmount; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemKnife.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemKnife.java index 3dfcc1f3a..91ef7a4b8 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemKnife.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemKnife.java @@ -4,20 +4,22 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ellpeck.someprettyrandomstuff.config.ConfigValues; import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.util.IInformation; import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import java.util.List; -public class ItemKnife extends Item implements IName{ +public class ItemKnife extends Item implements IName, IInformation{ public ItemKnife(){ - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setMaxDamage(ConfigValues.itemKnifeMaxDamage); this.setCreativeTab(CreativeTab.instance); this.setMaxStackSize(1); @@ -32,6 +34,11 @@ public class ItemKnife extends Item implements IName{ return theStack; } + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.epic; + } + @Override @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) @@ -59,4 +66,9 @@ public class ItemKnife extends Item implements IName{ public String getName(){ return "itemKnife"; } + + @Override + public String[] getInformationString(){ + return new String[]{"This is a test too but it's more cool senn se assa"}; + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemMisc.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemMisc.java index 0fd2b8e74..c34067712 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemMisc.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemMisc.java @@ -9,6 +9,7 @@ import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -22,7 +23,7 @@ public class ItemMisc extends Item implements IName{ public IIcon[] textures = new IIcon[allMiscItems.length]; public ItemMisc(){ - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setHasSubtypes(true); this.setCreativeTab(CreativeTab.instance); } @@ -32,6 +33,11 @@ public class ItemMisc extends Item implements IName{ return "itemMisc"; } + @Override + public EnumRarity getRarity(ItemStack stack){ + return allMiscItems[stack.getItemDamage()].rarity; + } + @Override public int getMetadata(int damage){ return damage; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/ItemSpecialDrop.java b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemSpecialDrop.java new file mode 100644 index 000000000..85cedff8f --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/ItemSpecialDrop.java @@ -0,0 +1,79 @@ +package ellpeck.someprettyrandomstuff.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.creative.CreativeTab; +import ellpeck.someprettyrandomstuff.items.metalists.TheSpecialDrops; +import ellpeck.someprettyrandomstuff.util.IName; +import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +import java.util.List; + +public class ItemSpecialDrop extends Item implements IName{ + + public static final TheSpecialDrops[] allDrops = TheSpecialDrops.values(); + public IIcon[] textures = new IIcon[allDrops.length]; + + public ItemSpecialDrop(){ + this.setUnlocalizedName(Util.setUnlocalizedName(this)); + this.setHasSubtypes(true); + this.setCreativeTab(CreativeTab.instance); + } + + @Override + public String getName(){ + return "itemSpecial"; + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return allDrops[stack.getItemDamage()].rarity; + } + + @Override + public int getMetadata(int damage){ + return damage; + } + + @SuppressWarnings("all") + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list){ + for(int j = 0; j < allDrops.length; j++){ + list.add(new ItemStack(this, 1, j)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack){ + return this.getUnlocalizedName() + allDrops[stack.getItemDamage()].name; + } + + @Override + @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){ + if(Util.isShiftPressed()) list.add(StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + this.getName() + allDrops[stack.getItemDamage()].getName() + ".desc")); + else list.add(Util.shiftForInfo()); + } + + @Override + public IIcon getIconFromDamage(int par1){ + return textures[par1]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + for(int i = 0; i < textures.length; i++){ + textures[i] = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName() + allDrops[i].getName()); + } + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheDusts.java b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheDusts.java new file mode 100644 index 000000000..e2fabed7c --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheDusts.java @@ -0,0 +1,28 @@ +package ellpeck.someprettyrandomstuff.items.metalists; + +import ellpeck.someprettyrandomstuff.util.IName; +import net.minecraft.item.EnumRarity; + +public enum TheDusts implements IName{ + + IRON("Iron", 7826534, EnumRarity.common), + GOLD("Gold", 14335744, EnumRarity.uncommon), + DIAMOND("Diamond", 292003, EnumRarity.rare), + EMERALD("Emerald", 4319527, EnumRarity.epic), + LAPIS("Lapis", 1849791, EnumRarity.uncommon); + + public final String name; + public final int color; + public final EnumRarity rarity; + + private TheDusts(String name, int color, EnumRarity rarity){ + this.name = name; + this.color = color; + this.rarity = rarity; + } + + @Override + public String getName(){ + return this.name; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheFoods.java b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheFoods.java index 8efe91a7a..6272afd39 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheFoods.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheFoods.java @@ -3,26 +3,27 @@ package ellpeck.someprettyrandomstuff.items.metalists; import ellpeck.someprettyrandomstuff.items.InitItems; import ellpeck.someprettyrandomstuff.util.IName; import net.minecraft.init.Items; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; public enum TheFoods implements IName{ - CHEESE("Cheese", 1, 0.1F, false, 3), - PUMPKIN_STEW("PumpkinStew", 10, 0.4F, true, 30), - CARROT_JUICE("CarrotJuice", 6, 0.2F, true, 20), - FISH_N_CHIPS("FishNChips", 20, 1F, false, 40), - FRENCH_FRIES("FrenchFries", 16, 0.7F, false, 32), - FRENCH_FRY("FrenchFry", 1, 0.01F, false, 3), - SPAGHETTI("Spaghetti", 18, 0.8F, false, 38), - NOODLE("Noodle", 1, 0.01F, false, 3), - CHOCOLATE_CAKE("ChocolateCake", 16, 0.45F, false, 45), - CHOCOLATE("Chocolate", 5, 0.05F, false, 15), - TOAST("Toast", 7, 0.4F, false, 25), - SUBMARINE_SANDWICH("SubmarineSandwich", 10, 0.7F, false, 40), - BIG_COOKIE("BigCookie", 6, 0.1F, false, 20), - HAMBURGER("Hamburger", 14, 0.9F, false, 40), - PIZZA("Pizza", 20, 1F, false, 45), - BAGUETTE("Baguette", 7, 0.2F, false, 25); + CHEESE("Cheese", 1, 0.1F, false, 3, EnumRarity.common), + PUMPKIN_STEW("PumpkinStew", 10, 0.4F, true, 30, EnumRarity.common), + CARROT_JUICE("CarrotJuice", 6, 0.2F, true, 20, EnumRarity.common), + FISH_N_CHIPS("FishNChips", 20, 1F, false, 40, EnumRarity.uncommon), + FRENCH_FRIES("FrenchFries", 16, 0.7F, false, 32, EnumRarity.common), + FRENCH_FRY("FrenchFry", 1, 0.01F, false, 3, EnumRarity.common), + SPAGHETTI("Spaghetti", 18, 0.8F, false, 38, EnumRarity.common), + NOODLE("Noodle", 1, 0.01F, false, 3, EnumRarity.common), + CHOCOLATE_CAKE("ChocolateCake", 16, 0.45F, false, 45, EnumRarity.uncommon), + CHOCOLATE("Chocolate", 5, 0.05F, false, 15, EnumRarity.common), + TOAST("Toast", 7, 0.4F, false, 25, EnumRarity.common), + SUBMARINE_SANDWICH("SubmarineSandwich", 10, 0.7F, false, 40, EnumRarity.uncommon), + BIG_COOKIE("BigCookie", 6, 0.1F, false, 20, EnumRarity.uncommon), + HAMBURGER("Hamburger", 14, 0.9F, false, 40, EnumRarity.common), + PIZZA("Pizza", 20, 1F, false, 45, EnumRarity.uncommon), + BAGUETTE("Baguette", 7, 0.2F, false, 25, EnumRarity.common); public static void setReturnItems(){ SPAGHETTI.returnItem = new ItemStack(Items.bowl); @@ -38,13 +39,15 @@ public enum TheFoods implements IName{ public final boolean getsDrunken; public final int useDuration; public ItemStack returnItem; + public final EnumRarity rarity; - private TheFoods(String name, int healAmount, float saturation, boolean getsDrunken, int useDuration){ + private TheFoods(String name, int healAmount, float saturation, boolean getsDrunken, int useDuration, EnumRarity rarity){ this.name = name; this.getsDrunken = getsDrunken; this.healAmount = healAmount; this.saturation = saturation; this.useDuration = useDuration; + this.rarity = rarity; } @Override diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheMiscItems.java b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheMiscItems.java index b2be3f9f9..7dd0229fe 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheMiscItems.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheMiscItems.java @@ -1,24 +1,23 @@ package ellpeck.someprettyrandomstuff.items.metalists; import ellpeck.someprettyrandomstuff.util.IName; +import net.minecraft.item.EnumRarity; public enum TheMiscItems implements IName{ - PAPER_CONE("PaperCone"), - MASHED_FOOD("MashedFood"), - REFINED_IRON("RefinedIron"), - REFINED_REDSTONE("RefinedRedstone"), - COMPRESSED_IRON("CompressedIron"), - STEEL("Steel"), - KNIFE_BLADE("KnifeBlade"), - KNIFE_HANDLE("KnifeHandle"), - DOUGH("Dough"), - QUARTZ("BlackQuartz"); + PAPER_CONE("PaperCone", EnumRarity.common), + MASHED_FOOD("MashedFood", EnumRarity.uncommon), + KNIFE_BLADE("KnifeBlade", EnumRarity.common), + KNIFE_HANDLE("KnifeHandle", EnumRarity.common), + DOUGH("Dough", EnumRarity.common), + QUARTZ("BlackQuartz", EnumRarity.epic); public final String name; + public final EnumRarity rarity; - private TheMiscItems(String name){ + private TheMiscItems(String name, EnumRarity rarity){ this.name = name; + this.rarity = rarity; } @Override diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheSpecialDrops.java b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheSpecialDrops.java new file mode 100644 index 000000000..0113f5e27 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/metalists/TheSpecialDrops.java @@ -0,0 +1,41 @@ +package ellpeck.someprettyrandomstuff.items.metalists; + +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.util.IName; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.item.EnumRarity; + +public enum TheSpecialDrops implements IName{ + + SOLIDIFIED_EXPERIENCE("SolidifiedExperience", 70, 3, EntityCreature.class, EnumRarity.uncommon, ConfigValues.enableExperienceDrop), + BLOOD_FRAGMENT("BloodFragment", 30, 1, EntityCreature.class, EnumRarity.uncommon, ConfigValues.enableBloodDrop), + //Change this into a Heart Fragment that is later crafted into a heart used to revive Villagers + HEART_PART("HeartPart", 10, 1, EntityCreature.class, EnumRarity.rare, ConfigValues.enableHeartDrop), + UNKNOWN_SUBSTANCE("UnknownSubstance", 5, 1, EntitySkeleton.class, EnumRarity.epic, ConfigValues.enableSubstanceDrop), + PEARL_SHARD("PearlShard", 20, 3, EntityEnderman.class, EnumRarity.epic, ConfigValues.enablePearlShardDrop), + EMERALD_SHARD("EmeraldShard", 15, 1, EntityCreeper.class, EnumRarity.rare, ConfigValues.enableEmeraldShardDrop); + + public final String name; + public final int chance; + public final int maxAmount; + public final Class dropFrom; + public final boolean canDrop; + public final EnumRarity rarity; + + private TheSpecialDrops(String name, int chance, int maxAmount, Class dropFrom, EnumRarity rarity, boolean canDrop){ + this.name = name; + this.chance = chance; + this.rarity = rarity; + this.maxAmount = maxAmount; + this.dropFrom = dropFrom; + this.canDrop = canDrop; + } + + @Override + public String getName(){ + return this.name; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemAxeSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemAxeSPRS.java index 005d04b88..c1d3dba87 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemAxeSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemAxeSPRS.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -17,11 +18,13 @@ import java.util.List; public class ItemAxeSPRS extends ItemAxe implements IName{ private String name; + private EnumRarity rarity; - public ItemAxeSPRS(ToolMaterial toolMat, String unlocalizedName){ + public ItemAxeSPRS(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.rarity = rarity; + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -46,6 +49,11 @@ public class ItemAxeSPRS extends ItemAxe implements IName{ this.itemIcon = iconReg.registerIcon(Util.MOD_ID_LOWER + ":" + this.getName()); } + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + @Override public String getName(){ return name; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemHoeSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemHoeSPRS.java index e6f323c77..b329bf949 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemHoeSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemHoeSPRS.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -17,11 +18,13 @@ import java.util.List; public class ItemHoeSPRS extends ItemHoe implements IName{ private String name; + private EnumRarity rarity; - public ItemHoeSPRS(ToolMaterial toolMat, String unlocalizedName){ + public ItemHoeSPRS(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.rarity = rarity; + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -35,6 +38,11 @@ public class ItemHoeSPRS extends ItemHoe implements IName{ } } + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + @Override public IIcon getIcon(ItemStack stack, int pass){ return this.itemIcon; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemPickaxeSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemPickaxeSPRS.java index 5bb6ac3ba..a438b771f 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemPickaxeSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemPickaxeSPRS.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -17,11 +18,13 @@ import java.util.List; public class ItemPickaxeSPRS extends ItemPickaxe implements IName{ private String name; + private EnumRarity rarity; - public ItemPickaxeSPRS(ToolMaterial toolMat, String unlocalizedName){ + public ItemPickaxeSPRS(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.rarity = rarity; + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -40,6 +43,11 @@ public class ItemPickaxeSPRS extends ItemPickaxe implements IName{ return this.itemIcon; } + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconReg){ diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemShovelSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemShovelSPRS.java index 6adcf6c29..bb2952209 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemShovelSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemShovelSPRS.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -17,11 +18,13 @@ import java.util.List; public class ItemShovelSPRS extends ItemSpade implements IName{ private String name; + private EnumRarity rarity; - public ItemShovelSPRS(ToolMaterial toolMat, String unlocalizedName){ + public ItemShovelSPRS(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.rarity = rarity; + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -35,6 +38,11 @@ public class ItemShovelSPRS extends ItemSpade implements IName{ } } + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + @Override public IIcon getIcon(ItemStack stack, int pass){ return this.itemIcon; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemSwordSPRS.java b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemSwordSPRS.java index 529e0c276..50186577d 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemSwordSPRS.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/items/tools/ItemSwordSPRS.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.util.IName; import ellpeck.someprettyrandomstuff.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.util.IIcon; @@ -17,11 +18,13 @@ import java.util.List; public class ItemSwordSPRS extends ItemSword implements IName{ private String name; + private EnumRarity rarity; - public ItemSwordSPRS(ToolMaterial toolMat, String unlocalizedName){ + public ItemSwordSPRS(ToolMaterial toolMat, String unlocalizedName, EnumRarity rarity){ super(toolMat); this.name = unlocalizedName; - this.setUnlocalizedName(Util.getNamePrefix() + this.getName()); + this.rarity = rarity; + this.setUnlocalizedName(Util.setUnlocalizedName(this)); this.setCreativeTab(CreativeTab.instance); } @@ -35,6 +38,11 @@ public class ItemSwordSPRS extends ItemSword implements IName{ } } + @Override + public EnumRarity getRarity(ItemStack stack){ + return this.rarity; + } + @Override public IIcon getIcon(ItemStack stack, int pass){ return this.itemIcon; diff --git a/src/main/java/ellpeck/someprettyrandomstuff/material/InitItemMaterials.java b/src/main/java/ellpeck/someprettyrandomstuff/material/InitItemMaterials.java index 65f20775b..638c9a35d 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/material/InitItemMaterials.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/material/InitItemMaterials.java @@ -2,7 +2,10 @@ package ellpeck.someprettyrandomstuff.material; import ellpeck.someprettyrandomstuff.config.ConfigValues; import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.EnumHelper; public class InitItemMaterials{ @@ -13,8 +16,8 @@ public class InitItemMaterials{ public static void init(){ Util.logInfo("Initializing Materials..."); - toolMaterialEmerald = EnumHelper.addToolMaterial("toolMaterialEmerald", ConfigValues.toolEmeraldHarvestLevel, ConfigValues.toolEmeraldMaxUses, ConfigValues.toolEmeraldEfficiency, ConfigValues.toolEmeraldDamage, ConfigValues.toolEmeraldEnchantability); - toolMaterialObsidian = EnumHelper.addToolMaterial("toolMaterialObsidian", ConfigValues.toolObsidianHarvestLevel, ConfigValues.toolObsidianMaxUses, ConfigValues.toolObsidianEfficiency, ConfigValues.toolObsidianDamage, ConfigValues.toolObsidianEnchantability); + toolMaterialEmerald = EnumHelper.addToolMaterial("toolMaterialEmerald", ConfigValues.toolEmeraldHarvestLevel, ConfigValues.toolEmeraldMaxUses, ConfigValues.toolEmeraldEfficiency, ConfigValues.toolEmeraldDamage, ConfigValues.toolEmeraldEnchantability).setRepairItem(new ItemStack(Items.emerald)); + toolMaterialObsidian = EnumHelper.addToolMaterial("toolMaterialObsidian", ConfigValues.toolObsidianHarvestLevel, ConfigValues.toolObsidianMaxUses, ConfigValues.toolObsidianEfficiency, ConfigValues.toolObsidianDamage, ConfigValues.toolObsidianEnchantability).setRepairItem(new ItemStack(Blocks.obsidian)); } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/oredict/OreDictRegistry.java b/src/main/java/ellpeck/someprettyrandomstuff/oredict/OreDictRegistry.java new file mode 100644 index 000000000..84f59db3f --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/oredict/OreDictRegistry.java @@ -0,0 +1,17 @@ +package ellpeck.someprettyrandomstuff.oredict; + +import ellpeck.someprettyrandomstuff.items.InitItems; +import ellpeck.someprettyrandomstuff.items.metalists.TheDusts; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + +public class OreDictRegistry{ + + public static void init(){ + OreDictionary.registerOre("dustDiamond", new ItemStack(InitItems.itemDust, 1, TheDusts.DIAMOND.ordinal())); + OreDictionary.registerOre("dustIron", new ItemStack(InitItems.itemDust, 1, TheDusts.IRON.ordinal())); + OreDictionary.registerOre("dustGold", new ItemStack(InitItems.itemDust, 1, TheDusts.GOLD.ordinal())); + OreDictionary.registerOre("dustEmerald", new ItemStack(InitItems.itemDust, 1, TheDusts.EMERALD.ordinal())); + OreDictionary.registerOre("dustLapis", new ItemStack(InitItems.itemDust, 1, TheDusts.LAPIS.ordinal())); + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/proxy/ClientProxy.java b/src/main/java/ellpeck/someprettyrandomstuff/proxy/ClientProxy.java index 9e4275730..1f9339317 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/proxy/ClientProxy.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/proxy/ClientProxy.java @@ -1,6 +1,15 @@ package ellpeck.someprettyrandomstuff.proxy; +import cpw.mods.fml.client.registry.ClientRegistry; +import ellpeck.someprettyrandomstuff.blocks.InitBlocks; +import ellpeck.someprettyrandomstuff.blocks.render.ModelCompost; +import ellpeck.someprettyrandomstuff.blocks.render.RenderItems; +import ellpeck.someprettyrandomstuff.blocks.render.RenderTileEntity; +import ellpeck.someprettyrandomstuff.tile.TileEntityCompost; +import net.minecraft.item.Item; +import net.minecraftforge.client.MinecraftForgeClient; + @SuppressWarnings("unused") public class ClientProxy implements IProxy{ @@ -11,7 +20,8 @@ public class ClientProxy implements IProxy{ @Override public void init(){ - + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCompost.class, new RenderTileEntity(new ModelCompost())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockCompost), new RenderItems(new ModelCompost())); } @Override diff --git a/src/main/java/ellpeck/someprettyrandomstuff/recipe/GrinderRecipes.java b/src/main/java/ellpeck/someprettyrandomstuff/recipe/GrinderRecipes.java new file mode 100644 index 000000000..30b567961 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/recipe/GrinderRecipes.java @@ -0,0 +1,54 @@ +package ellpeck.someprettyrandomstuff.recipe; + +import net.minecraft.item.ItemStack; + +import java.util.ArrayList; + +public class GrinderRecipes{ + + private static final GrinderRecipes instance = new GrinderRecipes(); + + public ArrayList recipes = new ArrayList(); + + public static GrinderRecipes instance(){ + return instance; + } + + public void registerRecipe(ItemStack input, ItemStack outputOne, ItemStack outputTwo, int secondChance){ + this.recipes.add(new GrinderRecipe(input, outputOne, outputTwo, secondChance)); + } + + public ItemStack getOutput(ItemStack input, boolean wantSecond){ + for(GrinderRecipe recipe : recipes){ + if(recipe.input.isItemEqual(input)){ + return wantSecond ? recipe.secondOutput : recipe.firstOutput; + } + } + return null; + } + + public int getSecondChance(ItemStack input){ + for(GrinderRecipe recipe : recipes){ + if(recipe.input.isItemEqual(input)){ + return recipe.secondChance; + } + } + return 0; + } + + public class GrinderRecipe{ + + public final ItemStack input; + public final ItemStack firstOutput; + public final ItemStack secondOutput; + public final int secondChance; + + public GrinderRecipe(ItemStack input, ItemStack firstOutput, ItemStack secondOutput, int secondChance){ + this.input = input; + this.firstOutput = firstOutput; + this.secondOutput = secondOutput; + this.secondChance = secondChance; + } + + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityBase.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityBase.java index ecb2dab29..3f0b92c15 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityBase.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityBase.java @@ -2,13 +2,16 @@ package ellpeck.someprettyrandomstuff.tile; import cpw.mods.fml.common.registry.GameRegistry; import ellpeck.someprettyrandomstuff.util.Util; +import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; 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; +import net.minecraft.world.World; -public abstract class TileEntityBase extends TileEntity{ +public class TileEntityBase extends TileEntity{ @Override public Packet getDescriptionPacket(){ @@ -28,5 +31,12 @@ public abstract class TileEntityBase extends TileEntity{ GameRegistry.registerTileEntity(TileEntityCompost.class, Util.MOD_ID_LOWER + ":tileEntityCompost"); GameRegistry.registerTileEntity(TileEntityFeeder.class, Util.MOD_ID_LOWER + ":tileEntityFeeder"); GameRegistry.registerTileEntity(TileEntityGiantChest.class, Util.MOD_ID_LOWER + ":tileEntityGiantChest"); + GameRegistry.registerTileEntity(TileEntityGrinder.class, Util.MOD_ID_LOWER + ":tileEntityGrinder"); + GameRegistry.registerTileEntity(TileEntityFurnaceDouble.class, Util.MOD_ID_LOWER + ":tileEntityFurnaceDouble"); } -} + + @Override + public boolean shouldRefresh(Block oldBlock, Block newBlock, int oldMeta, int newMeta, World world, int x, int y, int z){ + return newBlock == null || newBlock instanceof BlockAir; + } +} \ No newline at end of file diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityCompost.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityCompost.java index 41b7e61b1..de8cfc73f 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityCompost.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityCompost.java @@ -3,6 +3,8 @@ package ellpeck.someprettyrandomstuff.tile; import ellpeck.someprettyrandomstuff.config.ConfigValues; import ellpeck.someprettyrandomstuff.items.InitItems; import ellpeck.someprettyrandomstuff.items.ItemFertilizer; +import ellpeck.someprettyrandomstuff.items.ItemMisc; +import ellpeck.someprettyrandomstuff.items.metalists.TheMiscItems; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -30,6 +32,11 @@ public class TileEntityCompost extends TileEntityInventoryBase{ } } + @Override + public int getInventoryStackLimit(){ + return this.amountNeededToConvert; + } + @Override public void writeToNBT(NBTTagCompound compound){ super.writeToNBT(compound); @@ -41,4 +48,19 @@ public class TileEntityCompost extends TileEntityInventoryBase{ super.readFromNBT(compound); this.conversionTime = compound.getInteger("ConversionTime"); } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return stack.getItem() instanceof ItemMisc && stack.getItemDamage() == TheMiscItems.MASHED_FOOD.ordinal(); + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return stack.getItem() instanceof ItemFertilizer; + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFeeder.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFeeder.java index 38de7fd6d..62524cb53 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFeeder.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFeeder.java @@ -7,6 +7,7 @@ import ellpeck.someprettyrandomstuff.config.ConfigValues; import ellpeck.someprettyrandomstuff.network.PacketHandler; import ellpeck.someprettyrandomstuff.network.PacketTileEntityFeeder; import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; @@ -83,4 +84,19 @@ public class TileEntityFeeder extends TileEntityInventoryBase{ super.readFromNBT(compound); this.currentTimer = compound.getInteger("Timer"); } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return true; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return false; + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFurnaceDouble.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFurnaceDouble.java new file mode 100644 index 000000000..2cdd661a2 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityFurnaceDouble.java @@ -0,0 +1,155 @@ +package ellpeck.someprettyrandomstuff.tile; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntityFurnace; + +public class TileEntityFurnaceDouble extends TileEntityInventoryBase{ + + public static final int SLOT_COAL = 0; + public static final int SLOT_INPUT_1 = 1; + public static final int SLOT_OUTPUT_1 = 2; + public static final int SLOT_INPUT_2 = 3; + public static final int SLOT_OUTPUT_2 = 4; + + public int coalTime; + public int coalTimeLeft; + + public final int maxBurnTime; + + public int firstSmeltTime; + public int secondSmeltTime; + + public TileEntityFurnaceDouble(){ + super(5, "tileEntityFurnaceDouble"); + this.maxBurnTime = ConfigValues.furnaceDoubleSmeltTime; + } + + @Override + @SuppressWarnings("unchecked") + public void updateEntity(){ + if(!worldObj.isRemote){ + boolean theFlag = this.coalTimeLeft > 0; + + if(this.coalTimeLeft > 0) this.coalTimeLeft--; + + boolean canSmeltOnFirst = this.canSmeltOn(SLOT_INPUT_1, SLOT_OUTPUT_1); + boolean canSmeltOnSecond = this.canSmeltOn(SLOT_INPUT_2, SLOT_OUTPUT_2); + + if((canSmeltOnFirst || canSmeltOnSecond) && this.coalTimeLeft <= 0 && this.slots[SLOT_COAL] != null){ + this.coalTime = TileEntityFurnace.getItemBurnTime(this.slots[SLOT_COAL]); + this.coalTimeLeft = this.coalTime; + if(this.coalTime > 0){ + this.slots[SLOT_COAL].stackSize--; + if(this.slots[SLOT_COAL].stackSize <= 0) this.slots[SLOT_COAL] = this.slots[SLOT_COAL].getItem().getContainerItem(this.slots[SLOT_COAL]); + } + } + + if(this.coalTimeLeft > 0){ + if(canSmeltOnFirst){ + this.firstSmeltTime++; + if(this.firstSmeltTime >= maxBurnTime){ + this.finishBurning(SLOT_INPUT_1, SLOT_OUTPUT_1); + this.firstSmeltTime = 0; + } + } + else this.firstSmeltTime = 0; + + if(canSmeltOnSecond){ + this.secondSmeltTime++; + if(this.secondSmeltTime >= maxBurnTime){ + this.finishBurning(SLOT_INPUT_2, SLOT_OUTPUT_2); + this.secondSmeltTime = 0; + } + } + else this.secondSmeltTime = 0; + } + else{ + this.firstSmeltTime = 0; + this.secondSmeltTime = 0; + this.coalTime = 0; + } + + if(theFlag != this.coalTimeLeft > 0){ + int metaBefore = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, (this.coalTimeLeft > 0 ? metaBefore+4 : metaBefore-4), 2); + } + } + + } + + public boolean canSmeltOn(int theInput, int theOutput){ + if(this.slots[theInput] != null){ + ItemStack output = FurnaceRecipes.smelting().getSmeltingResult(this.slots[theInput]); + if(this.slots[theInput] != null){ + if(output != null){ + if(this.slots[theOutput] == null || (this.slots[theOutput].isItemEqual(output) && this.slots[theOutput].stackSize <= this.slots[theOutput].getMaxStackSize()-output.stackSize)){ + return true; + } + } + } + } + return false; + } + + public void finishBurning(int theInput, int theOutput){ + ItemStack output = FurnaceRecipes.smelting().getSmeltingResult(this.slots[theInput]); + if (this.slots[theOutput] == null) this.slots[theOutput] = output.copy(); + else if(this.slots[theOutput].getItem() == output.getItem()) this.slots[theOutput].stackSize += output.stackSize; + + this.slots[theInput].stackSize--; + if (this.slots[theInput].stackSize <= 0) this.slots[theInput] = null; + } + + @Override + public void writeToNBT(NBTTagCompound compound){ + super.writeToNBT(compound); + compound.setInteger("CoalTime", this.coalTime); + compound.setInteger("CoalTimeLeft", this.coalTimeLeft); + compound.setInteger("FirstSmeltTime", this.firstSmeltTime); + compound.setInteger("SecondSmeltTime", this.secondSmeltTime); + } + + @Override + public void readFromNBT(NBTTagCompound compound){ + super.readFromNBT(compound); + this.coalTime = compound.getInteger("CoalTime"); + this.coalTimeLeft = compound.getInteger("CoalTimeLeft"); + this.firstSmeltTime = compound.getInteger("FirstSmeltTime"); + this.secondSmeltTime = compound.getInteger("SecondSmeltTime"); + } + + @SideOnly(Side.CLIENT) + public int getCoalTimeToScale(int i){ + return this.coalTimeLeft * i / this.coalTime; + } + + @SideOnly(Side.CLIENT) + public int getFirstTimeToScale(int i){ + return this.firstSmeltTime * i / this.maxBurnTime; + } + + @SideOnly(Side.CLIENT) + public int getSecondTimeToScale(int i){ + return this.secondSmeltTime * i / this.maxBurnTime; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return i == SLOT_COAL && TileEntityFurnace.getItemBurnTime(stack) > 0 || (i == SLOT_INPUT_1 || i == SLOT_INPUT_2) && FurnaceRecipes.smelting().getSmeltingResult(stack) != null; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return slot == SLOT_OUTPUT_1 || slot == SLOT_OUTPUT_2; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGiantChest.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGiantChest.java index d5e8358d3..ff9987dfa 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGiantChest.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGiantChest.java @@ -40,4 +40,24 @@ public class TileEntityGiantChest extends TileEntityInventoryBase{ } } } + + @Override + public boolean canUpdate(){ + return false; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return true; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return true; + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGrinder.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGrinder.java new file mode 100644 index 000000000..464ffe6e8 --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityGrinder.java @@ -0,0 +1,186 @@ +package ellpeck.someprettyrandomstuff.tile; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.someprettyrandomstuff.config.ConfigValues; +import ellpeck.someprettyrandomstuff.recipe.GrinderRecipes; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntityFurnace; + +import java.util.Random; + +public class TileEntityGrinder extends TileEntityInventoryBase{ + + public static final int SLOT_COAL = 0; + public static final int SLOT_INPUT_1 = 1; + public static final int SLOT_OUTPUT_1_1 = 2; + public static final int SLOT_OUTPUT_1_2 = 3; + public static final int SLOT_INPUT_2 = 4; + public static final int SLOT_OUTPUT_2_1 = 5; + public static final int SLOT_OUTPUT_2_2 = 6; + + public int coalTime; + public int coalTimeLeft; + + public int maxCrushTime; + + public int firstCrushTime; + public int secondCrushTime; + + public boolean isDouble; + + public TileEntityGrinder(){ + super(0, ""); + } + + public TileEntityGrinder(boolean isDouble){ + super(isDouble ? 7 : 4, isDouble ? "tileEntityGrinderDouble" : "tileEntityGrinder"); + this.maxCrushTime = isDouble ? ConfigValues.grinderDoubleCrushTime : ConfigValues.grinderCrushTime; + this.isDouble = isDouble; + } + + @Override + @SuppressWarnings("unchecked") + public void updateEntity(){ + if(!worldObj.isRemote){ + boolean theFlag = this.coalTimeLeft > 0; + + if(this.coalTimeLeft > 0) this.coalTimeLeft--; + + boolean canCrushOnFirst = this.canCrushOn(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2); + boolean canCrushOnSecond = false; + if(this.isDouble) canCrushOnSecond = this.canCrushOn(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2); + + if((canCrushOnFirst || canCrushOnSecond) && this.coalTimeLeft <= 0 && this.slots[SLOT_COAL] != null){ + this.coalTime = TileEntityFurnace.getItemBurnTime(this.slots[SLOT_COAL]); + this.coalTimeLeft = this.coalTime; + if(this.coalTime > 0){ + this.slots[SLOT_COAL].stackSize--; + if(this.slots[SLOT_COAL].stackSize <= 0) this.slots[SLOT_COAL] = this.slots[SLOT_COAL].getItem().getContainerItem(this.slots[SLOT_COAL]); + } + } + + if(this.coalTimeLeft > 0){ + if(canCrushOnFirst){ + this.firstCrushTime++; + if(this.firstCrushTime >= maxCrushTime){ + this.finishCrushing(SLOT_INPUT_1, SLOT_OUTPUT_1_1, SLOT_OUTPUT_1_2); + this.firstCrushTime = 0; + } + } + else this.firstCrushTime = 0; + + if(this.isDouble){ + if(canCrushOnSecond){ + this.secondCrushTime++; + if(this.secondCrushTime >= maxCrushTime){ + this.finishCrushing(SLOT_INPUT_2, SLOT_OUTPUT_2_1, SLOT_OUTPUT_2_2); + this.secondCrushTime = 0; + } + } + else this.secondCrushTime = 0; + } + } + else{ + this.firstCrushTime = 0; + this.secondCrushTime = 0; + this.coalTime = 0; + } + + if(theFlag != this.coalTimeLeft > 0){ + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, (this.coalTimeLeft > 0 ? 1 : 0), 2); + } + } + } + + public boolean canCrushOn(int theInput, int theFirstOutput, int theSecondOutput){ + if(this.slots[theInput] != null){ + ItemStack outputOne = GrinderRecipes.instance().getOutput(this.slots[theInput], false); + ItemStack outputTwo = GrinderRecipes.instance().getOutput(this.slots[theInput], true); + if(this.slots[theInput] != null){ + if(outputOne != null){ + if((this.slots[theFirstOutput] == null || (this.slots[theFirstOutput].isItemEqual(outputOne) && this.slots[theFirstOutput].stackSize <= this.slots[theFirstOutput].getMaxStackSize()-outputOne.stackSize)) && (outputTwo == null || (this.slots[theSecondOutput] == null || (this.slots[theSecondOutput].isItemEqual(outputTwo) && this.slots[theSecondOutput].stackSize <= this.slots[theSecondOutput].getMaxStackSize()-outputTwo.stackSize)))){ + return true; + } + } + } + } + return false; + } + + public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){ + ItemStack outputOnFirst = GrinderRecipes.instance().getOutput(this.slots[theInput], false); + if (this.slots[theFirstOutput] == null) this.slots[theFirstOutput] = outputOnFirst.copy(); + else if(this.slots[theFirstOutput].getItem() == outputOnFirst.getItem()) this.slots[theFirstOutput].stackSize += outputOnFirst.stackSize; + + int chance = GrinderRecipes.instance().getSecondChance(this.slots[theInput]); + ItemStack outputOnSecond = GrinderRecipes.instance().getOutput(this.slots[theInput], true); + if(outputOnSecond != null){ + int rand = new Random().nextInt(100) + 1; + if(rand <= chance){ + if(this.slots[theSecondOutput] == null) this.slots[theSecondOutput] = outputOnSecond.copy(); + else if(this.slots[theSecondOutput].getItem() == outputOnSecond.getItem()) this.slots[theSecondOutput].stackSize += outputOnSecond.stackSize; + } + } + + this.slots[theInput].stackSize--; + if (this.slots[theInput].stackSize <= 0) this.slots[theInput] = null; + } + + @Override + public void writeToNBT(NBTTagCompound compound){ + compound.setInteger("CoalTime", this.coalTime); + compound.setInteger("CoalTimeLeft", this.coalTimeLeft); + compound.setInteger("FirstCrushTime", this.firstCrushTime); + compound.setInteger("SecondCrushTime", this.secondCrushTime); + compound.setInteger("MaxCrushTime", this.maxCrushTime); + compound.setBoolean("IsDouble", this.isDouble); + compound.setString("Name", this.name); + compound.setInteger("Slots", this.slots.length); + super.writeToNBT(compound); + } + + @Override + public void readFromNBT(NBTTagCompound compound){ + this.coalTime = compound.getInteger("CoalTime"); + this.coalTimeLeft = compound.getInteger("CoalTimeLeft"); + this.firstCrushTime = compound.getInteger("FirstCrushTime"); + this.secondCrushTime = compound.getInteger("SecondCrushTime"); + this.maxCrushTime = compound.getInteger("MaxCrushTime"); + this.isDouble = compound.getBoolean("IsDouble"); + this.name = compound.getString("Name"); + this.initializeSlots(compound.getInteger("Slots")); + super.readFromNBT(compound); + } + + @SideOnly(Side.CLIENT) + public int getCoalTimeToScale(int i){ + return this.coalTimeLeft * i / this.coalTime; + } + + @SideOnly(Side.CLIENT) + public int getFirstTimeToScale(int i){ + return this.firstCrushTime * i / this.maxCrushTime; + } + + @SideOnly(Side.CLIENT) + public int getSecondTimeToScale(int i){ + return this.secondCrushTime * i / this.maxCrushTime; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack){ + return i == SLOT_COAL && TileEntityFurnace.getItemBurnTime(stack) > 0 || (i == SLOT_INPUT_1 || i == SLOT_INPUT_2) && GrinderRecipes.instance().getOutput(stack, false) != null; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side){ + return this.isItemValidForSlot(slot, stack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side){ + return slot == SLOT_OUTPUT_1_1 || slot == SLOT_OUTPUT_1_2 || slot == SLOT_OUTPUT_2_1 || slot == SLOT_OUTPUT_2_2; + } +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityInventoryBase.java b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityInventoryBase.java index e54c06de1..7c0036d9f 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityInventoryBase.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/tile/TileEntityInventoryBase.java @@ -1,12 +1,12 @@ package ellpeck.someprettyrandomstuff.tile; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -public abstract class TileEntityInventoryBase extends TileEntityBase implements IInventory{ +public abstract class TileEntityInventoryBase extends TileEntityBase implements ISidedInventory{ public ItemStack slots[]; public String name; @@ -20,7 +20,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements public void writeToNBT(NBTTagCompound compound){ super.writeToNBT(compound); NBTTagList tagList = new NBTTagList(); - for(int currentIndex = 0; currentIndex < slots.length; ++currentIndex){ + for(int currentIndex = 0; currentIndex < slots.length; currentIndex++){ if (slots[currentIndex] != null){ NBTTagCompound tagCompound = new NBTTagCompound(); tagCompound.setByte("Slot", (byte)currentIndex); @@ -35,7 +35,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements public void readFromNBT(NBTTagCompound compound){ super.readFromNBT(compound); NBTTagList tagList = compound.getTagList("Items", 10); - for (int i = 0; i < tagList.tagCount(); ++i){ + for (int i = 0; i < tagList.tagCount(); i++){ NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); byte slotIndex = tagCompound.getByte("Slot"); if (slotIndex >= 0 && slotIndex < slots.length){ @@ -120,4 +120,13 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements public void closeInventory(){ } + + @Override + public int[] getAccessibleSlotsFromSide(int side){ + int[] theInt = new int[slots.length]; + for(int i = 0; i < theInt.length; i++){ + theInt[i] = i; + } + return theInt; + } } diff --git a/src/main/java/ellpeck/someprettyrandomstuff/util/IInformation.java b/src/main/java/ellpeck/someprettyrandomstuff/util/IInformation.java new file mode 100644 index 000000000..554cf3fed --- /dev/null +++ b/src/main/java/ellpeck/someprettyrandomstuff/util/IInformation.java @@ -0,0 +1,7 @@ +package ellpeck.someprettyrandomstuff.util; + +public interface IInformation{ + + public abstract String[] getInformationString(); + +} diff --git a/src/main/java/ellpeck/someprettyrandomstuff/util/Util.java b/src/main/java/ellpeck/someprettyrandomstuff/util/Util.java index 169231b92..b7e0838ea 100644 --- a/src/main/java/ellpeck/someprettyrandomstuff/util/Util.java +++ b/src/main/java/ellpeck/someprettyrandomstuff/util/Util.java @@ -1,9 +1,13 @@ package ellpeck.someprettyrandomstuff.util; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.oredict.OreDictionary; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; @@ -44,11 +48,14 @@ public class Util{ public static final String UNDERLINE = (char)167 + "n"; public static final String ITALIC = (char)167 + "o"; + public static final String[] ROMAN_NUMERALS = new String[]{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"}; + + public static final int DECIMAL_COLOR_WHITE = 16777215; + public static boolean isShiftPressed(){ return Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT); } - @SuppressWarnings("unused") public static boolean isControlPressed(){ return Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL); } @@ -58,11 +65,8 @@ public class Util{ } public static String addStandardInformation(Item item){ - if(item instanceof IName){ - if(isShiftPressed()) return StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)item).getName() + ".desc"); - else return shiftForInfo(); - } - return null; + if(isShiftPressed()) return StatCollector.translateToLocal("tooltip." + Util.MOD_ID_LOWER + "." + ((IName)item).getName() + ".desc"); + else return shiftForInfo(); } public static void logInfo(String text){ @@ -71,9 +75,7 @@ public class Util{ public static void registerItems(Item[] items){ for(Item item : items){ - if(item instanceof IName){ - GameRegistry.registerItem(item, ((IName)item).getName()); - } + register(item); } } @@ -81,7 +83,24 @@ public class Util{ return new ResourceLocation(MOD_ID_LOWER, "textures/gui/" + file + ".png"); } - public static String getNamePrefix(){ - return MOD_ID_LOWER + "."; + public static String setUnlocalizedName(Item item){ + return MOD_ID_LOWER + "." + ((IName)item).getName(); + } + + public static String setUnlocalizedName(Block block){ + return MOD_ID_LOWER + "." + ((IName)block).getName(); + } + + public static void register(Item item){ + GameRegistry.registerItem(item, ((IName)item).getName()); + } + + public static void register(Block block, Class itemBlock){ + GameRegistry.registerBlock(block, itemBlock, ((IName)block).getName()); + } + + public static void registerEvent(Object o){ + FMLCommonHandler.instance().bus().register(o); + MinecraftForge.EVENT_BUS.register(o); } } \ No newline at end of file diff --git a/src/main/resources/assets/someprettyrandomstuff/lang/en_US.lang b/src/main/resources/assets/someprettyrandomstuff/lang/en_US.lang index 8fc6e9f3a..217220c21 100644 --- a/src/main/resources/assets/someprettyrandomstuff/lang/en_US.lang +++ b/src/main/resources/assets/someprettyrandomstuff/lang/en_US.lang @@ -8,12 +8,11 @@ tile.someprettyrandomstuff.blockMiscBlackQuartzChiseled.name=Chiseled Block of B tile.someprettyrandomstuff.blockMiscBlackQuartzPillar.name=Pillar of Black Quartz tile.someprettyrandomstuff.blockFeeder.name=Automatic Feeder tile.someprettyrandomstuff.blockGiantChest.name=Giant Chest +tile.someprettyrandomstuff.blockGrinder.name=Crusher +tile.someprettyrandomstuff.blockGrinderDouble.name=Double Crusher +tile.someprettyrandomstuff.blockFurnaceDouble.name=Double Furnace item.someprettyrandomstuff.itemMiscMashedFood.name=Mashed Food -item.someprettyrandomstuff.itemMiscRefinedIron.name=Refined Iron -item.someprettyrandomstuff.itemMiscRefinedRedstone.name=Refined Redstone -item.someprettyrandomstuff.itemMiscCompressedIron.name=Compressed Iron -item.someprettyrandomstuff.itemMiscSteel.name=Steel item.someprettyrandomstuff.itemFertilizer.name=Fertilizer item.someprettyrandomstuff.itemMiscDough.name=Dough item.someprettyrandomstuff.itemMiscPaperCone.name=Paper Cone @@ -32,6 +31,7 @@ item.someprettyrandomstuff.itemAxeObsidian.name=Obsidian Axe item.someprettyrandomstuff.itemShovelObsidian.name=Obsidian Shovel item.someprettyrandomstuff.itemHoeObsidian.name=Obsidian Hoe item.someprettyrandomstuff.itemSwordObsidian.name=Obsidian Sword +item.someprettyrandomstuff.itemCrafterOnAStick.name=Crafting Table On A Stick item.someprettyrandomstuff.itemFoodBaguette.name=Baguette item.someprettyrandomstuff.itemFoodPizza.name=Pizza @@ -50,24 +50,42 @@ item.someprettyrandomstuff.itemFoodCarrotJuice.name=Carrot Juice item.someprettyrandomstuff.itemFoodPumpkinStew.name=Pumpkin Stew item.someprettyrandomstuff.itemFoodCheese.name=Cheese +item.someprettyrandomstuff.itemSpecialUnknownSubstance.name=Unknown Substance +item.someprettyrandomstuff.itemSpecialSolidifiedExperience.name=Solidified Experience +item.someprettyrandomstuff.itemSpecialBloodFragment.name=Blood Fragment +item.someprettyrandomstuff.itemSpecialHeartPart.name=Part of a Heart +item.someprettyrandomstuff.itemSpecialPearlShard.name=Ender Pearl Shard +item.someprettyrandomstuff.itemSpecialEmeraldShard.name=Emerald Shard + +item.someprettyrandomstuff.itemDustIron.name=Crushed Iron +item.someprettyrandomstuff.itemDustGold.name=Crushed Gold +item.someprettyrandomstuff.itemDustDiamond.name=Crushed Diamond +item.someprettyrandomstuff.itemDustLapis.name=Crushed Lapis +item.someprettyrandomstuff.itemDustEmerald.name=Crushed Emerald + tooltip.someprettyrandomstuff.shiftForInfo.desc=Press Shift for Info tooltip.someprettyrandomstuff.hunger.desc=Fills tooltip.someprettyrandomstuff.saturation.desc=Saturation tooltip.someprettyrandomstuff.durability.desc=Durability -tooltip.someprettyrandomstuff.blockCompost.desc=Used to make Fertilizer with Mashed Food +tooltip.someprettyrandomstuff.blockCompost.desc.1=Used to make Fertilizer with Mashed Food +tooltip.someprettyrandomstuff.blockCompost.desc.2=BETA INFO: Will visually contain Compost in the Future! tooltip.someprettyrandomstuff.blockMiscOreBlackQuartz.desc=The darkest form of Quartz. Also: You had Silk Touch! tooltip.someprettyrandomstuff.blockMiscBlackQuartz.desc=Black, eerie Quartz! Nice for decorating. tooltip.someprettyrandomstuff.blockMiscBlackQuartzChiseled.desc=Black, eerie chiseled Quartz! Nice for decorating. tooltip.someprettyrandomstuff.blockMiscBlackQuartzPillar.desc=Kind of a pillar. Not really, though. It's fake! Fake I say! tooltip.someprettyrandomstuff.blockFeeder.desc=Feeds Animals on its own! tooltip.someprettyrandomstuff.blockGiantChest.desc=GUI Scale on 'Auto'? That's a problem! +tooltip.someprettyrandomstuff.blockGrinder.desc.1=Crushes Ores into Dusts! +tooltip.someprettyrandomstuff.blockGrinder.desc.2=You get two Dusts per Ore and Extras! +tooltip.someprettyrandomstuff.blockGrinder.desc.3=To crush two ores simultaneously, +tooltip.someprettyrandomstuff.blockGrinder.desc.4=build the Double Crusher! +tooltip.someprettyrandomstuff.blockGrinderDouble.desc.1=Crushes Ores into Dusts! +tooltip.someprettyrandomstuff.blockGrinderDouble.desc.2=You get two Dusts per Ore and Extras! +tooltip.someprettyrandomstuff.blockGrinderDouble.desc.3=Can crush two Ores simultaneously! +tooltip.someprettyrandomstuff.blockFurnaceDouble.desc=Smelts two Things simultaneously! tooltip.someprettyrandomstuff.itemMiscMashedFood.desc=Used to make Fertilizer -tooltip.someprettyrandomstuff.itemMiscRefinedIron.desc=Iron, but better -tooltip.someprettyrandomstuff.itemMiscRefinedRedstone.desc=Redstone, but better -tooltip.someprettyrandomstuff.itemMiscCompressedIron.desc=Iron, but compressed -tooltip.someprettyrandomstuff.itemMiscSteel.desc=Like Iron, but stronger. Much stronger. tooltip.someprettyrandomstuff.itemFertilizer.desc=Om nom nom. Don't eat it. tooltip.someprettyrandomstuff.itemMiscDough.desc=Used to make things that involve dough. tooltip.someprettyrandomstuff.itemMiscPaperCone.desc=Used to store foodstuffs! @@ -86,12 +104,13 @@ tooltip.someprettyrandomstuff.itemAxeObsidian.desc=Mines Wood. Slooooowly. tooltip.someprettyrandomstuff.itemShovelObsidian.desc=Mines Dirt. Slooooowly. tooltip.someprettyrandomstuff.itemHoeObsidian.desc=Mines... uhm... yea. tooltip.someprettyrandomstuff.itemSwordObsidian.desc=Mines... mobs? +tooltip.someprettyrandomstuff.itemCrafterOnAStick.desc=A Crafting Table you can carry around! tooltip.someprettyrandomstuff.itemFoodBaguette.desc=It's french. It's noms. tooltip.someprettyrandomstuff.itemFoodPizza.desc=Who doesn't like it? tooltip.someprettyrandomstuff.itemFoodHamburger.desc=It's from a german city! tooltip.someprettyrandomstuff.itemFoodBigCookie.desc=Do you know? The Subway Thing? -tooltip.someprettyrandomstuff.itemFoodSubmarineSandwich.desc=Do you know? The Subway and everything else Thing? +tooltip.someprettyrandomstuff.itemFoodSubmarineSandwich.desc=Just like Subway used to make! ...still does, right? tooltip.someprettyrandomstuff.itemFoodToast.desc="GHOSTS! GHOSTS! TOASTS!" tooltip.someprettyrandomstuff.itemFoodChocolate.desc=Lari likes. tooltip.someprettyrandomstuff.itemFoodChocolateCake.desc=Looks delicious. With redberries. Or something. @@ -104,6 +123,19 @@ tooltip.someprettyrandomstuff.itemFoodCarrotJuice.desc=Carrots, but pressed! tooltip.someprettyrandomstuff.itemFoodPumpkinStew.desc=Like Mushroom Stew or Rabbit Stew, but pumpykinny. tooltip.someprettyrandomstuff.itemFoodCheese.desc=Cheese. +tooltip.someprettyrandomstuff.itemSpecialUnknownSubstance.desc=Dropped by Skeletons. BETA INFO: Useless as of yet. +tooltip.someprettyrandomstuff.itemSpecialSolidifiedExperience.desc=Dropped by everyone. BETA INFO: Useless as of yet. +tooltip.someprettyrandomstuff.itemSpecialBloodFragment.desc=Dropped by everyone. BETA INFO: Useless as of yet. +tooltip.someprettyrandomstuff.itemSpecialHeartPart.desc=Dropped by everyone. BETA INFO: Useless as of yet. +tooltip.someprettyrandomstuff.itemSpecialPearlShard.desc=Dropped by Endermen. BETA INFO: Useless as of yet. +tooltip.someprettyrandomstuff.itemSpecialEmeraldShard.desc=Dropped by Creepers. BETA INFO: Useless as of yet. + +tooltip.someprettyrandomstuff.itemDustIron.desc=Iron! Crushed in the Crusher! +tooltip.someprettyrandomstuff.itemDustGold.desc=Gold! Crushed in the Crusher! +tooltip.someprettyrandomstuff.itemDustDiamond.desc=Diamond! Crushed in the Crusher! +tooltip.someprettyrandomstuff.itemDustLapis.desc=Lapis! Crushed in the Crusher! +tooltip.someprettyrandomstuff.itemDustEmerald.desc=Emerald! Crushed in the Crusher! + achievement.someprettyrandomstuff.smeltBaguette=Better than Bread! achievement.someprettyrandomstuff.smeltBaguette.desc=Bake a Baguette achievement.someprettyrandomstuff.craftDough=Knead, knead! @@ -129,8 +161,7 @@ achievement.someprettyrandomstuff.craftKnifeBlade.desc=Craft a Knife Blade achievement.someprettyrandomstuff.craftKnife=Sharper! Even sharper! achievement.someprettyrandomstuff.craftKnife.desc=Craft a Knife -info.someprettyrandomstuff.feeder.animal.desc=Animal -info.someprettyrandomstuff.feeder.animalsSuffix.desc=s +info.someprettyrandomstuff.feeder.animals.desc=Animals info.someprettyrandomstuff.feeder.enoughToBreed.desc=Enough to breed! info.someprettyrandomstuff.feeder.tooMany.desc=Too many to breed! info.someprettyrandomstuff.feeder.notEnough.desc=Not enough to breed! \ No newline at end of file diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostBottom.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostBottom.png deleted file mode 100644 index 790d97dced208c2edbf81aa05912e60dea2553cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_&Op{I*u zh=qUh4P)h(|Nn@^Tcjy4IJ`=fSR;4rrjg>S`ocM?j?50T9I^~~8cqrGK442}llae` zxWeKh!;`3_7#l7(js+^JO!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPXH$kW9! z#KJ#y;%>e}1_CUy0WOodxu{s`xT9bU7Y4IF1DXe!-VRN!6O6|QB(#reI;f9|~n-L6}M)X#3t$=`4;h`G^Z zD#NVf(pMBeO^CU!rgB1NbLA$!7x@9tOL(%1*59VQ(3lD>3@ zkn9rMNgpGp&#QmXyiusaF3(GL`=gfhg!q#_LMxLSQ%s&PRX*A&64d{eyIjHP<|I!R RVW4jqJYD@<);T3K0RRJNdBOky diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostInside.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostInside.png deleted file mode 100644 index f34b73dd87b0cf2c7eefda661209bac2d030abd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 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>#Bd(*uBN&Um^whFJLLPBi2@WFWxuSIW*|DpMSTtf*^O$(2maN(NQg`3s&D_LyEw z@>w#m^j`G++$o>xe9qrCENH#{cg`->jdlz&pDhZqaswa!shqIQ_Cal0WQO+i%V7n7 zCg<_IzMrtL>EzsXTC26Z)-7sE!Uvq=Q!Wq#9)@_fJswOhD8XGcQPjz1MtzVlh-7l`R-#vEChEHBWG&@x9)t&7?e=&Hv`njxgN@xNA^caHw diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostMashedFood.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostMashedFood.png deleted file mode 100644 index 37d3b24f9a1d9f4583067161b23138ccf3b5bfa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422 zcmV;X0a^ZuP)N2bZe?^J zG%heMHD!e|WdHyHBuPX;R5(v2 z2-fQD-MLBpbu_W9ZUQ#nL~0rw$qm@jfFkM5H+g!a?~8CG+Blue@W3kObBHAaGeHt2 z)BdWM&#|^Mlv!EDe9lW=^k~wOEN@~ySa>1O4pw{s=F^LjA)to*{(BSiIUK(O|1tm^ z1kC5P)IhM=&Q^N>oI_sVZ$mS6g0U?hJp$ltea$A~gM~0Gr`eW|%gRstKju#cg5V9n QfdBvi07*qoM6N<$g2p4QUjP6A diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostSide.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockCompostSide.png deleted file mode 100644 index c431e1c4ce984905d0f69ed02f49114ddb72cb85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_((MNb#U z5DWj-Nrrrf32bJrg zGh90OqRe-A?qFZU@Yygp+i!WF`F)2kRt52kL_@g~pRVqn#wSp}?ZKQj{nVS fJe-%DZ}3EarGa5r7JEoJ&~pr)u6{1-oD!M0#LT=By}Z;C1rt33 zJ>#Bd(*uBNR(iTPhFJI~-!N8w`Tvhtya|zzoW0hG{r#S zI%|S{fGUrJBA2MT)Bz#U8~RU{Fi(){I?S+!|DA{sqX++u*9Mal8kr8ANIH=d@yhww zhaW5tXQ@~hR5Td$^y=_G`h8>7!K)(2Bmc282;~T@^t`t3AJEYZp00i_>zopr04h3X Apa1{> diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDouble.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockFurnaceDouble.png new file mode 100644 index 0000000000000000000000000000000000000000..819a8986150f50f2874485b202b96cf7ccc77127 GIT binary patch literal 575 zcmV-F0>J%=P)N2bZe?^J zG%heMHD!e|WdHyHy-7qtR5(wSl1YyNQ51#izmSMXhm^DkTVlZiiMhlOVvM0l3~io; zXl)1^D}S`Vsx{H^3@7;6mIp>vNx7$CJvRbVci^Xgzz)gddt>eFxYH1 zQ50oBwOWnG1#Xbc8}-EKD&3T3m|AEo;J zem=iZQ5?P*X#9ixwKlX)oRsfG%zNZOeSbXqY)DZgTZh(1RRYp$}Wn=aUb--fp+k=|n`>1Ds4IyoWROA zFuYDClj(HIs7j>*g(lWcr$hD>uLA(1>Xr-;0|1yNRP6o$`jt5peT z6A3YH4i3gyS^NX;{!jmcVQ_L6B;+~Kd$Q{A^<3* z5V0&vr4#@>9uLQH5D^id&u5X`+-GkH^06Gs7@~An-g-2%%^C5+URp7Dd65Be zo(UlcAxf!l2mp+8UX~^2+_Ef6DF8%Klq891njcUpRhA{wPOH_3D1-Ao*2X9#{7DZ7km&=MYo6X^HD5WHMo?DiMh{aoc-zS7fkP*Tf0005&Nkl=`>B6DYme;+Cuh2?B`i5ruQpI3ac&bRBROj8vn$-eNt99muGee1TqYtSy4`M36urK_#&N6x=ytn75EzEBUat#< zLbX~2uvjcgr4r|yh%T2)5ClSq<#Nd_%gSc6wOY;h{lnpKJRTj#iK2)x76id+wc2jC z=kvMK>G;0C+wC+>)09$^$z(hp&!YPII`xn`Q?cDwaFPY98E z=@Mh?E0j`dVHg&RMInS?7^x?OV2mlHzCr++VHio07=~fnHs>6`Znq1=(6X$5pi(MH z5-rX2d76lX5SC?e&QnN4oO9c@OQjMKX#jLxuT(1dq<+6Ir5ue$Pm;^!>h-$s`z(qg z+qQ{Fe$sqCXN;vVt*6szHk+N#XSCaG*LC9|VjzwY$B2h;UDtKp-*}8M9> znwT7kim53S5}^(qbZ~ZZ5!ZgbjvX8vTpS!l5L~Q95rb$W;T+Q1G|lmxI+QDyyWRH- zyf5$bNQZ}qoO1vWLU7I(i-iyZ0A{n<#>NKcoO50jMOl`nX?}lys{n9ta6kw_2))0* z*X#AItt|i;4u`JmDvH86&-0uRVp-PH)00xIRx6cC5Cln*IF8flbWGDM%TktQLP!)v z)oS(Y>#NmjB}qalRaI3LLcG1bZEkLcVc6^SG)-fS0f44ymzS42J3F;nZGC;+^SsB$ zN7*opAPBa%x688Z^?Cr%Y&J2*zVA1iO#q1Fcy)D^F@_Lgj47sR8is)}zPq~(E zW{mm1ABN##u~0C^j^hwQ@;tX~`~3X8D2k#e0H7#}mzS4Lr<11XY&M%trvM-Wz-Tmb zU6(PY>pG>>vaDqT08mN^A)2O*$KzJ3B}tN8mSwG0Ycv{5Slw=yQVM_4?RIV3W{jPj zoD2qo>2#`io@ZGWLTEG^5kfrAi=yb}<^}-H&dxMVi{p67er;{-`T1E1f}q`QJC5VJ zZXCy1mZ_?Gbab@4yQ}N^>+7o!;`H=%sls3|koNZW+U@r5h9pTCV}G+dK0Y3g#{h73 zb(N;6y1do4?M9<9pU)9O4-XHNQrC6&_xIB@&9V$3G@sAIFucCLR##S548!>N_#lM* q%IA6Ba5$VyCjZE1nx^!>dj9~Zsb3rpXX*<80000zxyXA+47xm=E9GRY^Ok8ejubh};B=`@K!8T0!NbD?03QAvDvH9X5X+m@XmlxF%mv5c*X=E-R0>_!R|%%mDIbT!joAOf zhrK<1UR^N=g;oh#trl-ZCX-nisH*yAgHoxqGI)7;;fJDNHJeMqdWq|^)oh|39ukko zR~<+xi9{lJ&(3Jv-7Vj`j)nQ>iwi21%HQ8;+xDEfv$G*s;Pmp6(P)J0x`e}FuCK4> z2Bv9JtybCE+9I7!Gaio-LQpIg>2x~8VllGWEUxR)@AnZxFdmQ5b)EhF{r4}E^4@j+ Y4FDS5*>tFgA^-pY07*qoM6N<$g1LDKzyJUM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderBottom.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderBottom.png new file mode 100644 index 0000000000000000000000000000000000000000..819a8986150f50f2874485b202b96cf7ccc77127 GIT binary patch literal 575 zcmV-F0>J%=P)N2bZe?^J zG%heMHD!e|WdHyHy-7qtR5(wSl1YyNQ51#izmSMXhm^DkTVlZiiMhlOVvM0l3~io; zXl)1^D}S`Vsx{H^3@7;6mIp>vNx7$CJvRbVci^Xgzz)gddt>eFxYH1 zQ50oBwOWnG1#Xbc8}-EKD&3T3m|AEo;J zem=iZQ5?P*X#9ixwKlX)oRsfG%zNZOeSbXqY)DZgTZh(1RRYp$}Wn=aUb--fp+k=|n`>1Ds4IyoWROA zFuYDClj(HIs7j>*g(lWcr$hD>uLA(1>Xr-;0|1yNR!BzLK@gy68irv2&}y|vr_&@7 z3Fh-TCbd-$e+Y(P+pk^Bt}8WBUC*$z&44Fqq9| z93CFB4q#apvMe(k4!OR*W=pRkgn#c@2p=ooAhSEC)9EmsPEiyE;Etf%?NTfjk!6|i zw~E{P{wTOX6aaNpRmJyxPEJk$SOZX16-kmvZoEMVA1$>5fR@^M&{pZ1IbWOK&Bx zySmx~TwHp*E^d*@WR@9NmW8hCy#J8k_^5sFbrlzv9#>Z$pFY=Vx7+t;lx*8x?CtG6 zlK3Z_KbXJle`GS55JeFH&1RGFc+9%vIC!4N=H@1*X%fdVilT6Kc1FM7C!J1HsZ3WeuCll0to{tL)G@;Mn|)^`8^002ovPDHLkV1iUR6Tbie literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderOn.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/blockGrinderOn.png new file mode 100644 index 0000000000000000000000000000000000000000..13fa3fc548ffa0a8f15d7a85ee41ce6b450e75e9 GIT binary patch literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sC>gD~UqA6Gy+*h@TpUD@w5vxzGhJa=wb3lx$lag8Vm&QB{T zPb^AhC`ioAE78kKEm1JhGte_lZ8b^-+9T`f;uvD#UpmRKyV*gY_5FXAmJ%~F#*L!= z8eIxatxXG#sNLW!Gh^)jz5Dyj?Q7yJ+3#}5#+=ieOnj5)eW|dSVq0W(A#}^@-}fX|OkAYK`L}>+$GU8uEQf2a zzKS(&eR*)VWB){l`g@buXK5wh;N4*=mX(#yyUcx75bN!Hheaz-Hgl|DC}U23>Ld0m z<8mO=4;gLVH>>;nCawA>sjbxAHz(=hV~bfEKjm-MJ#4V%wU?t=#<7I{%O;5o#;Xgr n)x4Ph^s#eU_4yQr<3CxCDt{B~F?=x#7?=#6u6{1-oD!MgD~UqA6Gy+*h@TpUD@w5vx&>{EIP7f3Q$O*#5JNMI6tkV zJh3R1p&&6cuS72|wM4;0&p^*KwbdvUXpfAii(`m|f9WK{?q&yp*3ao{ShTsNr5$rz z0|HqDb6B_oSvCs4$zc-vx%+$B{d+S`A7yX5IrIBjoyoNpQNQ;Y@0ctha^ZVzoc3}&BA-pR>- mdHV5T^OLXlPD;o;XaC22?V)TFS1T|q89ZJ6T-G@yGywpJzOZos literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/blocks/models/modelCompost.png b/src/main/resources/assets/someprettyrandomstuff/textures/blocks/models/modelCompost.png new file mode 100644 index 0000000000000000000000000000000000000000..2da473943b888eb1690af67ee21a06f713c7b9b3 GIT binary patch literal 1301 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ=4@yqg0?dZJsWUAr*0Nr)}(>8ZK}&o~KhI&ne`N)AmjkMqZ%}ogGojJl=>gNqZ

t+q(7n__LN!SgG6&AlhPB1F$uUpu<0;-2tR zKmPYSPBfOpX2%}Ra@r^M{6v4za(4FAR{<~TxRjsm>jIm4n7?_=YNgu#j{hq@flLkg zvv+M(^Xo@9&lRSNo-gY=tWjRI;<2Bv+uh|1H|>^&&QZ2MHCIk#iF26fqSq^%T)v;5 zD-X2E-scSKiDd$7jr+6fPQ>t9>D%osum1n{FQ zt&mXK^~YkLZHT~8Bh`IcHoAG7!@yMO=?`|$Ps@sdAt9{-u- z@y7bP-Oc}Ye_vkOQ2p>zef76b0!;zpC!`8LtyIhtZVq&_R&cw#F0bj$srI#*PAos8 znrd|)esY)O-KgHAX7IK~c*YK}l=p=DY&C04Yipm{i}5-f`EWemJAdBxf6snx-Dvo8 zd&Ab_u`-7Q^ymM%H{ngU(XB)gN!}0Y4|pGxU0|4X^!9fPC6%Z{ssTrq*KShe?KHZ@ zDEMLi+r9C1)l4Q#9~b|>bam;oikRTiz`X3Y+sw62Ww5)1T%Q|Xy{xysM(vtRfBMEc zVHKnM0zVU{T;%IGaeeQv><4E*R){@~kFD&yYS-^7`L=;0HhtED{qJX$eXVaiu4=Hq zG~W7ia0ke$nDk|{<~x-NZ?M%j553hIn|Np+YBV(DqwYkHi zhfj;uzt?_xE%_n!?RF(#9BgE)e)8VdpK;+X&R_Bjzjt4j*T2hjbhF3Jca!6*Q{}ta z6q;5l^L^yF>RWJs)ee`RAzRB9Mp~Hhb{R<}ZmeKmSQE*w^Gx*su+(DkboFyt=akR{ E0HREP?f?J) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/gui/guiFurnaceDouble.png b/src/main/resources/assets/someprettyrandomstuff/textures/gui/guiFurnaceDouble.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5c2ce8c35c781bc697687fa57d8e00a48b2ef7 GIT binary patch literal 2592 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/gui/guiGrinderDouble.png b/src/main/resources/assets/someprettyrandomstuff/textures/gui/guiGrinderDouble.png new file mode 100644 index 0000000000000000000000000000000000000000..f57b24fca566ee19ae0a96eb2ddc3e9b4d646075 GIT binary patch literal 2547 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kNL-hJ#f-t++?>smfjxwQvxq?>S|~I$^oEb?|7{Ha|I4?vwRLoKbai!gcX#*n z^h}&Map}^f$BrHQ|NlQw`zROA>I-3~V zx?c)UC@+ft_wTLMinQ628*ZL{blyfXVaE(P#!B__WiAeL{vS=6$72w4CYk%hSN&(_ z^*3vB-k9_@jPo$-kzetDBKMqWmOOmaW?O@XeLU0o$wCue+wF4;P)OLX%oBBZcwo-SyDWkiN<=P|a|TqkX)+!@ zddKI$MJLO>-x<32XK_llb?@BAkY&Gb>g9UjC4aha1C76vz)W-*_~%I|DezpdI8e3sQ*7Pg#Xq6KwAYcv;pRf!04`0cr2S;Mu-3BHVL)ekQE-tZa51bXdpxMLt= zx{gD*gVtW&!$*4rHssb#Udqbc`4MRGItH%x>U9m##$SXMd^r=V-xzKDL(bu&V+}C$ zKQdi1_1QdO-ps@KO;hIQH}i-Wi!!cXZ(?PcTWZQEal#kq$F_#+ck>z=KZjixp1^CO z3lwQ;xc>d_e&6+t*TTX@1lTeRVtn>CSZv;XciDM|>eW_^-e$L#i_H}c;XX0-ty%v2 zxompdRtazLV*8Z6b#6mL#LeCHyTAKhNPJKPRQo$L=kgvkMFlSJ=VhO-X+B5-ik&X? zi90Ujp>L(VLTtm$qc?jm?Fv6|G^~^<%+n!?>2<}$NXNAeD{?pA-kWP?`@P{CQ07|u zj5+K6JI`3KxhaeB<6pJ;H_rXi-@Zy{LyY^|!f)F*icFgDiq<66&Xb~=nzf{cc zvD#k0xip5SB+MX-wcv-tbA=g9C3TCU5Bw82x}N{_4yHwp>8y)cVy-w|cbG9{;cMes z^MhZQ6-4FN-v6!Xz{x1voEYVBT)ZmGVP0j;;>}GHnfyvWY-CXTXR|r_z*b4^2CE+d zF89x{3r={wAkyRf8FxW}(hC~Ps-GR^*dZ!rV9590L8Fz;X& zbEs=)jc90N_&4vPc?x6v|Hc0HJO6Doc0S-=aN+tB&AHFzGr4w}zxgAbm!L5Bnf$|s zcYM45dwstjBj+l1pl!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPYy)zif> z#KM2-1Y52{4g#&rg2Gc)OmNyFa8Q1NMpMSZUe{MU8(Lf4FKFMm5qYbU)BC;Iv$Z}q ze9d<7)#!XSdVf}+zr$-m&Mw~FE2h5P?H9R1BQ0#oGw-Ib>5r$~?-$tbK_Kd=Pv?4v0}G@-YzYewfAP6Z@!Z|6L- z=iB=y;DsNffmg?jg_iLR;Z7GGv-&YwB~5sH;U5=+tFz$h70R<$Z|HhA;X9+$ZI@Wx TrIDY30l?tt>gTe~DWM4f;MA4E diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/items/itemCrafterOnAStick.png b/src/main/resources/assets/someprettyrandomstuff/textures/items/itemCrafterOnAStick.png new file mode 100644 index 0000000000000000000000000000000000000000..0b24de213de5c7605461b9a1ff41f2d8cc091a09 GIT binary patch literal 486 zcmV@P)N2bZe?^J zG%heMHD!e|WdHyHWJyFpR5(wSQe8^|K@|0=m+gbv*4(hIEZv|a3RaCwDVM;?5Zs_& zkeUV2zli9emwgK~gC6^dw>j5l7|l%@IGj6k?>%$o?#76SVJ}Y8tT9Dk+cY>H_s{OZ0YgK<}Lrbz4Pd33tt85!nN%0Ev(LV`}756cjcT&bJdPh6pZ_ zJ%9?3=(dZhu;Rw)HQ1$#{S|ttXQ`1-v7<-_5I|#)7q{*unHfS5B5*d*0Sc}U-GPv3 z{CYfPk^Ws-IZH0hiSjW5u=ZTrp<33aGdK_p5^w4OKA$Q%37JxM*@u$@@ajJ@9umo~Iv=Jj!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqg0@pE>9Q7 z5DWjMeT|$)6-1b=r|sUk(A%O(`Ac!DLr(C@KkV+=Cd=J5pXw*=aONrRSh!;Ayb0f2 zcp8;1SI2uLtuSg%P_1N!&{$^Vy~@uu=W<0_Z9RPgg&e IbxsLQ0RACdhyVZp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscCompressedIron.png b/src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscCompressedIron.png deleted file mode 100644 index d8a0cb07d50aa3b0d5ba436c947226593ea385a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ>#Bd(*uBN>OEZ?LoEE?PB_SUKtaSg_7tzovCZ5Zd=Gj0o|x(WzwUA6(zlSRj0dtu z_9)D<*FR>to%8Jvoe3>LT}76Mm{dI1ZfzFKertGy=@8T7z48|XJ1n0^ds_L(J4DVC zPmbww;z(S`zhugk&5U9nau(DpJQS2n=xlYIWi0Nv`(IAaO~!>z-xlY7`V|6n3WKMs KpUXO@geCysYhF0#LT=By}Z;C1rt33 zJ>#Bd(*uBN+B{txLoEESPI$=KpdjFO_o8OZNnRPpJBMWF9R9)Qf9~{^I#+%>jaRlh zpXKKii)L?6-_SBODC2g=G?U9G{4Vhb#ypvGd$H-g--*|5c`<$vnaFf+qBK*3vNk8T z;)OiMn&_TF&68gpygJReJs8!Sjx3(fk;1~LnHcPOSddS~Q_3aITR!;=t257xt@cvJ R{y-Noc)I$ztaD0e0svuyTjc-% diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscRefinedRedstone.png b/src/main/resources/assets/someprettyrandomstuff/textures/items/itemMiscRefinedRedstone.png deleted file mode 100644 index ca486b0166333f7d4e95fa845e19dde4b272e454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ>#Bd(*uBNT0C7GLoEF7PB_ikU?AYKo#Eqx1>0qE4yffE`^Vj3GpW(`$cs1|3xk%L zXKw|5?_74!Xx;4@9Pd_I@F*6@sqR@j?Xpb6kCR3X;S<6l8d7!E<|)RkFk5D&ot||e zchO6(Ds7K$y#{ZleVyzld>MpTwAZZM@ta+U-^SxwW$iZ|)0#LT=By}Z;C1rt33 zJ>#Bd(*uBNx;6 zdHrDR?;M@RAg;omGeOyFuSd0}rl_7>l-BV;>AB7&zc2UrBeJbo6%>mm6}TC*6wFYz z=4=t*;QVm;L$2YmwM!;Ccy&gwZfP)YIPNC^w0ZsSsuer1^om9x%Iwto58vy*}2 X=``DWlJmC$oyFkk>gTe~DWM4f-40}A diff --git a/src/main/resources/assets/someprettyrandomstuff/textures/logo.png b/src/main/resources/assets/someprettyrandomstuff/textures/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b081caea686506a492602a3ebe85a61a66f1a5 GIT binary patch literal 18868 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 Hu0mjfTl~pG literal 0 HcmV?d00001 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info new file mode 100644 index 000000000..16197a4da --- /dev/null +++ b/src/main/resources/mcmod.info @@ -0,0 +1,21 @@ +[ +{ + "modid": "SomePrettyRandomStuff", + "name": "Some Pretty Random Stuff", + "description": "A bunch of random stuff added to your Game to make it even more fun, exciting and add some more variety!", + "version": "0.0.1", + "mcversion": "1.7.10", + "url": "https://github.com/Ellpeck/SomePrettyRandomStuff", + "updateUrl": "", + "authorList": [ + "Ellpeck" + ], + "credits": "GlenthorLP for all of the awesome Graphics", + "logoFile": "assets/someprettyrandomstuff/textures/logo.png", + "screenshots": [ + ], + "parent":"", + "dependencies": [ + ] +} +] \ No newline at end of file