mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-12-23 03:49:22 +01:00
Fixed items getting added to inventories, added horse armor -> raw materials crafting, leaf generator redstone control
This commit is contained in:
parent
1590026ed3
commit
9dc5085fba
8 changed files with 77 additions and 39 deletions
|
@ -73,7 +73,7 @@ public class InitBooklet{
|
|||
|
||||
//RF Using Blocks
|
||||
new BookletChapterCoffee("coffeeMachine", entryFunctionalRF, new ItemStack(InitBlocks.blockCoffeeMachine), new PageTextOnly(1).setStack(new ItemStack(InitItems.itemCoffeeBean)).addTextReplacement("<rf>", ConfigIntValues.COFFEE_MACHINE_ENERGY_USED.getValue()).addTextReplacement("<coffee>", ConfigIntValues.COFFEE_CACHE_USED_PER_ITEM.getValue()).addTextReplacement("<water>", ConfigIntValues.COFFEE_MACHINE_WATER_USED.getValue()), new PageTextOnly(2).setStack(new ItemStack(InitItems.itemCoffee)), new PageCrafting(3, BlockCrafting.recipeCoffeeMachine).setNoText(), new PageCrafting(4, ItemCrafting.recipeCup).setNoText());
|
||||
new BookletChapter("crusher", entryFunctionalRF, new ItemStack(InitBlocks.blockGrinderDouble), new PageTextOnly(1).addTextReplacement("<rf1>", ConfigIntValues.GRINDER_ENERGY_USED.getValue()).addTextReplacement("<rf2>", ConfigIntValues.GRINDER_DOUBLE_ENERGY_USED.getValue()), new PageCrafting(2, BlockCrafting.recipeCrusher).setNoText(), new PageCrafting(3, BlockCrafting.recipeDoubleCrusher).setNoText());
|
||||
new BookletChapter("crusher", entryFunctionalRF, new ItemStack(InitBlocks.blockGrinderDouble), new PageTextOnly(1).addTextReplacement("<rf1>", ConfigIntValues.GRINDER_ENERGY_USED.getValue()).addTextReplacement("<rf2>", ConfigIntValues.GRINDER_DOUBLE_ENERGY_USED.getValue()), new PageCrafting(2, BlockCrafting.recipeCrusher).setNoText(), new PageCrafting(3, BlockCrafting.recipeDoubleCrusher).setNoText(), new PageCrusherRecipe(4, CrusherCrafting.recipeSugar).setNoText(), new PageCrusherRecipe(5, CrusherCrafting.recipeIronHorseArmor).setNoText(), new PageCrusherRecipe(6, CrusherCrafting.recipeGoldHorseArmor).setNoText(), new PageCrusherRecipe(7, CrusherCrafting.recipeDiamondHorseArmor).setNoText());
|
||||
new BookletChapter("furnaceDouble", entryFunctionalRF, new ItemStack(InitBlocks.blockFurnaceDouble), new PageCrafting(1, BlockCrafting.recipeFurnace).addTextReplacement("<rf>", ConfigIntValues.FURNACE_ENERGY_USED.getValue()));
|
||||
new BookletChapter("miner", entryFunctionalRF, new ItemStack(InitBlocks.blockOreMagnet), new PageTextOnly(1).addTextReplacement("<rf>", ConfigIntValues.ORE_MAGNET_ENERGY_USE.getValue()).addTextReplacement("<oil>", ConfigIntValues.ORE_MAGNET_OIL_USE.getValue()).addTextReplacement("<range>", ConfigIntValues.ORE_MAGNET_RANGE.getValue()), new PageCrafting(2, BlockCrafting.recipeMiner).setNoText(), new PageCrafting(3, BlockCrafting.recipeCasing).setNoText());
|
||||
new BookletChapter("lavaFactory", entryFunctionalRF, new ItemStack(InitBlocks.blockLavaFactoryController), new PageTextOnly(1).addTextReplacement("<rf>", ConfigIntValues.LAVA_FACTORY_ENERGY_USED.getValue()), new PageCrafting(2, BlockCrafting.recipeLavaFactory).setNoText());
|
||||
|
@ -89,7 +89,7 @@ public class InitBooklet{
|
|||
|
||||
//No RF Using Items
|
||||
new BookletChapter("wings", entryItemsNonRF, new ItemStack(InitItems.itemWingsOfTheBats), new PageTextOnly(1).setStack(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.BAT_WING.ordinal())), new PageCrafting(2, ItemCrafting.recipeWings).setNoText());
|
||||
new BookletChapter("foods", entryItemsNonRF, new ItemStack(InitItems.itemFoods, 1, TheFoods.HAMBURGER.ordinal()), new PageCrafting(1, FoodCrafting.recipePizza).setNoText(), new PageFurnace(2, new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE_BREAD.ordinal())).setNoText(), new PageCrafting(3, FoodCrafting.recipeHamburger).setNoText(), new PageCrafting(4, FoodCrafting.recipeBigCookie).setNoText(), new PageCrafting(5, FoodCrafting.recipeSubSandwich).setNoText(), new PageCrafting(6, FoodCrafting.recipeFrenchFry).setNoText(), new PageCrafting(7, FoodCrafting.recipeFrenchFries).setNoText(), new PageCrafting(8, FoodCrafting.recipeFishNChips).setNoText(), new PageCrafting(9, FoodCrafting.recipeCheese).setNoText(), new PageCrafting(10, FoodCrafting.recipePumpkinStew).setNoText(), new PageCrafting(11, FoodCrafting.recipeCarrotJuice).setNoText(), new PageCrafting(12, FoodCrafting.recipeSpaghetti).setNoText(), new PageCrafting(13, FoodCrafting.recipeNoodle).setNoText(), new PageCrafting(14, FoodCrafting.recipeChocolate).setNoText(), new PageCrafting(15, FoodCrafting.recipeChocolateCake).setNoText(), new PageCrafting(16, FoodCrafting.recipeToast).setNoText(), new PageFurnace(17, new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal())).setNoText(), new PageCrusherRecipe(18, CrusherCrafting.recipeSugar).setNoText());
|
||||
new BookletChapter("foods", entryItemsNonRF, new ItemStack(InitItems.itemFoods, 1, TheFoods.HAMBURGER.ordinal()), new PageCrafting(1, FoodCrafting.recipePizza).setNoText(), new PageFurnace(2, new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE_BREAD.ordinal())).setNoText(), new PageCrafting(3, FoodCrafting.recipeHamburger).setNoText(), new PageCrafting(4, FoodCrafting.recipeBigCookie).setNoText(), new PageCrafting(5, FoodCrafting.recipeSubSandwich).setNoText(), new PageCrafting(6, FoodCrafting.recipeFrenchFry).setNoText(), new PageCrafting(7, FoodCrafting.recipeFrenchFries).setNoText(), new PageCrafting(8, FoodCrafting.recipeFishNChips).setNoText(), new PageCrafting(9, FoodCrafting.recipeCheese).setNoText(), new PageCrafting(10, FoodCrafting.recipePumpkinStew).setNoText(), new PageCrafting(11, FoodCrafting.recipeCarrotJuice).setNoText(), new PageCrafting(12, FoodCrafting.recipeSpaghetti).setNoText(), new PageCrafting(13, FoodCrafting.recipeNoodle).setNoText(), new PageCrafting(14, FoodCrafting.recipeChocolate).setNoText(), new PageCrafting(15, FoodCrafting.recipeChocolateCake).setNoText(), new PageCrafting(16, FoodCrafting.recipeToast).setNoText(), new PageFurnace(17, new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal())).setNoText());
|
||||
new BookletChapter("leafBlower", entryItemsNonRF, new ItemStack(InitItems.itemLeafBlowerAdvanced), new PageTextOnly(1), new PageCrafting(2, ItemCrafting.recipeLeafBlower).setNoText(), new PageCrafting(3, ItemCrafting.recipeLeafBlowerAdvanced).setNoText());
|
||||
ArrayList<BookletPage> aiotPages = new ArrayList<BookletPage>();
|
||||
aiotPages.add(new PageTextOnly(aiotPages.size()+1));
|
||||
|
|
|
@ -108,7 +108,7 @@ public class PageCrusherRecipe extends BookletPage{
|
|||
|
||||
@Override
|
||||
public void updateScreen(int ticksElapsed){
|
||||
if(ticksElapsed%5 == 0){
|
||||
if(ticksElapsed%10 == 0){
|
||||
if(this.inputPos+1 < this.recipe.getRecipeInputs().size()){
|
||||
this.inputPos++;
|
||||
}
|
||||
|
|
|
@ -141,6 +141,7 @@ public enum ConfigCrafting{
|
|||
RICE_SUGAR("Rice -> Sugar", ConfigCategories.CRUSHER_RECIPES, "Crusher"),
|
||||
NICKEL("Nickel Ore -> Nickel Dust + Platinum Dust", ConfigCategories.CRUSHER_RECIPES, "Crusher"),
|
||||
IRON("Iron Ore -> Iron Dust + Gold Dust", ConfigCategories.CRUSHER_RECIPES, "Crusher"),
|
||||
HORSE_ARMORS("Horse Armor -> Raw Materials", ConfigCategories.CRUSHER_RECIPES, "Crusher"),
|
||||
|
||||
TELE_STAFF("Tele Staff", ConfigCategories.ITEMS_CRAFTING),
|
||||
CASING("Casing", ConfigCategories.BLOCKS_CRAFTING),
|
||||
|
|
|
@ -18,6 +18,9 @@ import ellpeck.actuallyadditions.util.Util;
|
|||
public class CrusherCrafting{
|
||||
|
||||
public static CrusherRecipeRegistry.CrusherRecipe recipeSugar;
|
||||
public static CrusherRecipeRegistry.CrusherRecipe recipeIronHorseArmor;
|
||||
public static CrusherRecipeRegistry.CrusherRecipe recipeGoldHorseArmor;
|
||||
public static CrusherRecipeRegistry.CrusherRecipe recipeDiamondHorseArmor;
|
||||
|
||||
public static void init(){
|
||||
ModUtil.LOGGER.info("Initializing Crusher Recipes...");
|
||||
|
@ -61,6 +64,16 @@ public class CrusherCrafting{
|
|||
if(ConfigCrafting.IRON.isEnabled()){
|
||||
CrusherRecipeRegistry.addRecipe("oreIron", "dustIron", 2, "dustGold", 1, 20);
|
||||
}
|
||||
if(ConfigCrafting.HORSE_ARMORS.isEnabled()){
|
||||
CrusherRecipeRegistry.addRecipe("armorHorseIron", "dustIron", 8);
|
||||
recipeIronHorseArmor = Util.GetRecipes.lastCrusherRecipe();
|
||||
|
||||
CrusherRecipeRegistry.addRecipe("armorHorseGold", "dustGold", 8);
|
||||
recipeGoldHorseArmor = Util.GetRecipes.lastCrusherRecipe();
|
||||
|
||||
CrusherRecipeRegistry.addRecipe("armorHorseDiamond", "dustDiamond", 8);
|
||||
recipeDiamondHorseArmor = Util.GetRecipes.lastCrusherRecipe();
|
||||
}
|
||||
|
||||
CrusherRecipeRegistry.searchCases.add(new CrusherRecipeRegistry.SearchCase("oreNether", 6));
|
||||
CrusherRecipeRegistry.searchCases.add(new CrusherRecipeRegistry.SearchCase("orePoor", 4, "nugget"));
|
||||
|
|
|
@ -32,10 +32,13 @@ public class InitOreDict{
|
|||
|
||||
//Vanilla Ores
|
||||
addOre(Blocks.obsidian, "obsidian");
|
||||
addOre(new ItemStack(Items.coal), "coal");
|
||||
addOre(Items.coal, "coal");
|
||||
addOre(Items.flint, "flint");
|
||||
addOre(Blocks.gravel, "gravel");
|
||||
addOre(Items.sugar, "sugar");
|
||||
addOre(Items.diamond_horse_armor, "armorHorseDiamond");
|
||||
addOre(Items.golden_horse_armor, "armorHorseGold");
|
||||
addOre(Items.iron_horse_armor, "armorHorseIron");
|
||||
|
||||
//My Ores
|
||||
addOre(InitItems.itemDust, TheDusts.IRON.ordinal(), "dustIron");
|
||||
|
|
|
@ -44,42 +44,44 @@ public class TileEntityLeafGenerator extends TileEntityBase implements IEnergyPr
|
|||
@SuppressWarnings("unchecked")
|
||||
public void updateEntity(){
|
||||
if(!worldObj.isRemote){
|
||||
if(!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)){
|
||||
|
||||
if(this.nextUseCounter >= ConfigIntValues.LEAF_GENERATOR_COOLDOWN_TIME.getValue()){
|
||||
this.nextUseCounter = 0;
|
||||
if(this.nextUseCounter >= ConfigIntValues.LEAF_GENERATOR_COOLDOWN_TIME.getValue()){
|
||||
this.nextUseCounter = 0;
|
||||
|
||||
int energyProducedPerLeaf = ConfigIntValues.LEAF_GENERATOR_ENERGY_PRODUCED.getValue();
|
||||
if(energyProducedPerLeaf <= this.storage.getMaxEnergyStored()-this.storage.getEnergyStored()){
|
||||
ArrayList<WorldPos> breakPositions = new ArrayList<WorldPos>();
|
||||
int energyProducedPerLeaf = ConfigIntValues.LEAF_GENERATOR_ENERGY_PRODUCED.getValue();
|
||||
if(energyProducedPerLeaf <= this.storage.getMaxEnergyStored()-this.storage.getEnergyStored()){
|
||||
ArrayList<WorldPos> breakPositions = new ArrayList<WorldPos>();
|
||||
|
||||
int range = ConfigIntValues.LEAF_GENERATOR_RANGE.getValue();
|
||||
for(int reachX = -range; reachX < range+1; reachX++){
|
||||
for(int reachZ = -range; reachZ < range+1; reachZ++){
|
||||
for(int reachY = -range; reachY < range+1; reachY++){
|
||||
Block block = this.worldObj.getBlock(this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ);
|
||||
if(block != null && block.isLeaves(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ)){
|
||||
breakPositions.add(new WorldPos(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ));
|
||||
int range = ConfigIntValues.LEAF_GENERATOR_RANGE.getValue();
|
||||
for(int reachX = -range; reachX < range+1; reachX++){
|
||||
for(int reachZ = -range; reachZ < range+1; reachZ++){
|
||||
for(int reachY = -range; reachY < range+1; reachY++){
|
||||
Block block = this.worldObj.getBlock(this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ);
|
||||
if(block != null && block.isLeaves(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ)){
|
||||
breakPositions.add(new WorldPos(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!breakPositions.isEmpty()){
|
||||
Collections.shuffle(breakPositions);
|
||||
WorldPos theCoord = breakPositions.get(0);
|
||||
if(!breakPositions.isEmpty()){
|
||||
Collections.shuffle(breakPositions);
|
||||
WorldPos theCoord = breakPositions.get(0);
|
||||
|
||||
Block theBlock = this.worldObj.getBlock(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
int meta = this.worldObj.getBlockMetadata(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
this.worldObj.playAuxSFX(2001, theCoord.getX(), theCoord.getY(), theCoord.getZ(), Block.getIdFromBlock(theBlock)+(meta << 12));
|
||||
Block theBlock = this.worldObj.getBlock(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
int meta = this.worldObj.getBlockMetadata(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
this.worldObj.playAuxSFX(2001, theCoord.getX(), theCoord.getY(), theCoord.getZ(), Block.getIdFromBlock(theBlock)+(meta << 12));
|
||||
|
||||
this.worldObj.setBlockToAir(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
this.worldObj.setBlockToAir(theCoord.getX(), theCoord.getY(), theCoord.getZ());
|
||||
|
||||
this.storage.receiveEnergy(energyProducedPerLeaf, false);
|
||||
this.storage.receiveEnergy(energyProducedPerLeaf, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
this.nextUseCounter++;
|
||||
else{
|
||||
this.nextUseCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
if(this.getEnergyStored(ForgeDirection.UNKNOWN) > 0){
|
||||
|
|
|
@ -247,20 +247,39 @@ public class WorldUtil{
|
|||
return blocks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an ArrayList of ItemStacks to an Array of slots
|
||||
* @param slots The slots to try to put the items into
|
||||
* @param stacks The stacks to be put into the slots (Items don't actually get removed from there!)
|
||||
* @param actuallyDo Do it or just test if it works?
|
||||
* @return Does it work?
|
||||
*/
|
||||
public static boolean addToInventory(ItemStack[] slots, ArrayList<ItemStack> stacks, boolean actuallyDo){
|
||||
ItemStack[] testSlots = new ItemStack[slots.length];
|
||||
for(int i = 0; i < testSlots.length; i++){
|
||||
if(slots[i] != null){
|
||||
testSlots[i] = slots[i].copy();
|
||||
}
|
||||
}
|
||||
|
||||
int working = 0;
|
||||
for(ItemStack stack : stacks){
|
||||
for(int i = 0; i < slots.length; i++){
|
||||
if(slots[i] == null || (slots[i].isItemEqual(stack) && slots[i].stackSize <= stack.getMaxStackSize()-stack.stackSize)){
|
||||
working++;
|
||||
if(actuallyDo){
|
||||
if(slots[i] == null){
|
||||
slots[i] = stack.copy();
|
||||
}
|
||||
else{
|
||||
slots[i].stackSize += stack.stackSize;
|
||||
for(ItemStack stackToPutIn : stacks){
|
||||
for(int i = 0; i < testSlots.length; i++){
|
||||
if(stackToPutIn != null && (testSlots[i] == null || (testSlots[i].isItemEqual(stackToPutIn) && testSlots[i].getMaxStackSize() >= testSlots[i].stackSize+stackToPutIn.stackSize))){
|
||||
if(testSlots[i] == null){
|
||||
if(actuallyDo){
|
||||
slots[i] = stackToPutIn.copy();
|
||||
}
|
||||
testSlots[i] = stackToPutIn.copy();
|
||||
}
|
||||
else{
|
||||
if(actuallyDo){
|
||||
slots[i].stackSize+=stackToPutIn.stackSize;
|
||||
}
|
||||
testSlots[i].stackSize+=stackToPutIn.stackSize;
|
||||
}
|
||||
working++;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -475,7 +475,7 @@ booklet.actuallyadditions.chapter.coffeeMachine.text.5=<item>Milk<r> is an impor
|
|||
booklet.actuallyadditions.chapter.coffeeMachine.text.6=<i>The fact that you're reading this means that you either have <imp>HarvestCraft<r><i> installed, or that you're looking at the lang file. <rs><n>This does the same thing as <item>Milk<r>, but for veggie guys.
|
||||
|
||||
booklet.actuallyadditions.chapter.crusher.name=Crusher and Double Crusher
|
||||
booklet.actuallyadditions.chapter.crusher.text.1=The <item>Crusher<r> turns every ore, ingot and gem into its corresponding <imp>dust<r> using <rf1> RF/t. <n>When you put in <imp>Ores<r> however, they will yield <imp>2 pieces of dust<r>. <n>The <item>Double Crusher<r> basically does the same, however it can crush two ores at a time and uses <rf2> RF/t. <n><n><i>He's my crush
|
||||
booklet.actuallyadditions.chapter.crusher.text.1=The <item>Crusher<r> turns every ore, ingot and gem into its corresponding <imp>dust<r> using <rf1> RF/t. <n>When you put in <imp>Ores<r> however, they will yield <imp>2 pieces of dust<r>. <n>The <item>Double Crusher<r> basically does the same, however it can crush two ores at a time and uses <rf2> RF/t. <n>On the following pages, you can see some additional useful recipes for inside the crusher. <n><n><i>He's my crush
|
||||
|
||||
booklet.actuallyadditions.chapter.furnaceDouble.name=Double Furnace
|
||||
booklet.actuallyadditions.chapter.furnaceDouble.text.1=The <item>Double Furnace<r> works like a furnace, however, it uses <rf> RF/t and can smelt <imp>two items at a time<r>.
|
||||
|
|
Loading…
Reference in a new issue