chore: porting work, api package ported, micro ports here and there

This commit is contained in:
Michael Hillcox 2021-02-27 21:44:00 +00:00
parent e0391bbf87
commit a200f9aa6a
42 changed files with 607 additions and 763 deletions

View file

@ -20,6 +20,7 @@ import de.ellpeck.actuallyadditions.api.lens.Lens;
import de.ellpeck.actuallyadditions.api.lens.LensConversion;
import de.ellpeck.actuallyadditions.api.recipe.*;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
@ -37,7 +38,7 @@ public final class ActuallyAdditionsAPI {
public static final List<CrusherRecipe> CRUSHER_RECIPES = new ArrayList<>();
public static final List<BallOfFurReturn> BALL_OF_FUR_RETURN_ITEMS = new ArrayList<>();
public static final List<TreasureChestLoot> TREASURE_CHEST_LOOT = new ArrayList<>();
// public static final List<TreasureChestLoot> TREASURE_CHEST_LOOT = new ArrayList<>();
public static final List<LensConversionRecipe> RECONSTRUCTOR_LENS_CONVERSION_RECIPES = new ArrayList<>();
public static final List<EmpowererRecipe> EMPOWERER_RECIPES = new ArrayList<>();
public static final Map<Item, IColorLensChanger> RECONSTRUCTOR_LENS_COLOR_CHANGERS = new HashMap<>();
@ -46,7 +47,7 @@ public final class ActuallyAdditionsAPI {
*/
public static final List<IFarmerBehavior> FARMER_BEHAVIORS = new ArrayList<>();
public static final List<CoffeeIngredient> COFFEE_MACHINE_INGREDIENTS = new ArrayList<>();
public static final List<CompostRecipe> COMPOST_RECIPES = new ArrayList<>();
// public static final List<CompostRecipe> COMPOST_RECIPES = new ArrayList<>();
public static final List<OilGenRecipe> OIL_GENERATOR_RECIPES = new ArrayList<>();
public static final List<IBookletEntry> BOOKLET_ENTRIES = new ArrayList<>();
//This is added to automatically, you don't need to add anything to this list
@ -200,7 +201,7 @@ public final class ActuallyAdditionsAPI {
*/
@Deprecated
public static void addCompostRecipe(ItemStack input, Block inputDisplay, ItemStack output, Block outputDisplay) {
COMPOST_RECIPES.add(new CompostRecipe(input, inputDisplay, output, outputDisplay));
// COMPOST_RECIPES.add(new CompostRecipe(input, inputDisplay, output, outputDisplay));
}
/**
@ -212,7 +213,7 @@ public final class ActuallyAdditionsAPI {
* @param outputDisplay The state to display when there is output in the compost
*/
public static void addCompostRecipe(Ingredient input, BlockState inputDisplay, ItemStack output, BlockState outputDisplay) {
COMPOST_RECIPES.add(new CompostRecipe(input, inputDisplay, output, outputDisplay));
// COMPOST_RECIPES.add(new CompostRecipe(input, inputDisplay, output, outputDisplay));
}
/**
@ -234,7 +235,7 @@ public final class ActuallyAdditionsAPI {
* @param maxAmount The maximum stacksize of the returned stack
*/
public static void addTreasureChestLoot(ItemStack stack, int chance, int minAmount, int maxAmount) {
TREASURE_CHEST_LOOT.add(new TreasureChestLoot(stack, chance, minAmount, maxAmount));
// TREASURE_CHEST_LOOT.add(new TreasureChestLoot(stack, chance, minAmount, maxAmount));
}
@Deprecated

View file

@ -11,8 +11,8 @@
package de.ellpeck.actuallyadditions.api.booklet;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.OnlyIn;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public interface IBookletChapter {

View file

@ -10,10 +10,10 @@
package de.ellpeck.actuallyadditions.api.booklet;
import java.util.List;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.OnlyIn;
import java.util.List;
public interface IBookletEntry {

View file

@ -10,14 +10,14 @@
package de.ellpeck.actuallyadditions.api.booklet;
import java.util.List;
import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.OnlyIn;
import java.util.List;
public interface IBookletPage {
@ -42,7 +42,7 @@ public interface IBookletPage {
void mouseClickMove(GuiBookletBase gui, int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick);
@OnlyIn(Dist.CLIENT)
void actionPerformed(GuiBookletBase gui, GuiButton button);
void actionPerformed(GuiBookletBase gui, Button button);
@OnlyIn(Dist.CLIENT)
void initGui(GuiBookletBase gui, int startX, int startY);

View file

@ -10,19 +10,24 @@
package de.ellpeck.actuallyadditions.api.booklet.internal;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
public abstract class GuiBookletBase extends Screen {
public abstract class GuiBookletBase extends GuiScreen {
protected GuiBookletBase(ITextComponent titleIn) {
super(titleIn);
}
public abstract void renderScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale);
public abstract void renderSplitScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale, int length);
public abstract List<GuiButton> getButtonList();
public abstract List<Button> getButtonList();
public abstract int getGuiLeft();

View file

@ -14,9 +14,10 @@ import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter;
import de.ellpeck.actuallyadditions.api.booklet.IBookletEntry;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
@ -31,13 +32,13 @@ public interface IMethodHandler {
boolean addEffectToStack(ItemStack stack, CoffeeIngredient ingredient);
PotionEffect getSameEffectFromStack(ItemStack stack, PotionEffect effect);
EffectInstance getSameEffectFromStack(ItemStack stack, EffectInstance effect);
void addEffectProperties(ItemStack stack, PotionEffect effect, boolean addDur, boolean addAmp);
void addEffectProperties(ItemStack stack, EffectInstance effect, boolean addDur, boolean addAmp);
void addEffectToStack(ItemStack stack, PotionEffect effect);
void addEffectToStack(ItemStack stack, EffectInstance effect);
PotionEffect[] getEffectsFromStack(ItemStack stack);
EffectInstance[] getEffectsFromStack(ItemStack stack);
boolean invokeConversionLens(BlockState hitState, BlockPos hitBlock, IAtomicReconstructor tile);

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.api.lens;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.BlockState;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.api.lens;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
/**

View file

@ -5,8 +5,9 @@ public interface IDisableableItem {
/**
* Represents an item that can be disabled in the configuration of the mod.
* If this returns true, assume the item is not registered with the game, but may still be instantiated.
*
* @return If the item has not been registered with the Forge Registry.
*/
public boolean isDisabled();
boolean isDisabled();
}

View file

@ -13,34 +13,34 @@ package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.EffectInstance;
public class CoffeeIngredient {
protected final Ingredient input;
protected final int maxAmplifier;
protected PotionEffect[] effects;
protected EffectInstance[] effects;
@Deprecated
public CoffeeIngredient(ItemStack input, PotionEffect[] effects, int maxAmplifier) {
public CoffeeIngredient(ItemStack input, EffectInstance[] effects, int maxAmplifier) {
this(Ingredient.fromStacks(input), maxAmplifier, effects);
}
public CoffeeIngredient(Ingredient input, int maxAmplifier, PotionEffect... effects) {
public CoffeeIngredient(Ingredient input, int maxAmplifier, EffectInstance... effects) {
this.input = input;
this.effects = effects;
this.maxAmplifier = maxAmplifier;
}
public boolean matches(ItemStack stack) {
return this.input.apply(stack);
return this.input.test(stack);
}
public Ingredient getInput() {
return this.input;
}
public PotionEffect[] getEffects() {
public EffectInstance[] getEffects() {
return this.effects;
}
@ -55,4 +55,4 @@ public class CoffeeIngredient {
public int getMaxAmplifier() {
return this.maxAmplifier;
}
}
}

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
@ -23,8 +24,8 @@ public class ColorLensChangerByDyeMeta implements IColorLensChanger {
@Override
public ItemStack modifyItem(ItemStack stack, BlockState hitBlockState, BlockPos hitBlock, IAtomicReconstructor tile) {
ItemStack newStack = stack.copy();
int meta = newStack.getItemDamage();
newStack.setItemDamage((meta + 1) % 16);
int meta = newStack.getDamage();
newStack.setDamage((meta + 1) % 16);
return newStack;
}
}

View file

@ -1,56 +1,56 @@
/*
* This file ("CompostRecipe.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.api.recipe;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
public class CompostRecipe {
protected final Ingredient input;
protected final ItemStack output;
protected final BlockState inputDisplay;
protected final BlockState outputDisplay;
@Deprecated
public CompostRecipe(ItemStack input, Block inputDisplay, ItemStack output, Block outputDisplay) {
this(Ingredient.fromStacks(input), inputDisplay.getDefaultState(), output, outputDisplay.getDefaultState());
}
public CompostRecipe(Ingredient input, BlockState inputDisplay, ItemStack output, BlockState outputDisplay) {
this.input = input;
this.output = output;
this.inputDisplay = inputDisplay;
this.outputDisplay = outputDisplay;
}
public boolean matches(ItemStack stack) {
return this.input.apply(stack);
}
public Ingredient getInput() {
return this.input;
}
public ItemStack getOutput() {
return this.output;
}
public BlockState getInputDisplay() {
return this.inputDisplay;
}
public BlockState getOutputDisplay() {
return this.outputDisplay;
}
}
///*
// * This file ("CompostRecipe.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.api.recipe;
//
//import net.minecraft.block.Block;
//import net.minecraft.item.ItemStack;
//import net.minecraft.item.crafting.Ingredient;
//
//public class CompostRecipe {
//
// protected final Ingredient input;
// protected final ItemStack output;
// protected final BlockState inputDisplay;
// protected final BlockState outputDisplay;
//
// @Deprecated
// public CompostRecipe(ItemStack input, Block inputDisplay, ItemStack output, Block outputDisplay) {
// this(Ingredient.fromStacks(input), inputDisplay.getDefaultState(), output, outputDisplay.getDefaultState());
// }
//
// public CompostRecipe(Ingredient input, BlockState inputDisplay, ItemStack output, BlockState outputDisplay) {
// this.input = input;
// this.output = output;
// this.inputDisplay = inputDisplay;
// this.outputDisplay = outputDisplay;
// }
//
// public boolean matches(ItemStack stack) {
// return this.input.apply(stack);
// }
//
// public Ingredient getInput() {
// return this.input;
// }
//
// public ItemStack getOutput() {
// return this.output;
// }
//
// public BlockState getInputDisplay() {
// return this.inputDisplay;
// }
//
// public BlockState getOutputDisplay() {
// return this.outputDisplay;
// }
//
//}

View file

@ -33,7 +33,7 @@ public class CrusherRecipe {
}
public boolean matches(ItemStack stack) {
return this.input.apply(stack);
return this.input.test(stack);
}
public ItemStack getOutputOne() {

View file

@ -10,12 +10,12 @@
package de.ellpeck.actuallyadditions.api.recipe;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import java.util.ArrayList;
import java.util.List;
public class EmpowererRecipe {
protected final Ingredient input;
@ -48,21 +48,23 @@ public class EmpowererRecipe {
}
public boolean matches(ItemStack base, ItemStack stand1, ItemStack stand2, ItemStack stand3, ItemStack stand4) {
if (!this.input.apply(base)) return false;
if (!this.input.test(base)) {
return false;
}
List<Ingredient> matches = new ArrayList<>();
ItemStack[] stacks = { stand1, stand2, stand3, stand4 };
boolean[] unused = { true, true, true, true };
ItemStack[] stacks = {stand1, stand2, stand3, stand4};
boolean[] unused = {true, true, true, true};
for (ItemStack s : stacks) {
if (unused[0] && this.modifier1.apply(s)) {
if (unused[0] && this.modifier1.test(s)) {
matches.add(this.modifier1);
unused[0] = false;
} else if (unused[1] && this.modifier2.apply(s)) {
} else if (unused[1] && this.modifier2.test(s)) {
matches.add(this.modifier2);
unused[1] = false;
} else if (unused[2] && this.modifier3.apply(s)) {
} else if (unused[2] && this.modifier3.test(s)) {
matches.add(this.modifier3);
unused[2] = false;
} else if (unused[3] && this.modifier4.apply(s)) {
} else if (unused[3] && this.modifier4.test(s)) {
matches.add(this.modifier4);
unused[3] = false;
}

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.api.recipe;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import de.ellpeck.actuallyadditions.api.lens.Lens;
import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.math.BlockPos;
@ -36,7 +37,7 @@ public class LensConversionRecipe {
}
public boolean matches(ItemStack input, Lens lens) {
return this.input.apply(input) && this.type == lens;
return this.input.test(input) && this.type == lens;
}
public Ingredient getInput() {

View file

@ -1,29 +1,29 @@
/*
* This file ("TreasureChestLoot.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.api.recipe;
import net.minecraft.item.ItemStack;
import net.minecraft.util.WeightedRandom;
public class TreasureChestLoot extends WeightedRandom.Item {
public final ItemStack returnItem;
public final int minAmount;
public final int maxAmount;
public TreasureChestLoot(ItemStack returnItem, int chance, int minAmount, int maxAmount) {
super(chance);
this.returnItem = returnItem;
this.minAmount = minAmount;
this.maxAmount = maxAmount;
}
}
///*
// * This file ("TreasureChestLoot.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.api.recipe;
//
//import net.minecraft.item.ItemStack;
//import net.minecraft.util.WeightedRandom;
//
//public class TreasureChestLoot extends WeightedRandom.Item {
//
// public final ItemStack returnItem;
// public final int minAmount;
// public final int maxAmount;
//
// public TreasureChestLoot(ItemStack returnItem, int chance, int minAmount, int maxAmount) {
// super(chance);
// this.returnItem = returnItem;
// this.minAmount = minAmount;
// this.maxAmount = maxAmount;
// }
//
//}

View file

@ -26,8 +26,6 @@ import de.ellpeck.actuallyadditions.mod.items.ItemCoffee;
import de.ellpeck.actuallyadditions.mod.items.lens.LensMining;
import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler;
import de.ellpeck.actuallyadditions.mod.items.lens.Lenses;
import de.ellpeck.actuallyadditions.mod.material.InitArmorMaterials;
import de.ellpeck.actuallyadditions.mod.material.InitToolMaterials;
import de.ellpeck.actuallyadditions.mod.misc.BannerHelper;
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
import de.ellpeck.actuallyadditions.mod.misc.apiimpl.LaserRelayConnectionHandler;
@ -70,7 +68,7 @@ public class ActuallyAdditions {
public static final ItemGroup GROUP = new ItemGroup(MODID) {
@Override
public ItemStack createIcon() {
return new ItemStack(InitItems.itemBooklet);
return new ItemStack(InitItems.itemBooklet.get());
}
};
@ -112,8 +110,6 @@ public class ActuallyAdditions {
commonCapsLoaded = false; // Loader.isModLoaded("commoncapabilities");
InitToolMaterials.init();
InitArmorMaterials.init();
InitFluids.init();
new UpdateChecker();
BannerHelper.init();

View file

@ -50,7 +50,7 @@ public class RenderLaserRelay extends TileEntityRenderer<TileEntityLaserRelay> {
ItemStack upgrade = relay.inv.getStackInSlot(0);
if (StackUtil.isValid(upgrade)) {
if (upgrade.getItem() == InitItems.itemLaserUpgradeInvisibility) {
if (upgrade.getItem() == InitItems.itemLaserUpgradeInvisibility.get()) {
hasInvis = true;
}
@ -83,7 +83,7 @@ public class RenderLaserRelay extends TileEntityRenderer<TileEntityLaserRelay> {
TileEntity secondTile = tile.getWorld().getTileEntity(second);
if (secondTile instanceof TileEntityLaserRelay) {
ItemStack secondUpgrade = ((TileEntityLaserRelay) secondTile).inv.getStackInSlot(0);
boolean otherInvis = StackUtil.isValid(secondUpgrade) && secondUpgrade.getItem() == InitItems.itemLaserUpgradeInvisibility;
boolean otherInvis = StackUtil.isValid(secondUpgrade) && secondUpgrade.getItem() == InitItems.itemLaserUpgradeInvisibility.get();
if (hasGoggles || !hasInvis || !otherInvis) {
float[] color = hasInvis && otherInvis

View file

@ -19,95 +19,95 @@ public final class CrusherCrafting {
// public static CrusherRecipe recipeGoldHorseArmor;
// public static CrusherRecipe recipeDiamondHorseArmor;
//
// public static void init() {
// ActuallyAdditions.LOGGER.info("Initializing Crusher Recipes...");
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.BONE), new ItemStack(Items.DYE, 6, 15), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.REEDS), new ItemStack(Items.SUGAR, 3), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.BLAZE_ROD), new ItemStack(Items.BLAZE_POWDER, 4), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.YELLOW_FLOWER), new ItemStack(Items.DYE, 3, 11), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 0), new ItemStack(Items.DYE, 3, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 1), new ItemStack(Items.DYE, 3, 12), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 2), new ItemStack(Items.DYE, 3, 13), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 3), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 4), new ItemStack(Items.DYE, 3, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 5), new ItemStack(Items.DYE, 3, 14), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 6), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 7), new ItemStack(Items.DYE, 3, 9), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 8), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 0), new ItemStack(Items.DYE, 4, 11), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 1), new ItemStack(Items.DYE, 4, 13), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 4), new ItemStack(Items.DYE, 4, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 5), new ItemStack(Items.DYE, 4, 9), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// if (!CrusherRecipeRegistry.hasException("oreRedstone")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreRedstone"), new ItemStack(Items.REDSTONE, 10), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreLapis")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreLapis"), new ItemStack(Items.DYE, 12, 4), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("coal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("coal"), new ItemStack(InitItems.itemDust, 1, TheDusts.COAL.ordinal()), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreCoal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreCoal"), new ItemStack(Items.COAL, 3), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("blockCoal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("blockCoal"), new ItemStack(Items.COAL, 9), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreQuartz")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreQuartz"), new ItemStack(Items.QUARTZ, 3), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("cobblestone")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("cobblestone"), new ItemStack(Blocks.SAND), StackUtil.getEmpty(), 0);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.GRAVEL), new ItemStack(Items.FLINT), new ItemStack(Items.FLINT), 50);
// if (!CrusherRecipeRegistry.hasException("stone")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("stone", false), OreDictionary.getOres("cobblestone", false), 1, NonNullList.withSize(1, StackUtil.getEmpty()), 0, 0);
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(Items.SUGAR, 2), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.GLOWSTONE), new ItemStack(Items.GLOWSTONE_DUST, 4), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// if (!CrusherRecipeRegistry.hasException("oreNickel")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("oreNickel", false), OreDictionary.getOres("dustNickel", false), 2, OreDictionary.getOres("dustPlatinum", false), 1, 15);
// if (!CrusherRecipeRegistry.hasException("oreIron")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("oreIron", false), OreDictionary.getOres("dustIron", false), 2, OreDictionary.getOres("dustGold", false), 1, 20);
//
// ItemStack temp = getStack("dustIron");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.IRON_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeIronHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// temp = getStack("dustGold");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.GOLDEN_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeGoldHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// temp = getStack("dustDiamond");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.DIAMOND_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeDiamondHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("oreNether", 6));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("orePoor", 4, "nugget"));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("denseore", 8));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("gem", 1));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ingot", 1));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ore", 2, "gem")); //Search for gems first so removeDuplicates doesn't clear gem recipes.
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ore", 2));
//
// CrusherRecipeRegistry.registerFinally();
// }
public static void init() {
// ActuallyAdditions.LOGGER.info("Initializing Crusher Recipes...");
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.BONE), new ItemStack(Items.DYE, 6, 15), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.REEDS), new ItemStack(Items.SUGAR, 3), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.BLAZE_ROD), new ItemStack(Items.BLAZE_POWDER, 4), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.YELLOW_FLOWER), new ItemStack(Items.DYE, 3, 11), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 0), new ItemStack(Items.DYE, 3, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 1), new ItemStack(Items.DYE, 3, 12), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 2), new ItemStack(Items.DYE, 3, 13), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 3), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 4), new ItemStack(Items.DYE, 3, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 5), new ItemStack(Items.DYE, 3, 14), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 6), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 7), new ItemStack(Items.DYE, 3, 9), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.RED_FLOWER, 1, 8), new ItemStack(Items.DYE, 3, 7), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 0), new ItemStack(Items.DYE, 4, 11), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 1), new ItemStack(Items.DYE, 4, 13), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 4), new ItemStack(Items.DYE, 4, 1), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.DOUBLE_PLANT, 1, 5), new ItemStack(Items.DYE, 4, 9), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// if (!CrusherRecipeRegistry.hasException("oreRedstone")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreRedstone"), new ItemStack(Items.REDSTONE, 10), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreLapis")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreLapis"), new ItemStack(Items.DYE, 12, 4), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("coal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("coal"), new ItemStack(InitItems.itemDust, 1, TheDusts.COAL.ordinal()), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreCoal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreCoal"), new ItemStack(Items.COAL, 3), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("blockCoal")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("blockCoal"), new ItemStack(Items.COAL, 9), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("oreQuartz")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("oreQuartz"), new ItemStack(Items.QUARTZ, 3), StackUtil.getEmpty(), 0);
// if (!CrusherRecipeRegistry.hasException("cobblestone")) ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient("cobblestone"), new ItemStack(Blocks.SAND), StackUtil.getEmpty(), 0);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.GRAVEL), new ItemStack(Items.FLINT), new ItemStack(Items.FLINT), 50);
// if (!CrusherRecipeRegistry.hasException("stone")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("stone", false), OreDictionary.getOres("cobblestone", false), 1, NonNullList.withSize(1, StackUtil.getEmpty()), 0, 0);
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(Items.SUGAR, 2), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Blocks.GLOWSTONE), new ItemStack(Items.GLOWSTONE_DUST, 4), StackUtil.getEmpty(), 0);
// MISC_RECIPES.add(RecipeUtil.lastCrusherRecipe());
//
// if (!CrusherRecipeRegistry.hasException("oreNickel")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("oreNickel", false), OreDictionary.getOres("dustNickel", false), 2, OreDictionary.getOres("dustPlatinum", false), 1, 15);
// if (!CrusherRecipeRegistry.hasException("oreIron")) ActuallyAdditionsAPI.addCrusherRecipes(OreDictionary.getOres("oreIron", false), OreDictionary.getOres("dustIron", false), 2, OreDictionary.getOres("dustGold", false), 1, 20);
//
// ItemStack temp = getStack("dustIron");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.IRON_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeIronHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// temp = getStack("dustGold");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.GOLDEN_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeGoldHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// temp = getStack("dustDiamond");
// if (!temp.isEmpty()) {
// temp.setCount(6);
// ActuallyAdditionsAPI.addCrusherRecipe(new ItemStack(Items.DIAMOND_HORSE_ARMOR), temp, StackUtil.getEmpty(), 0);
// recipeDiamondHorseArmor = RecipeUtil.lastCrusherRecipe();
// }
//
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("oreNether", 6));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("orePoor", 4, "nugget"));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("denseore", 8));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("gem", 1));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ingot", 1));
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ore", 2, "gem")); //Search for gems first so removeDuplicates doesn't clear gem recipes.
// CrusherRecipeRegistry.SEARCH_CASES.add(new CrusherRecipeRegistry.SearchCase("ore", 2));
//
// CrusherRecipeRegistry.registerFinally();
}
//
// private static ItemStack getStack(String ore) {
// List<ItemStack> stacks = OreDictionary.getOres(ore);

View file

@ -19,7 +19,7 @@ import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.relauncher.OnlyIn;
@OnlyIn(Dist.CLIENT)
@ -28,7 +28,7 @@ public class RenderWorm extends Render<EntityWorm> {
private static ItemStack stack = ItemStack.EMPTY;
public static void fixItemStack() {
stack = new ItemStack(InitItems.itemWorm);
stack = new ItemStack(InitItems.itemWorm.get());
}
protected RenderWorm(RenderManager renderManager) {

View file

@ -163,7 +163,7 @@ public class CommonEvents {
//checkAchievements(event.crafting, event.player, InitAchievements.Type.CRAFTING);
if (ConfigBoolValues.GIVE_BOOKLET_ON_FIRST_CRAFT.isEnabled()) {
if (!event.getPlayer().world.isRemote && StackUtil.isValid(event.getCrafting()) && event.getCrafting().getItem() != InitItems.itemBooklet) {
if (!event.getPlayer().world.isRemote && StackUtil.isValid(event.getCrafting()) && event.getCrafting().getItem() != InitItems.itemBooklet.get()) {
String name = event.getCrafting().getItem().getRegistryName().toString();
if (name != null && name.toLowerCase(Locale.ROOT).contains(ActuallyAdditions.MODID)) {
@ -172,7 +172,7 @@ public class CommonEvents {
save.bookGottenAlready = true;
WorldData.get(event.getPlayer().getEntityWorld()).markDirty();
ItemEntity entityItem = new ItemEntity(event.getPlayer().world, event.getPlayer().getPosX(), event.getPlayer().getPosY(), event.getPlayer().getPosZ(), new ItemStack(InitItems.itemBooklet));
ItemEntity entityItem = new ItemEntity(event.getPlayer().world, event.getPlayer().getPosX(), event.getPlayer().getPosY(), event.getPlayer().getPosZ(), new ItemStack(InitItems.itemBooklet.get()));
entityItem.setPickupDelay(0);
event.getPlayer().world.addEntity(entityItem);
}

View file

@ -20,15 +20,17 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.fml.relauncher.OnlyIn;
public class ContainerEnergizer extends Container {
public static final EntityEquipmentSlot[] VALID_EQUIPMENT_SLOTS = new EntityEquipmentSlot[]{EntityEquipmentSlot.HEAD, EntityEquipmentSlot.CHEST, EntityEquipmentSlot.LEGS, EntityEquipmentSlot.FEET};
public static final EquipmentSlotType[] VALID_EQUIPMENT_SLOTS = new EquipmentSlotType[]{EquipmentSlotType.HEAD, EquipmentSlotType.CHEST, EquipmentSlotType.LEGS, EquipmentSlotType.FEET};
private final TileEntityEnergizer energizer;
public ContainerEnergizer(PlayerEntity player, TileEntityBase tile) {

View file

@ -16,8 +16,8 @@ import de.ellpeck.actuallyadditions.mod.tile.TileEntityFarmer;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
public class ContainerFarmer extends Container {
@ -29,22 +29,22 @@ public class ContainerFarmer extends Container {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.farmer.inv, j + i * 2, 67 + j * 18, 21 + i * 18));
this.addSlot(new SlotItemHandlerUnconditioned(this.farmer.inv, j + i * 2, 67 + j * 18, 21 + i * 18));
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.farmer.inv, 6 + j + i * 2, 105 + j * 18, 21 + i * 18));
this.addSlot(new SlotItemHandlerUnconditioned(this.farmer.inv, 6 + j + i * 2, 105 + j * 18, 21 + 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, 97 + i * 18));
this.addSlot(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));
this.addSlot(new Slot(inventory, i, 8 + i * 18, 155));
}
}

View file

@ -19,14 +19,8 @@ import de.ellpeck.actuallyadditions.mod.items.metalists.TheFoods;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.material.ArmorMaterials;
import de.ellpeck.actuallyadditions.mod.material.ToolMaterials;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChestMedium;
import net.minecraft.init.Items;
import net.minecraft.init.MobEffects;
import net.minecraft.item.Item;
import net.minecraft.item.ItemTier;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
@ -47,51 +41,47 @@ public final class InitItems {
public static final RegistryObject<Item> ENORI_CRYSTAL_SHARD = ITEMS.register("item_enori_crystal_shard", ItemBase::new);
// CRYSTALS
public static final RegistryObject<Item> RESTONIA_CRYSTAL = ITEMS.register("restonia_crystal", ItemBase::new);
public static final RegistryObject<Item> PALIS_CRYSTAL = ITEMS.register("palis_crystal", ItemBase::new);
public static final RegistryObject<Item> DIAMATINE_CRYSTAL = ITEMS.register("diamatine_crystal", ItemBase::new);
public static final RegistryObject<Item> VOID_CRYSTAL = ITEMS.register("void_crystal", ItemBase::new);
public static final RegistryObject<Item> EMERADIC_CRYSTAL = ITEMS.register("emeradic_crystal", ItemBase::new);
public static final RegistryObject<Item> ENORI_CRYSTAL = ITEMS.register("enori_crystal", ItemBase::new);
public static final RegistryObject<Item> RESTONIA_CRYSTAL = ITEMS.register("restonia_crystal", ItemCrystal::new);
public static final RegistryObject<Item> PALIS_CRYSTAL = ITEMS.register("palis_crystal", ItemCrystal::new);
public static final RegistryObject<Item> DIAMATINE_CRYSTAL = ITEMS.register("diamatine_crystal", ItemCrystal::new);
public static final RegistryObject<Item> VOID_CRYSTAL = ITEMS.register("void_crystal", ItemCrystal::new);
public static final RegistryObject<Item> EMERADIC_CRYSTAL = ITEMS.register("emeradic_crystal", ItemCrystal::new);
public static final RegistryObject<Item> ENORI_CRYSTAL = ITEMS.register("enori_crystal", ItemCrystal::new);
public static final RegistryObject<Item> RESTONIA_EMPOWERED_CRYSTAL = ITEMS.register("restonia_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> PALIS_EMPOWERED_CRYSTAL = ITEMS.register("palis_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> DIAMATINE_EMPOWERED_CRYSTAL = ITEMS.register("diamatine_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> VOID_EMPOWERED_CRYSTAL = ITEMS.register("void_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> EMERADIC_EMPOWERED_CRYSTAL = ITEMS.register("emeradic_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> ENORI_EMPOWERED_CRYSTAL = ITEMS.register("enori_empowered_crystal", ItemBase::new);
public static final RegistryObject<Item> RESTONIA_EMPOWERED_CRYSTAL = ITEMS.register("restonia_empowered_crystal", () -> new ItemCrystal(true));
public static final RegistryObject<Item> PALIS_EMPOWERED_CRYSTAL = ITEMS.register("palis_empowered_crystal", () -> new ItemCrystal(true));
public static final RegistryObject<Item> DIAMATINE_EMPOWERED_CRYSTAL = ITEMS.register("diamatine_empowered_crystal", () -> new ItemCrystal(true));
public static final RegistryObject<Item> VOID_EMPOWERED_CRYSTAL = ITEMS.register("void_empowered_crystal", () -> new ItemCrystal(true));
public static final RegistryObject<Item> EMERADIC_EMPOWERED_CRYSTAL = ITEMS.register("emeradic_empowered_crystal", () -> new ItemCrystal(true));
public static final RegistryObject<Item> ENORI_EMPOWERED_CRYSTAL = ITEMS.register("enori_empowered_crystal", () -> new ItemCrystal(true));
// BLACK QUARTZ
public static final RegistryObject<Item> BLACK_QUARTZ = ITEMS.register("black_quartz", ItemBase::new));
public static final RegistryObject<Item> BLACK_QUARTZ = ITEMS.register("black_quartz", ItemBase::new);
@Deprecated
public static final RegistryObject<Item> itemCrystal = ITEMS.register("", new ItemCrystal("item_crystal", false));
@Deprecated
public static final RegistryObject<Item> itemCrystalEmpowered = ITEMS.register("", new ItemCrystal("item_crystal_empowered", true));
public static final RegistryObject<Item> itemEngineerGogglesAdvanced = ITEMS.register("", new ItemEngineerGoggles("item_engineer_goggles_advanced", true));
public static final RegistryObject<Item> itemEngineerGoggles = ITEMS.register("", new ItemEngineerGoggles("item_engineer_goggles", false));
public static final RegistryObject<Item> itemLaserUpgradeRange = ITEMS.register("item_laser_upgrade_range", ItemLaserRelayUpgrade::new);
public static final RegistryObject<Item> itemLaserUpgradeInvisibility = ITEMS.register("item_laser_upgrade_invisibility", ItemLaserRelayUpgrade::new);
public static final RegistryObject<Item> itemEngineerGogglesAdvanced = ITEMS.register("item_engineer_goggles_advanced", () -> new ItemEngineerGoggles(true));
public static final RegistryObject<Item> itemEngineerGoggles = ITEMS.register("item_engineer_goggles", () -> new ItemEngineerGoggles(false));
public static final RegistryObject<Item> itemLaserUpgradeRange = ITEMS.register("item_laser_upgrade_range", ItemBase::new);
public static final RegistryObject<Item> itemLaserUpgradeInvisibility = ITEMS.register("item_laser_upgrade_invisibility", ItemBase::new);
public static final RegistryObject<Item> itemFillingWand = ITEMS.register("item_filling_wand", ItemFillingWand::new);
public static final RegistryObject<Item> itemBag = ITEMS.register("", new ItemBag("item_bag", false));
public static final RegistryObject<Item> itemVoidBag = ITEMS.register("", new ItemBag("item_void_bag", true));
public static final RegistryObject<Item> itemBag = ITEMS.register("item_bag", () -> new ItemBag(false));
public static final RegistryObject<Item> itemVoidBag = ITEMS.register("item_void_bag", () -> new ItemBag(true));
public static final RegistryObject<Item> itemWorm = ITEMS.register("item_worm", ItemWorm::new);
public static final RegistryObject<Item> itemPlayerProbe = ITEMS.register("item_player_probe", ItemPlayerProbe::new);
public static final RegistryObject<Item> itemFilter = ITEMS.register("item_filter", ItemFilter::new);
public static final RegistryObject<Item> itemWaterBowl = ITEMS.register("item_water_bowl", ItemWaterBowl::new);
public static final RegistryObject<Item> itemSpawnerChanger = ITEMS.register("item_spawner_changer", ItemSpawnerChanger::new);
public static final RegistryObject<Item> itemCrateKeeper = ITEMS.register("item_crate_keeper", ItemGeneric::new.setMaxStackSize(1));
public static final RegistryObject<Item> itemColorLens = ITEMS.register("", new ItemLens("item_color_lens", ActuallyAdditionsAPI.lensColor));
public static final RegistryObject<Item> itemExplosionLens = ITEMS.register("", new ItemLens("item_explosion_lens", ActuallyAdditionsAPI.lensDetonation));
public static final RegistryObject<Item> itemDamageLens = ITEMS.register("", new ItemLens("item_damage_lens", ActuallyAdditionsAPI.lensDeath));
public static final RegistryObject<Item> itemMoreDamageLens = ITEMS.register("", new ItemLens("item_more_damage_lens", ActuallyAdditionsAPI.lensEvenMoarDeath));
public static final RegistryObject<Item> itemDisenchantingLens = ITEMS.register("", new ItemLens("item_disenchanting_lens", ActuallyAdditionsAPI.lensDisenchanting));
public static final RegistryObject<Item> itemMiningLens = ITEMS.register("", new ItemLens("item_mining_lens", ActuallyAdditionsAPI.lensMining));
public static final RegistryObject<Item> itemCrateKeeper = ITEMS.register("item_crate_keeper", () -> new ItemGeneric(defaultProps().maxStackSize(1)));
public static final RegistryObject<Item> itemColorLens = ITEMS.register("item_color_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensColor));
public static final RegistryObject<Item> itemExplosionLens = ITEMS.register("item_explosion_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensDetonation));
public static final RegistryObject<Item> itemDamageLens = ITEMS.register("item_damage_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensDeath));
public static final RegistryObject<Item> itemMoreDamageLens = ITEMS.register("item_more_damage_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensEvenMoarDeath));
public static final RegistryObject<Item> itemDisenchantingLens = ITEMS.register("item_disenchanting_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensDisenchanting));
public static final RegistryObject<Item> itemMiningLens = ITEMS.register("item_mining_lens", () -> new ItemLens(ActuallyAdditionsAPI.lensMining));
public static final RegistryObject<Item> itemLaserWrench = ITEMS.register("item_laser_wrench", ItemLaserWrench::new);
public static final RegistryObject<Item> itemChestToCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_chest_to_crate_upgrade", TileEntityChest.class, InitBlocks.blockGiantChest.getDefaultState()));
public static final RegistryObject<Item> itemSmallToMediumCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_small_to_medium_crate_upgrade", TileEntityGiantChest.class, InitBlocks.blockGiantChestMedium.getDefaultState()));
public static final RegistryObject<Item> itemMediumToLargeCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_medium_to_large_crate_upgrade", TileEntityGiantChestMedium.class, InitBlocks.blockGiantChestLarge.getDefaultState()));
// public static final RegistryObject<Item> itemChestToCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_chest_to_crate_upgrade", TileEntityChest.class, InitBlocks.blockGiantChest.getDefaultState()));
// public static final RegistryObject<Item> itemSmallToMediumCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_small_to_medium_crate_upgrade", TileEntityGiantChest.class, InitBlocks.blockGiantChestMedium.getDefaultState()));
// public static final RegistryObject<Item> itemMediumToLargeCrateUpgrade = ITEMS.register("", new ItemChestToCrateUpgrade("item_medium_to_large_crate_upgrade", TileEntityGiantChestMedium.class, InitBlocks.blockGiantChestLarge.getDefaultState()));
public static final RegistryObject<Item> itemBooklet = ITEMS.register("item_booklet", ItemBooklet::new);
public static final RegistryObject<Item> itemGrowthRing = ITEMS.register("item_growth_ring", ItemGrowthRing::new);
public static final RegistryObject<Item> itemMagnetRing = ITEMS.register("item_suction_ring", ItemMagnetRing::new);

View file

@ -10,97 +10,99 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerBag;
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler.GuiTypes;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.container.SimpleNamedContainerProvider;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Direction;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public class ItemBag extends ItemBase {
public final boolean isVoid;
public ItemBag(String name, boolean isVoid) {
super(name);
public ItemBag(boolean isVoid) {
super(InitItems.defaultProps().maxStackSize(1));
this.isVoid = isVoid;
this.setMaxStackSize(1);
}
@Override
public EnumActionResult onItemUse(PlayerEntity playerIn, World worldIn, BlockPos pos, Hand hand, Direction facing, float hitX, float hitY, float hitZ) {
ItemStack stack = playerIn.getHeldItem(hand);
public ActionResultType onItemUse(ItemUseContext context) {
ItemStack stack = context.getPlayer().getHeldItem(context.getHand());
if (!this.isVoid) {
TileEntity tile = worldIn.getTileEntity(pos);
if (tile != null && tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing)) {
if (!worldIn.isRemote) {
IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
if (handler != null) {
boolean changed = false;
TileEntity tile = context.getWorld().getTileEntity(context.getPos());
if (tile != null) {
if (!context.getWorld().isRemote) {
ItemStackHandlerAA inv = new ItemStackHandlerAA(ContainerBag.getSlotAmount(this.isVoid));
ItemStackHandlerAA inv = new ItemStackHandlerAA(ContainerBag.getSlotAmount(this.isVoid));
ItemDrill.loadSlotsFromNBT(inv, stack);
boolean changed = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, context.getFace())
.map(cap -> {
boolean localChanged = false;
ItemDrill.loadSlotsFromNBT(inv, stack);
for (int j = 0; j < inv.getSlots(); j++) {
ItemStack invStack = inv.getStackInSlot(j);
if (StackUtil.isValid(invStack)) {
for (int i = 0; i < handler.getSlots(); i++) {
ItemStack remain = handler.insertItem(i, invStack, false);
if (!ItemStack.areItemStacksEqual(remain, invStack)) {
inv.setStackInSlot(j, remain.copy());
changed = true;
if (!StackUtil.isValid(remain)) {
break;
for (int j = 0; j < inv.getSlots(); j++) {
ItemStack invStack = inv.getStackInSlot(j);
if (StackUtil.isValid(invStack)) {
for (int i = 0; i < cap.getSlots(); i++) {
ItemStack remain = cap.insertItem(i, invStack, false);
if (!ItemStack.areItemStacksEqual(remain, invStack)) {
inv.setStackInSlot(j, remain.copy());
localChanged = true;
if (!StackUtil.isValid(remain)) {
break;
}
invStack = remain;
}
invStack = remain;
}
}
}
}
if (changed) {
ItemDrill.writeSlotsToNBT(inv, stack);
}
return localChanged;
}).orElse(false);
if (changed) {
ItemDrill.writeSlotsToNBT(inv, stack);
}
}
return EnumActionResult.SUCCESS;
return ActionResultType.SUCCESS;
}
}
return EnumActionResult.PASS;
return ActionResultType.PASS;
}
@Override
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
if (!world.isRemote && hand == Hand.MAIN_HAND) {
player.openGui(ActuallyAdditions.INSTANCE, (this.isVoid
? GuiTypes.VOID_BAG
: GuiTypes.BAG).ordinal(), world, (int) player.posX, (int) player.posY, (int) player.posZ);
NetworkHooks.openGui((ServerPlayerEntity) player, new SimpleNamedContainerProvider((windowId, playerInventory, playerEntity) -> new ContainerBag(windowId, playerInventory, playerEntity.getHeldItem(hand), this.isVoid), StringTextComponent.EMPTY));
// player.openGui(ActuallyAdditions.INSTANCE, (this.isVoid
// ? GuiTypes.VOID_BAG
// : GuiTypes.BAG).ordinal(), world, (int) player.posX, (int) player.posY, (int) player.posZ);
}
return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand));
return ActionResult.resultPass(player.getHeldItem(hand));
}
// TODO: [port] confirm this is correct
@Nullable
@Override
public EnumRarity getRarity(ItemStack stack) {
return this.isVoid
? EnumRarity.RARE
: EnumRarity.UNCOMMON;
public CompoundNBT getShareTag(ItemStack stack) {
return new CompoundNBT();
}
@Override
public CompoundNBT getNBTShareTag(ItemStack stack) {
return null;
}
// @Override
// public CompoundNBT getNBTShareTag(ItemStack stack) {
// return null;
// }
}

View file

@ -26,18 +26,16 @@ import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Direction;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.relauncher.OnlyIn;
import net.minecraftforge.api.distmarker.OnlyIn;
import javax.annotation.Nullable;
import java.util.List;
@ -47,28 +45,26 @@ public class ItemBooklet extends ItemBase implements IHudDisplay {
@OnlyIn(Dist.CLIENT)
public static IBookletPage forcedPage;
public ItemBooklet(String name) {
super(name);
this.setMaxStackSize(1);
this.setMaxDamage(0);
public ItemBooklet() {
super(InitItems.defaultProps().maxStackSize(1));
}
@Override
public EnumActionResult onItemUse(PlayerEntity player, World world, BlockPos pos, Hand hand, Direction face, float hitX, float hitY, float hitZ) {
if (player.isSneaking()) {
BlockState state = world.getBlockState(pos);
public ActionResultType onItemUse(ItemUseContext context) {
if (context.getPlayer().isSneaking()) {
BlockState state = context.getWorld().getBlockState(context.getPos());
Block block = state.getBlock();
ItemStack blockStack = new ItemStack(block, 1, block.damageDropped(state));
ItemStack blockStack = new ItemStack(block);
IBookletPage page = BookletUtils.findFirstPageForStack(blockStack);
if (page != null) {
if (world.isRemote) {
if (context.getWorld().isRemote) {
forcedPage = page;
}
this.onItemRightClick(world, player, hand);
return EnumActionResult.SUCCESS;
this.onItemRightClick(context.getWorld(), context.getPlayer(), context.getHand());
return ActionResultType.SUCCESS;
}
}
return EnumActionResult.FAIL;
return ActionResultType.FAIL;
}
@Override
@ -94,11 +90,6 @@ public class ItemBooklet extends ItemBase implements IHudDisplay {
}
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.EPIC;
}
@Override
@OnlyIn(Dist.CLIENT)
public void displayHud(MatrixStack matrices, Minecraft minecraft, PlayerEntity player, ItemStack stack, RayTraceResult rayCast, MainWindow resolution) {
@ -117,7 +108,7 @@ public class ItemBooklet extends ItemBase implements IHudDisplay {
AssetUtil.renderStackToGui(StackUtil.isValid(page.getChapter().getDisplayItemStack())
? page.getChapter().getDisplayItemStack()
: new ItemStack(InitItems.itemBooklet), resolution.getScaledWidth() / 2 - 10, height + 41, 1F);
: new ItemStack(InitItems.itemBooklet.get()), resolution.getScaledWidth() / 2 - 10, height + 41, 1F);
minecraft.fontRenderer.drawStringWithShadow(TextFormatting.YELLOW + "" + TextFormatting.ITALIC + strg1, resolution.getScaledWidth() / 2 - minecraft.fontRenderer.getStringWidth(strg1) / 2, height + 20, StringUtil.DECIMAL_COLOR_WHITE);
minecraft.fontRenderer.drawStringWithShadow(TextFormatting.YELLOW + "" + TextFormatting.ITALIC + strg2, resolution.getScaledWidth() / 2 - minecraft.fontRenderer.getStringWidth(strg2) / 2, height + 30, StringUtil.DECIMAL_COLOR_WHITE);
minecraft.fontRenderer.drawStringWithShadow(TextFormatting.GOLD + strg3, resolution.getScaledWidth() / 2 - minecraft.fontRenderer.getStringWidth(strg3) / 2, height + 60, StringUtil.DECIMAL_COLOR_WHITE);

View file

@ -10,33 +10,19 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.BlockCrystal;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.IRarity;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.OnlyIn;
public class ItemCrystal extends ItemBase {
private final boolean isEmpowered;
public ItemCrystal(String name, boolean isEmpowered) {
super(name);
public ItemCrystal(boolean isEmpowered) {
super();
this.isEmpowered = isEmpowered;
this.setHasSubtypes(true);
this.setMaxDamage(0);
}
@Override
public int getMetadata(int damage) {
return damage;
public ItemCrystal() {
this.isEmpowered = false;
}
@Override
@ -44,31 +30,10 @@ public class ItemCrystal extends ItemBase {
return this.isEmpowered;
}
@Override
public String getTranslationKey(ItemStack stack) {
return stack.getItemDamage() >= BlockCrystal.ALL_CRYSTALS.length ? StringUtil.BUGGED_ITEM_NAME : this.getTranslationKey() + "_" + BlockCrystal.ALL_CRYSTALS[stack.getItemDamage()].name;
}
@Override
public IRarity getForgeRarity(ItemStack stack) {
return stack.getItemDamage() >= BlockCrystal.ALL_CRYSTALS.length ? EnumRarity.COMMON : BlockCrystal.ALL_CRYSTALS[stack.getItemDamage()].rarity;
}
@Override
@OnlyIn(Dist.CLIENT)
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list) {
if (this.isInCreativeTab(tab)) {
for (int j = 0; j < BlockCrystal.ALL_CRYSTALS.length; j++) {
list.add(new ItemStack(this, 1, j));
}
}
}
@Override
protected void registerRendering() {
for (int i = 0; i < BlockCrystal.ALL_CRYSTALS.length; i++) {
String name = this.getRegistryName() + "_" + BlockCrystal.ALL_CRYSTALS[i].name;
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this, 1, i), new ResourceLocation(name), "inventory");
}
}
// @Override
// public String getTranslationKey(ItemStack stack) {
// return stack.getItemDamage() >= BlockCrystal.ALL_CRYSTALS.length
// ? StringUtil.BUGGED_ITEM_NAME
// : this.getTranslationKey() + "_" + BlockCrystal.ALL_CRYSTALS[stack.getItemDamage()].name;
// }
}

View file

@ -10,25 +10,25 @@
package de.ellpeck.actuallyadditions.mod.items;
import java.util.List;
import java.util.Set;
import de.ellpeck.actuallyadditions.api.misc.IGoggles;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemArmorAA;
import de.ellpeck.actuallyadditions.mod.material.InitArmorMaterials;
import de.ellpeck.actuallyadditions.mod.material.ArmorMaterials;
import de.ellpeck.actuallyadditions.mod.proxy.ClientProxy;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import io.netty.util.internal.ConcurrentSet;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.OnlyIn;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.List;
import java.util.Set;
public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
@ -36,10 +36,9 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
private final boolean displayMobs;
public ItemEngineerGoggles(String name, boolean displayMobs) {
super(name, InitArmorMaterials.armorMaterialGoggles, 0, StackUtil.getEmpty());
public ItemEngineerGoggles(boolean displayMobs) {
super(ArmorMaterials.GOGGLES, EquipmentSlotType.HEAD, InitItems.defaultProps().setNoRepair().maxDamage(0));
this.displayMobs = displayMobs;
this.setMaxDamage(0);
MinecraftForge.EVENT_BUS.register(this);
}
@ -51,13 +50,13 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void onClientTick(ClientTickEvent event) {
PlayerEntity player = ActuallyAdditions.PROXY.getCurrentPlayer();
public void onClientTick(TickEvent.ClientTickEvent event) {
PlayerEntity player = ClientProxy.getCurrentPlayer();
if (player != null && isWearing(player)) {
ItemStack face = player.inventory.armorInventory.get(3);
if (((IGoggles) face.getItem()).displaySpectralMobs()) {
double range = 8;
AxisAlignedBB aabb = new AxisAlignedBB(player.posX - range, player.posY - range, player.posZ - range, player.posX + range, player.posY + range, player.posZ + range);
AxisAlignedBB aabb = new AxisAlignedBB(player.getPosX() - range, player.getPosY() - range, player.getPosZ() - range, player.getPosX() + range, player.getPosY() + range, player.getPosZ() + range);
List<Entity> entities = player.world.getEntitiesWithinAABB(Entity.class, aabb);
if (entities != null && !entities.isEmpty()) {
this.cachedGlowingEntities.addAll(entities);
@ -65,7 +64,7 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
if (!this.cachedGlowingEntities.isEmpty()) {
for (Entity entity : this.cachedGlowingEntities) {
if (entity.isDead || entity.getDistanceSq(player.posX, player.posY, player.posZ) > range * range) {
if (!entity.isAlive() || entity.getDistanceSq(player.getPosX(), player.getPosY(), player.getPosZ()) > range * range) {
entity.setGlowing(false);
this.cachedGlowingEntities.remove(entity);
@ -81,7 +80,7 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
if (!this.cachedGlowingEntities.isEmpty()) {
for (Entity entity : this.cachedGlowingEntities) {
if (!entity.isDead) {
if (entity.isAlive()) {
entity.setGlowing(false);
}
}
@ -89,11 +88,6 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles {
}
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.RARE;
}
@Override
public boolean displaySpectralMobs() {
return this.displayMobs;

View file

@ -10,41 +10,43 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.Help;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoundType;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Hand;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.IFormattableTextComponent;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;
public class ItemFillingWand extends ItemEnergy {
public ItemFillingWand(String name) {
super(500000, 1000, name);
public ItemFillingWand() {
super(500000, 1000);
}
private static boolean removeFittingItem(BlockState state, PlayerEntity player) {
Block block = state.getBlock();
ItemStack stack = new ItemStack(block, 1, block.damageDropped(state));
ItemStack stack = new ItemStack(block, 1);
if (StackUtil.isValid(stack)) {
for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
@ -63,63 +65,56 @@ public class ItemFillingWand extends ItemEnergy {
return false;
}
private static void saveData(ItemStack pickBlock, BlockState state, ItemStack wand) {
if (!wand.hasTagCompound()) {
wand.setTagCompound(new CompoundNBT());
}
wand.getTagCompound().setInteger("state", Block.getStateId(state));
wand.getTagCompound().setString("name", pickBlock.getDisplayName());
private static void saveData(BlockState state, ItemStack wand) {
wand.getOrCreateTag().put("state", NBTUtil.writeBlockState(state));
}
private static Pair<BlockState, String> loadData(ItemStack stack) {
if (stack.hasTagCompound()) {
return Pair.of(Block.getStateById(stack.getTagCompound().getInteger("state")), stack.getTagCompound().getString("name"));
private static Optional<BlockState> loadData(ItemStack stack) {
if (stack.getOrCreateTag().contains("state")) {
return Optional.of(NBTUtil.readBlockState(stack.getOrCreateTag().getCompound("state")));
}
return null;
return Optional.empty();
}
@Override
public EnumActionResult onItemUse(PlayerEntity player, World world, BlockPos pos, Hand hand, Direction facing, float hitX, float hitY, float hitZ) {
ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote && player.getItemInUseCount() <= 0) {
if (player.isSneaking()) {
BlockState state = world.getBlockState(pos);
ItemStack pick = state.getBlock().getPickBlock(state, world.rayTraceBlocks(player.getPositionVector(), new Vec3d(pos.getX() + hitX, pos.getY() + hitY, pos.getZ() + hitZ)), world, pos, player);
saveData(pick, state, stack);
return EnumActionResult.SUCCESS;
} else if (loadData(stack) != null) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new CompoundNBT());
}
CompoundNBT compound = stack.getTagCompound();
public ActionResultType onItemUse(ItemUseContext context) {
if (context.getPlayer() == null) {
return ActionResultType.PASS;
}
ItemStack stack = context.getPlayer().getHeldItem(context.getHand());
if (!context.getWorld().isRemote && context.getPlayer().getItemInUseCount() <= 0) {
if (context.getPlayer().isSneaking()) {
BlockState state = context.getWorld().getBlockState(context.getPos());
saveData(state, stack);
return ActionResultType.SUCCESS;
} else if (loadData(stack).isPresent()) {
CompoundNBT compound = stack.getOrCreateTag();
if (compound.getInt("CurrX") == 0 && compound.getInt("CurrY") == 0 && compound.getInt("CurrZ") == 0) {
compound.putInt("FirstX", pos.getX());
compound.putInt("FirstY", pos.getY());
compound.putInt("FirstZ", pos.getZ());
compound.putInt("FirstX", context.getPos().getX());
compound.putInt("FirstY", context.getPos().getY());
compound.putInt("FirstZ", context.getPos().getZ());
player.setActiveHand(hand);
return EnumActionResult.SUCCESS;
context.getPlayer().setActiveHand(context.getHand());
return ActionResultType.SUCCESS;
}
}
}
return EnumActionResult.PASS;
return super.onItemUse(context);
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World world, EntityLivingBase entity, int timeLeft) {
public void onPlayerStoppedUsing(ItemStack stack, World world, LivingEntity entity, int timeLeft) {
if (!world.isRemote) {
boolean clear = true;
if (entity instanceof PlayerEntity) {
RayTraceResult result = WorldUtil.getNearestBlockWithDefaultReachDistance(world, (PlayerEntity) entity);
if (result != null && result.getBlockPos() != null) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new CompoundNBT());
}
CompoundNBT compound = stack.getTagCompound();
if (result instanceof BlockRayTraceResult) {
CompoundNBT compound = stack.getOrCreateTag();
BlockPos pos = result.getBlockPos();
BlockPos pos = ((BlockRayTraceResult) result).getPos();
compound.putInt("SecondX", pos.getX());
compound.putInt("SecondY", pos.getY());
compound.putInt("SecondZ", pos.getZ());
@ -137,28 +132,29 @@ public class ItemFillingWand extends ItemEnergy {
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
super.onUpdate(stack, world, entity, itemSlot, isSelected);
public void inventoryTick(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
super.inventoryTick(stack, world, entity, itemSlot, isSelected);
if (!world.isRemote) {
boolean shouldClear = false;
if (isSelected) {
if (entity instanceof PlayerEntity && stack.hasTagCompound()) {
if (entity instanceof PlayerEntity && stack.hasTag()) {
PlayerEntity player = (PlayerEntity) entity;
boolean creative = player.capabilities.isCreativeMode;
boolean creative = player.isCreative();
CompoundNBT compound = stack.getTagCompound();
CompoundNBT compound = stack.getOrCreateTag();
BlockPos firstPos = new BlockPos(compound.getInt("FirstX"), compound.getInt("FirstY"), compound.getInt("FirstZ"));
BlockPos secondPos = new BlockPos(compound.getInt("SecondX"), compound.getInt("SecondY"), compound.getInt("SecondZ"));
if (!BlockPos.ORIGIN.equals(firstPos) && !BlockPos.ORIGIN.equals(secondPos)) {
if (!BlockPos.ZERO.equals(firstPos) && !BlockPos.ZERO.equals(secondPos)) {
int energyUse = 1500;
Pair<BlockState, String> data = loadData(stack);
if (data != null && (creative || this.getEnergyStored(stack) >= energyUse)) {
BlockState replaceState = data.getLeft();
Optional<BlockState> data = loadData(stack);
if (data.isPresent() && (creative || this.getEnergyStored(stack) >= energyUse)) {
BlockState replaceState = data.get(); // not the best way to do this.
int lowestX = Math.min(firstPos.getX(), secondPos.getX());
int lowestY = Math.min(firstPos.getY(), secondPos.getY());
int lowestZ = Math.min(firstPos.getZ(), secondPos.getZ());
@ -170,7 +166,7 @@ public class ItemFillingWand extends ItemEnergy {
BlockPos pos = new BlockPos(lowestX + currX, lowestY + currY, lowestZ + currZ);
BlockState state = world.getBlockState(pos);
if (state.getBlock().isReplaceable(world, pos) && replaceState.getBlock().canPlaceBlockAt(world, pos)) {
if (state.getMaterial().isReplaceable() && replaceState.isValidPosition(world, pos)) {
if (creative || removeFittingItem(replaceState, player)) {
world.setBlockState(pos, replaceState, 2);
@ -223,26 +219,18 @@ public class ItemFillingWand extends ItemEnergy {
}
@Override
public void addInformation(ItemStack stack, World playerIn, List<String> tooltip, ITooltipFlag advanced) {
super.addInformation(stack, playerIn, tooltip, advanced);
public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
super.addInformation(stack, worldIn, tooltip, flagIn);
String display = StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".item_filling_wand.selectedBlock.none");
IFormattableTextComponent display = loadData(stack)
.map(state -> state.getBlock().getTranslatedName())
.orElse(Help.Trans("tooltip", "item_filling_wand.selectedBlock.none"));
Pair<BlockState, String> data = loadData(stack);
if (data != null) {
display = data.getRight();
}
tooltip.add(String.format("%s: %s", StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".item_filling_wand.selectedBlock"), display));
tooltip.add(Help.Trans("tooltip", "item_filling_wand.selectedBlock", display.getString()));
}
@Override
public int getMaxItemUseDuration(ItemStack stack) {
public int getUseDuration(ItemStack stack) {
return Integer.MAX_VALUE;
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.EPIC;
}
}

View file

@ -11,17 +11,9 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
public class ItemLaserRelayUpgrade extends ItemBase {
public ItemLaserRelayUpgrade(String name) {
super(name);
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.UNCOMMON;
public ItemLaserRelayUpgrade() {
super();
}
}

View file

@ -10,93 +10,76 @@
package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.entity.EntityWorm;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import net.minecraft.block.BlockGrass;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.item.ItemUseContext;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.UseHoeEvent;
import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.OnlyIn;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.List;
public class ItemWorm extends ItemBase {
public ItemWorm(String name) {
super(name);
public ItemWorm() {
super();
MinecraftForge.EVENT_BUS.register(this);
this.addPropertyOverride(new ResourceLocation(ActuallyAdditions.MODID, "snail"), new IItemPropertyGetter() {
@Override
@OnlyIn(Dist.CLIENT)
public float apply(ItemStack stack, World world, EntityLivingBase entity) {
return "snail mail".equalsIgnoreCase(stack.getDisplayName())
? 1F
: 0F;
}
});
// TODO: [port] Not sure what this does
// this.addPropertyOverride(new ResourceLocation(ActuallyAdditions.MODID, "snail"), (IItemPropertyGetter) (stack, world, entity) -> "snail mail".equalsIgnoreCase(stack.getDisplayName().getString())
// ? 1F
// : 0F);
}
@Override
public EnumActionResult onItemUse(PlayerEntity player, World world, BlockPos pos, Hand hand, Direction side, float par8, float par9, float par10) {
ItemStack stack = player.getHeldItem(hand);
BlockState state = world.getBlockState(pos);
if (EntityWorm.canWormify(world, pos, state)) {
List<EntityWorm> worms = world.getEntitiesWithinAABB(EntityWorm.class, new AxisAlignedBB(pos.getX() - 1, pos.getY(), pos.getZ() - 1, pos.getX() + 2, pos.getY() + 1, pos.getZ() + 2));
if (worms == null || worms.isEmpty()) {
if (!world.isRemote) {
EntityWorm worm = new EntityWorm(world);
public ActionResultType onItemUse(ItemUseContext context) {
BlockPos pos = context.getPos();
ItemStack stack = context.getPlayer().getHeldItem(context.getHand());
BlockState state = context.getWorld().getBlockState(pos);
if (EntityWorm.canWormify(context.getWorld(), context.getPos(), state)) {
List<EntityWorm> worms = context.getWorld().getEntitiesWithinAABB(EntityWorm.class, new AxisAlignedBB(pos.getX() - 1, pos.getY(), pos.getZ() - 1, pos.getX() + 2, pos.getY() + 1, pos.getZ() + 2));
if (worms.isEmpty()) {
if (!context.getWorld().isRemote) {
EntityWorm worm = new EntityWorm(context.getWorld());
worm.setPosition(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5);
worm.setCustomNameTag(stack.getDisplayName());
world.spawnEntity(worm);
if (!player.capabilities.isCreativeMode) {
worm.setCustomName(stack.getDisplayName()); // TODO: WHAT DOES THIS EVEN DO?
context.getWorld().addEntity(worm);
if (!context.getPlayer().isCreative()) {
stack.shrink(1);
}
}
return EnumActionResult.SUCCESS;
return ActionResultType.SUCCESS;
}
}
return super.onItemUse(player, world, pos, hand, side, par8, par9, par10);
return super.onItemUse(context);
}
@SubscribeEvent(priority = EventPriority.LOW)
public void onHoe(UseHoeEvent event) {
if (ConfigBoolValues.WORMS.isEnabled() && event.getResult() != Result.DENY) {
World world = event.getWorld();
if (ConfigBoolValues.WORMS.isEnabled() && event.getResult() != Event.Result.DENY) {
World world = event.getEntity().world;
if (!world.isRemote) {
BlockPos pos = event.getPos();
BlockPos pos = event.getContext().getPos();
if (world.isAirBlock(pos.up())) {
BlockState state = world.getBlockState(pos);
if (state.getBlock() instanceof BlockGrass && world.rand.nextFloat() >= 0.95F) {
ItemStack stack = new ItemStack(InitItems.itemWorm, world.rand.nextInt(2) + 1);
EntityItem item = new EntityItem(event.getWorld(), pos.getX() + 0.5, pos.getY() + 1, pos.getZ() + 0.5, stack);
world.spawnEntity(item);
if (state.getBlock() == Blocks.GRASS && world.rand.nextFloat() >= 0.95F) {
ItemStack stack = new ItemStack(InitItems.itemWorm.get(), world.rand.nextInt(2) + 1);
ItemEntity item = new ItemEntity(world, pos.getX() + 0.5, pos.getY() + 1, pos.getZ() + 0.5, stack);
world.addEntity(item);
}
}
}
}
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.UNCOMMON;
}
}

View file

@ -11,61 +11,22 @@
package de.ellpeck.actuallyadditions.mod.items.base;
import de.ellpeck.actuallyadditions.api.misc.IDisableableItem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.ConfigurationHandler;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerEnergizer;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import de.ellpeck.actuallyadditions.mod.items.InitItems;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.IRarity;
public class ItemArmorAA extends ArmorItem implements IDisableableItem {
private final ItemStack repairItem;
private final String name;
private final IRarity rarity;
private final boolean disabled;
public ItemArmorAA(IArmorMaterial material, int type) {
super(material, 0, ContainerEnergizer.VALID_EQUIPMENT_SLOTS[type]);
this.repairItem = this.repairItem;
this.name = this.name;
this.rarity = this.rarity;
this.disabled = ConfigurationHandler.config.getBoolean("Disable: " + StringUtil.badTranslate(this.name), "Tool Control", false, "This will disable the " + StringUtil.badTranslate(this.name) + ". It will not be registered.");
if (!this.disabled) {
this.register();
}
public ItemArmorAA(IArmorMaterial material, EquipmentSlotType type) {
this(material, type, InitItems.defaultProps());
}
private void register() {
ItemUtil.registerItem(this, this.getBaseName(), this.shouldAddCreative());
this.registerRendering();
}
protected String getBaseName() {
return this.name;
}
public boolean shouldAddCreative() {
return true;
}
protected void registerRendering() {
ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory");
}
@Override
public IRarity getForgeRarity(ItemStack stack) {
return this.rarity;
}
@Override
public boolean getIsRepairable(ItemStack itemToRepair, ItemStack stack) {
return StackUtil.isValid(this.repairItem) && ItemUtil.areItemsEqual(this.repairItem, stack, false);
public ItemArmorAA(IArmorMaterial material, EquipmentSlotType type, Properties properties) {
super(material, type, properties);
this.disabled = false;
// this.disabled = ConfigurationHandler.config.getBoolean("Disable: " + StringUtil.badTranslate(this.name), "Tool Control", false, "This will disable the " + StringUtil.badTranslate(this.name) + ". It will not be registered.");
}
@Override

View file

@ -10,25 +10,30 @@
package de.ellpeck.actuallyadditions.mod.items.base;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.proxy.ClientProxy;
import de.ellpeck.actuallyadditions.mod.tile.CustomEnergyStorage;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.resources.I18n;
import de.ellpeck.actuallyadditions.mod.util.Help;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.fml.relauncher.OnlyIn;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.text.NumberFormat;
import java.util.List;
@ -38,29 +43,32 @@ public abstract class ItemEnergy extends ItemBase {
private final int maxPower;
private final int transfer;
public ItemEnergy(int maxPower, int transfer, String name) {
super(name);
public ItemEnergy(int maxPower, int transfer) {
super(InitItems.defaultProps().maxStackSize(1));
this.maxPower = maxPower;
this.transfer = transfer;
this.setHasSubtypes(true);
this.setMaxStackSize(1);
}
// TODO: [port] make sure this is right
@Nullable
@Override
public boolean getShareTag() {
return true;
public CompoundNBT getShareTag(ItemStack stack) {
return new CompoundNBT();
}
// @Override
// public boolean getShareTag() {
// return true;
// }
@Override
public void addInformation(ItemStack stack, World playerIn, List<String> tooltip, ITooltipFlag advanced) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
NumberFormat format = NumberFormat.getInstance();
tooltip.add(String.format("%s/%s %s", format.format(storage.getEnergyStored()), format.format(storage.getMaxEnergyStored()), I18n.format("actuallyadditions.cflong")));
}
}
public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
super.addInformation(stack, worldIn, tooltip, flagIn);
stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(storage -> {
NumberFormat format = NumberFormat.getInstance();
tooltip.add(Help.Trans("misc", "power_long", format.format(storage.getEnergyStored()), format.format(storage.getMaxEnergyStored())));
});
}
@Override
@ -70,21 +78,15 @@ public abstract class ItemEnergy extends ItemBase {
}
@Override
public void getSubItems(CreativeTabs tabs, NonNullList<ItemStack> list) {
if (this.isInCreativeTab(tabs)) {
ItemStack stackFull = new ItemStack(this);
if (stackFull.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stackFull.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
this.setEnergy(stackFull, storage.getMaxEnergyStored());
list.add(stackFull);
}
}
ItemStack stackEmpty = new ItemStack(this);
this.setEnergy(stackEmpty, 0);
list.add(stackEmpty);
public void fillItemGroup(ItemGroup group, NonNullList<ItemStack> items) {
super.fillItemGroup(group, items);
if (!this.isInGroup(group)) {
return;
}
ItemStack charged = new ItemStack(this);
charged.getOrCreateTag().putDouble("Energy", this.getMaxEnergyStored(charged));
items.add(charged);
}
@Override
@ -94,94 +96,79 @@ public abstract class ItemEnergy extends ItemBase {
@Override
public double getDurabilityForDisplay(ItemStack stack) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
double maxAmount = storage.getMaxEnergyStored();
double energyDif = maxAmount - storage.getEnergyStored();
return stack.getCapability(CapabilityEnergy.ENERGY, null)
.map(cap -> {
double maxAmount = cap.getMaxEnergyStored();
double energyDif = maxAmount - cap.getEnergyStored();
return energyDif / maxAmount;
}
}
return super.getDurabilityForDisplay(stack);
})
.orElse(super.getDurabilityForDisplay(stack));
}
@Override
public int getRGBDurabilityForDisplay(ItemStack stack) {
PlayerEntity player = ActuallyAdditions.PROXY.getCurrentPlayer();
PlayerEntity player = ClientProxy.getCurrentPlayer();
if (player != null && player.world != null) {
float[] color = AssetUtil.getWheelColor(player.world.getTotalWorldTime() % 256);
float[] color = AssetUtil.getWheelColor(player.world.getGameTime() % 256);
return MathHelper.rgb(color[0] / 255F, color[1] / 255F, color[2] / 255F);
}
return super.getRGBDurabilityForDisplay(stack);
}
public void setEnergy(ItemStack stack, int energy) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage instanceof CustomEnergyStorage) {
((CustomEnergyStorage) storage).setEnergyStored(energy);
stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(cap -> {
if (cap instanceof CustomEnergyStorage) {
((CustomEnergyStorage) cap).setEnergyStored(energy);
}
}
});
}
@Deprecated
public int receiveEnergyInternal(ItemStack stack, int maxReceive, boolean simulate) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage instanceof CustomEnergyStorage) {
((CustomEnergyStorage) storage).receiveEnergyInternal(maxReceive, simulate);
}
}
// if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
// IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
// if (storage instanceof CustomEnergyStorage) {
// ((CustomEnergyStorage) storage).receiveEnergyInternal(maxReceive, simulate);
// }
// }
return 0;
}
public int extractEnergyInternal(ItemStack stack, int maxExtract, boolean simulate) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage instanceof CustomEnergyStorage) {
((CustomEnergyStorage) storage).extractEnergyInternal(maxExtract, simulate);
}
}
return 0;
return stack.getCapability(CapabilityEnergy.ENERGY)
.map(cap -> cap instanceof CustomEnergyStorage
? ((CustomEnergyStorage) cap).extractEnergyInternal(maxExtract, simulate)
: 0)
.orElse(0);
}
@Deprecated
public int receiveEnergy(ItemStack stack, int maxReceive, boolean simulate) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
return storage.receiveEnergy(maxReceive, simulate);
}
}
// if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
// IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
// if (storage != null) {
// return storage.receiveEnergy(maxReceive, simulate);
// }
// }
return 0;
}
public int extractEnergy(ItemStack stack, int maxExtract, boolean simulate) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
return storage.extractEnergy(maxExtract, simulate);
}
}
return 0;
return stack.getCapability(CapabilityEnergy.ENERGY)
.map(cap -> cap.extractEnergy(maxExtract, simulate))
.orElse(0);
}
public int getEnergyStored(ItemStack stack) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
return storage.getEnergyStored();
}
}
return 0;
return stack.getCapability(CapabilityEnergy.ENERGY, null)
.map(IEnergyStorage::getEnergyStored)
.orElse(0);
}
public int getMaxEnergyStored(ItemStack stack) {
if (stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage != null) {
return storage.getMaxEnergyStored();
}
}
return 0;
return stack.getCapability(CapabilityEnergy.ENERGY, null)
.map(IEnergyStorage::getMaxEnergyStored)
.orElse(0);
}
@Override
@ -192,41 +179,30 @@ public abstract class ItemEnergy extends ItemBase {
private static class EnergyCapabilityProvider implements ICapabilityProvider {
public final CustomEnergyStorage storage;
private final LazyOptional<CustomEnergyStorage> energyCapability;
public EnergyCapabilityProvider(ItemStack stack, ItemEnergy item) {
this.storage = new CustomEnergyStorage(item.maxPower, item.transfer, item.transfer) {
@Override
public int getEnergyStored() {
if (stack.hasTagCompound()) {
return stack.getTagCompound().getInteger("Energy");
} else {
return 0;
}
return stack.getOrCreateTag().getInt("Energy");
}
@Override
public void setEnergyStored(int energy) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new CompoundNBT());
}
stack.getTagCompound().setInteger("Energy", energy);
stack.getOrCreateTag().putInt("Energy", energy);
}
};
this.energyCapability = LazyOptional.of(() -> this.storage);
}
@Nonnull
@Override
public boolean hasCapability(Capability<?> capability, Direction facing) {
return this.getCapability(capability, facing) != null;
}
@Nullable
@Override
public <T> T getCapability(Capability<T> capability, Direction facing) {
if (capability == CapabilityEnergy.ENERGY) {
return CapabilityEnergy.ENERGY.cast(this.storage);
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
if (cap == CapabilityEnergy.ENERGY) {
return this.energyCapability.cast();
}
return null;
return LazyOptional.empty();
}
}
}

View file

@ -12,23 +12,16 @@ package de.ellpeck.actuallyadditions.mod.items.lens;
import de.ellpeck.actuallyadditions.api.lens.ILensItem;
import de.ellpeck.actuallyadditions.api.lens.Lens;
import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
public class ItemLens extends ItemBase implements ILensItem {
private final Lens type;
public ItemLens(String name, Lens type) {
super(name);
public ItemLens(Lens type) {
super(InitItems.defaultProps().maxStackSize(1));
this.type = type;
this.setMaxStackSize(1);
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.UNCOMMON;
}
@Override

View file

@ -12,11 +12,7 @@ package de.ellpeck.actuallyadditions.mod.jei;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient;
import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe;
import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe;
import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe;
import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe;
import de.ellpeck.actuallyadditions.api.recipe.*;
import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble;
@ -36,13 +32,10 @@ import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.util.Util;
import mezz.jei.api.IJeiHelpers;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.IModRegistry;
import mezz.jei.api.JEIPlugin;
import mezz.jei.api.ingredients.IIngredientBlacklist;
import mezz.jei.api.recipe.IRecipeCategoryRegistration;
import mezz.jei.api.recipe.VanillaRecipeCategoryUid;
import mezz.jei.api.constants.VanillaRecipeCategoryUid;
import mezz.jei.api.helpers.IJeiHelpers;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import net.minecraft.item.ItemStack;
@JEIPlugin
@ -78,22 +71,22 @@ public class JEIActuallyAdditionsPlugin implements IModPlugin {
registry.addRecipeClickArea(GuiFurnaceDouble.class, 51, 40, 74, 22, VanillaRecipeCategoryUid.SMELTING);
IIngredientBlacklist blacklist = helpers.getIngredientBlacklist();
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockRice));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockCanola));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockFlax));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockCoffee));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockWildPlant, 1, Util.WILDCARD));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockColoredLampOn, 1, Util.WILDCARD));
blacklist.addIngredientToBlacklist(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.YOUTUBE_ICON.ordinal()));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockRice.get()));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockCanola.get()));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockFlax.get()));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockCoffee.get()));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockWildPlant.get(), 1, Util.WILDCARD));
blacklist.addIngredientToBlacklist(new ItemStack(InitBlocks.blockColoredLampOn.get(), 1, Util.WILDCARD));
blacklist.addIngredientToBlacklist(new ItemStack(InitItems.itemMisc.get(), 1, TheMiscItems.YOUTUBE_ICON.ordinal()));
registry.addRecipeCatalyst(new ItemStack(InitItems.itemCrafterOnAStick), VanillaRecipeCategoryUid.CRAFTING);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockFurnaceDouble), VanillaRecipeCategoryUid.SMELTING);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockGrinder), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockGrinderDouble), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCoffeeMachine), CoffeeMachineRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockAtomicReconstructor), ReconstructorRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockEmpowerer), EmpowererRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitItems.itemBooklet), BookletRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCompost), CompostRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitItems.itemCrafterOnAStick.get()), VanillaRecipeCategoryUid.CRAFTING);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockFurnaceDouble.get()), VanillaRecipeCategoryUid.SMELTING);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockGrinder.get()), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockGrinderDouble.get()), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCoffeeMachine.get()), CoffeeMachineRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockAtomicReconstructor.get()), ReconstructorRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockEmpowerer.get()), EmpowererRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitItems.itemBooklet.get()), BookletRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCompost.get()), CompostRecipeCategory.NAME);
}
}

View file

@ -28,8 +28,9 @@ public enum ArmorMaterials implements IArmorMaterial {
DIAMATINE("diamatine_armor_material", 36, new int[]{4, 7, 8, 4}, 12, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 3, 0f, () -> Ingredient.fromItems(InitItems.DIAMATINE_CRYSTAL.get())),
VOID("void_armor_material", 23, new int[]{1, 3, 4, 1}, 13, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 0, 0f, () -> Ingredient.fromItems(InitItems.VOID_CRYSTAL.get())),
EMERADIC("emeradic_armor_material", 32, new int[]{6, 9, 9, 4}, 18, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 3, 0f, () -> Ingredient.fromItems(InitItems.EMERADIC_CRYSTAL.get())),
ENORI("enori_armor_material", 24, new int[]{3, 6, 6, 3}, 11, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 0, 0f, () -> Ingredient.fromItems(InitItems.ENORI_CRYSTAL.get()));
ENORI("enori_armor_material", 24, new int[]{3, 6, 6, 3}, 11, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 0, 0f, () -> Ingredient.fromItems(InitItems.ENORI_CRYSTAL.get())),
GOGGLES("goggles_armor_material", 0, new int[]{0, 0, 0, 0}, 0, SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, 0, 0f, () -> Ingredient.EMPTY);
// HMMM Tasty stolen code from MC, how lovely.
private static final int[] MAX_DAMAGE_ARRAY = new int[]{13, 15, 16, 11};
private final String name;

View file

@ -10,21 +10,21 @@
package de.ellpeck.actuallyadditions.mod.misc;
import java.util.Locale;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.InitItems;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.BannerPattern;
import net.minecraftforge.common.util.EnumHelper;
import java.util.Locale;
public final class BannerHelper {
public static void init() {
addCraftingPattern("drill", new ItemStack(InitItems.itemDrill, 1, 3));
addCraftingPattern("leaf_blo", new ItemStack(InitItems.itemLeafBlower));
addCraftingPattern("phan_con", new ItemStack(InitItems.itemPhantomConnector));
addCraftingPattern("book", new ItemStack(InitItems.itemBooklet));
addCraftingPattern("drill", new ItemStack(InitItems.itemDrill.get(), 1, 3));
addCraftingPattern("leaf_blo", new ItemStack(InitItems.itemLeafBlower.get()));
addCraftingPattern("phan_con", new ItemStack(InitItems.itemPhantomConnector.get()));
addCraftingPattern("book", new ItemStack(InitItems.itemBooklet.get()));
}
/**
@ -45,8 +45,8 @@ public final class BannerHelper {
* pattern.
*/
public static void addCraftingPattern(String name, ItemStack craftingStack) {
Class<?>[] paramTypes = { String.class, String.class, ItemStack.class };
Object[] paramValues = { ActuallyAdditions.MODID + "_" + name, ActuallyAdditions.MODID + "_" + name, craftingStack };
Class<?>[] paramTypes = {String.class, String.class, ItemStack.class};
Object[] paramValues = {ActuallyAdditions.MODID + "_" + name, ActuallyAdditions.MODID + "_" + name, craftingStack};
EnumHelper.addEnum(BannerPattern.class, (ActuallyAdditions.MODID + "_" + name).toUpperCase(Locale.ROOT), paramTypes, paramValues);
}

View file

@ -12,7 +12,7 @@ package de.ellpeck.actuallyadditions.mod.proxy;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.item.Item;
import java.util.ArrayList;
@ -82,7 +82,7 @@ public class ClientProxy {
// }
@Deprecated
public PlayerEntity getCurrentPlayer() {
public static ClientPlayerEntity getCurrentPlayer() {
return Minecraft.getInstance().player;
}
}

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerBioReactor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
@ -184,6 +185,6 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements INa
@Nullable
@Override
public Container createMenu(int windowId, PlayerInventory playerInventory, PlayerEntity playerEntity) {
return new;
return new ContainerBioReactor(windowId, playerInventory, this);
}
}

View file

@ -168,7 +168,7 @@ public abstract class TileEntityLaserRelay extends TileEntityInventoryBase {
public int getMaxRange() {
ItemStack upgrade = this.inv.getStackInSlot(0);
if (StackUtil.isValid(upgrade) && upgrade.getItem() == InitItems.itemLaserUpgradeRange) {
if (StackUtil.isValid(upgrade) && upgrade.getItem() == InitItems.itemLaserUpgradeRange.get()) {
return MAX_DISTANCE_RANGED;
} else {
return MAX_DISTANCE;

View file

@ -6,6 +6,7 @@ tooltip.actuallyadditions.disabled=Disabled Object
actuallyadditions.cft=CF/t
actuallyadditions.cf=CF
actuallyadditions.cflong=Crystal Flux
misc.actuallyadditions.power_long=%s/%s Crystal Flux
#Fluids
fluid.actuallyadditions.refinedcanolaoil=Refined Canola Oil
@ -586,7 +587,7 @@ tooltip.actuallyadditions.battery.changeMode=Sneak-right-click to toggle.
tooltip.actuallyadditions.previouslyDoubleFurnace=Previously "Double Furnace"
tooltip.actuallyadditions.previouslyBag=Previously "Bag"
tooltip.actuallyadditions.previouslyVoidBag=Previously "Void Bag"
tooltip.actuallyadditions.item_filling_wand.selectedBlock=Selected Block
tooltip.actuallyadditions.item_filling_wand.selectedBlock=Selected Block:
tooltip.actuallyadditions.item_filling_wand.selectedBlock.none=None
tooltip.actuallyadditions.coffeeCup.noEffect=No Effects