aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bartworks/common/items
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/bartworks/common/items
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/bartworks/common/items')
-rw-r--r--src/main/java/bartworks/common/items/BWItemBlocks.java84
-rw-r--r--src/main/java/bartworks/common/items/ItemCircuitProgrammer.java236
-rw-r--r--src/main/java/bartworks/common/items/ItemLabModule.java41
-rw-r--r--src/main/java/bartworks/common/items/ItemLabParts.java150
-rw-r--r--src/main/java/bartworks/common/items/ItemRockCutter.java183
-rw-r--r--src/main/java/bartworks/common/items/ItemSimpleWindMeter.java76
-rw-r--r--src/main/java/bartworks/common/items/ItemStonageRotors.java162
-rw-r--r--src/main/java/bartworks/common/items/ItemTeslaStaff.java141
-rw-r--r--src/main/java/bartworks/common/items/SimpleIconItem.java35
-rw-r--r--src/main/java/bartworks/common/items/SimpleSubItemClass.java69
10 files changed, 1177 insertions, 0 deletions
diff --git a/src/main/java/bartworks/common/items/BWItemBlocks.java b/src/main/java/bartworks/common/items/BWItemBlocks.java
new file mode 100644
index 0000000000..e540093bf8
--- /dev/null
+++ b/src/main/java/bartworks/common/items/BWItemBlocks.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.Arrays;
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+import bartworks.API.ITileAddsInformation;
+import bartworks.MainMod;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.util.GTLanguageManager;
+
+public class BWItemBlocks extends ItemBlock {
+
+ private final String mNoMobsToolTip = GTLanguageManager
+ .addStringLocalization("gt.nomobspawnsonthisblock", "Mobs cannot Spawn on this Block");
+ private final String mNoTileEntityToolTip = GTLanguageManager
+ .addStringLocalization("gt.notileentityinthisblock", "This is NOT a TileEntity!");
+
+ public BWItemBlocks(Block par1) {
+ super(par1);
+ this.setMaxDamage(0);
+ this.setHasSubtypes(true);
+ this.setCreativeTab(MainMod.GT2);
+ }
+
+ @Override
+ public int getMetadata(int aMeta) {
+ return aMeta;
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack aStack) {
+ return this.field_150939_a.getUnlocalizedName() + "." + this.getDamage(aStack);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) {
+
+ if (this.field_150939_a instanceof ITileAddsInformation) {
+ aList.addAll(Arrays.asList(((ITileAddsInformation) this.field_150939_a).getInfoData()));
+ }
+ aList.add(this.mNoMobsToolTip);
+ if (!(this.field_150939_a instanceof ITileEntityProvider)) aList.add(this.mNoTileEntityToolTip);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(ItemStack stack, int pass) {
+ return this.field_150939_a.getIcon(0, stack.getItemDamage());
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
+ return this.getIcon(stack, renderPass);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_) {
+ return this.field_150939_a.getIcon(0, p_77618_2_);
+ }
+}
diff --git a/src/main/java/bartworks/common/items/ItemCircuitProgrammer.java b/src/main/java/bartworks/common/items/ItemCircuitProgrammer.java
new file mode 100644
index 0000000000..c7150451a1
--- /dev/null
+++ b/src/main/java/bartworks/common/items/ItemCircuitProgrammer.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.List;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+
+import com.gtnewhorizons.modularui.api.ModularUITextures;
+import com.gtnewhorizons.modularui.api.forge.IItemHandlerModifiable;
+import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
+import com.gtnewhorizons.modularui.api.math.Pos2d;
+import com.gtnewhorizons.modularui.api.screen.IItemWithModularUI;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.internal.wrapper.BaseSlot;
+import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.SlotWidget;
+
+import bartworks.API.modularUI.BWUITextures;
+import bartworks.MainMod;
+import bartworks.util.BWUtil;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.GregTechAPI;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.gui.modularui.GTUIInfos;
+import gregtech.api.gui.modularui.GTUITextures;
+import gregtech.api.items.GTGenericItem;
+import gregtech.api.util.GTOreDictUnificator;
+import gregtech.api.util.GTUtility;
+import ic2.api.item.ElectricItem;
+import ic2.api.item.IElectricItem;
+
+public class ItemCircuitProgrammer extends GTGenericItem implements IElectricItem, IItemWithModularUI {
+
+ private static final int COST_PER_USE = 100;
+
+ public ItemCircuitProgrammer() {
+ super("BWCircuitProgrammer", "Circuit Programmer", "Programs Integrated Circuits");
+ this.setMaxStackSize(1);
+ this.setNoRepair();
+ this.setHasSubtypes(false);
+ this.setCreativeTab(MainMod.BWT);
+ GregTechAPI.registerCircuitProgrammer(
+ s -> s.getItem() instanceof ItemCircuitProgrammer && ElectricItem.manager.canUse(s, COST_PER_USE),
+ (s, p) -> {
+ ElectricItem.manager.use(s, COST_PER_USE, p);
+ return s;
+ });
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) {
+ super.addInformation(aStack, aPlayer, aList, aF3_H);
+ if (aStack != null && aStack.getTagCompound() != null) aList.add(
+ StatCollector.translateToLocal("tooltip.cp.0.name") + " "
+ + (aStack.getTagCompound()
+ .getBoolean("HasChip") ? StatCollector.translateToLocal("tooltip.bw.yes.name")
+ : StatCollector.translateToLocal("tooltip.bw.no.name")));
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ if (ElectricItem.manager.use(aStack, COST_PER_USE, aPlayer)) {
+ GTUIInfos.openPlayerHeldItemUI(aPlayer);
+ }
+ return aStack;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List<ItemStack> itemList) {
+ ItemStack itemStack = new ItemStack(this, 1);
+ if (this.getChargedItem(itemStack) == this) {
+ ItemStack charged = new ItemStack(this, 1);
+ ElectricItem.manager.charge(charged, Integer.MAX_VALUE, Integer.MAX_VALUE, true, false);
+ itemList.add(charged);
+ }
+ if (this.getEmptyItem(itemStack) == this) {
+ itemList.add(new ItemStack(this, 1, this.getMaxDamage()));
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister aIconRegister) {
+ this.mIcon = aIconRegister.registerIcon("bartworks:CircuitProgrammer");
+ }
+
+ @Override
+ public int getTier(ItemStack var1) {
+ return 1;
+ }
+
+ @Override
+ public boolean canProvideEnergy(ItemStack itemStack) {
+ return false;
+ }
+
+ @Override
+ public Item getChargedItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public Item getEmptyItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public double getMaxCharge(ItemStack itemStack) {
+ return 10000;
+ }
+
+ @Override
+ public double getTransferLimit(ItemStack itemStack) {
+ return GTValues.V[1];
+ }
+
+ private static final String NBT_KEY_HAS_CHIP = "HasChip";
+ private static final String NBT_KEY_CHIP_CONFIG = "ChipConfig";
+
+ @Override
+ public ModularWindow createWindow(UIBuildContext buildContext, ItemStack heldStack) {
+ ModularWindow.Builder builder = ModularWindow.builder(256, 166);
+ builder.setBackground(BWUITextures.BACKGROUND_CIRCUIT_PROGRAMMER);
+ builder.bindPlayerInventory(buildContext.getPlayer(), new Pos2d(86, 83), ModularUITextures.ITEM_SLOT);
+
+ ItemStackHandler inventoryHandler = new ItemStackHandler(1) {
+
+ @Override
+ public int getSlotLimit(int slot) {
+ return 1;
+ }
+ };
+ SlotWidget circuitSlotWidget = new SlotWidget(new BaseSlot(inventoryHandler, 0) {
+
+ @Override
+ public void putStack(ItemStack stack) {
+ if (ItemCircuitProgrammer.this.isLVCircuit(stack)) {
+ stack = ItemCircuitProgrammer.this.createRealCircuit(0);
+ }
+ ((IItemHandlerModifiable) this.getItemHandler()).setStackInSlot(this.getSlotIndex(), stack);
+ this.onSlotChanged();
+ }
+ });
+
+ ItemStack initialStack = null;
+ NBTTagCompound tag = heldStack.getTagCompound();
+ if (tag != null && tag.getBoolean(NBT_KEY_HAS_CHIP)) {
+ initialStack = this.createRealCircuit(tag.getByte(NBT_KEY_CHIP_CONFIG));
+ }
+ circuitSlotWidget.getMcSlot()
+ .putStack(initialStack);
+
+ builder.widget(circuitSlotWidget.setChangeListener(widget -> {
+ ItemStack stack = widget.getMcSlot()
+ .getStack();
+ ItemStack heldItem = widget.getContext()
+ .getPlayer()
+ .getHeldItem();
+ NBTTagCompound tag2 = heldItem.getTagCompound();
+ if (tag2 == null) {
+ tag2 = new NBTTagCompound();
+ }
+
+ if (stack != null) {
+ tag2.setBoolean(NBT_KEY_HAS_CHIP, true);
+ tag2.setByte(NBT_KEY_CHIP_CONFIG, (byte) stack.getItemDamage());
+ } else {
+ tag2.setBoolean(NBT_KEY_HAS_CHIP, false);
+ }
+ heldItem.setTagCompound(tag2);
+ })
+ .setFilter(stack -> this.isProgrammedCircuit(stack) || this.isLVCircuit(stack))
+ .setBackground(ModularUITextures.ITEM_SLOT, GTUITextures.OVERLAY_SLOT_INT_CIRCUIT)
+ .setPos(122, 60));
+
+ for (int i = 0; i < 24; i++) {
+ final int index = i;
+ builder.widget(new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (circuitSlotWidget.getMcSlot()
+ .getHasStack()
+ && this.isProgrammedCircuit(
+ circuitSlotWidget.getMcSlot()
+ .getStack())) {
+ circuitSlotWidget.getMcSlot()
+ .putStack(this.createRealCircuit(index + 1));
+ }
+ })
+ .setPos(32 + i % 12 * 18, 21 + i / 12 * 18)
+ .setSize(18, 18));
+ }
+
+ return builder.build();
+ }
+
+ private ItemStack createRealCircuit(int config) {
+ return ItemList.Circuit_Integrated.getWithDamage(1, config);
+ }
+
+ private boolean isProgrammedCircuit(ItemStack stack) {
+ return stack.getItem()
+ .equals(
+ GTUtility.getIntegratedCircuit(0)
+ .getItem());
+ }
+
+ private boolean isLVCircuit(ItemStack stack) {
+ return BWUtil.checkStackAndPrefix(stack)
+ && OrePrefixes.circuit.equals(GTOreDictUnificator.getAssociation(stack).mPrefix)
+ && GTOreDictUnificator.getAssociation(stack).mMaterial.mMaterial.equals(Materials.LV);
+ }
+}
diff --git a/src/main/java/bartworks/common/items/ItemLabModule.java b/src/main/java/bartworks/common/items/ItemLabModule.java
new file mode 100644
index 0000000000..65931c4181
--- /dev/null
+++ b/src/main/java/bartworks/common/items/ItemLabModule.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.List;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StatCollector;
+
+import bartworks.MainMod;
+
+public class ItemLabModule extends SimpleSubItemClass {
+
+ public ItemLabModule(String[] tex) {
+ super(tex);
+ this.setCreativeTab(MainMod.BIO_TAB);
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack stack) {
+ return "labModule." + super.getUnlocalizedName(stack);
+ }
+
+ @Override
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List<String> aList, boolean p_77624_4_) {
+ aList.add(StatCollector.translateToLocal("tooltip.labmodule.0.name"));
+ super.addInformation(p_77624_1_, p_77624_2_, aList, p_77624_4_);
+ }
+}
diff --git a/src/main/java/bartworks/common/items/ItemLabParts.java b/src/main/java/bartworks/common/items/ItemLabParts.java
new file mode 100644
index 0000000000..4a45a7915f
--- /dev/null
+++ b/src/main/java/bartworks/common/items/ItemLabParts.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.List;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StatCollector;
+
+import bartworks.MainMod;
+import bartworks.common.loaders.BioItemList;
+import bartworks.util.BWColorUtil;
+import bartworks.util.BWUtil;
+import bartworks.util.BioCulture;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class ItemLabParts extends SimpleSubItemClass {
+
+ public ItemLabParts(String[] tex) {
+ super(tex);
+ this.setCreativeTab(MainMod.BIO_TAB);
+ }
+
+ @Override
+ public EnumRarity getRarity(ItemStack itemStack) {
+
+ if (itemStack == null || itemStack.getTagCompound() == null) return EnumRarity.common;
+
+ return switch (itemStack.getItemDamage()) {
+ case 0 -> BWUtil.getRarityFromByte(
+ itemStack.getTagCompound()
+ .getCompoundTag("DNA")
+ .getByte("Rarity"));
+ case 1, 2 -> BWUtil.getRarityFromByte(
+ itemStack.getTagCompound()
+ .getByte("Rarity"));
+ default -> EnumRarity.common;
+ };
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public int getColorFromItemStack(ItemStack stack, int p_82790_2_) {
+ if (stack.getItemDamage() == 0 && stack.getTagCompound() != null
+ && stack.getTagCompound()
+ .getIntArray("Color") != null
+ && stack.getTagCompound()
+ .getIntArray("Color").length > 0) {
+ int[] rgb = stack.getTagCompound()
+ .getIntArray("Color");
+ return BWColorUtil.getColorFromRGBArray(rgb);
+ }
+ return super.getColorFromItemStack(stack, p_82790_2_);
+ }
+
+ @Override
+ public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List<String> list, boolean b) {
+ if (itemStack == null) return;
+
+ if (itemStack.getTagCompound() == null) {
+ switch (itemStack.getItemDamage()) {
+ case 0:
+ list.add(StatCollector.translateToLocal("tooltip.labparts.0.name"));
+ break;
+ case 1:
+ list.add(StatCollector.translateToLocal("tooltip.labparts.1.name"));
+ break;
+ case 2:
+ list.add(StatCollector.translateToLocal("tooltip.labparts.2.name"));
+ break;
+ case 3:
+ list.add(StatCollector.translateToLocal("tooltip.labparts.3.name"));
+ break;
+ case 4:
+ list.add(StatCollector.translateToLocal("tooltip.labparts.4.name"));
+ break;
+ default:
+ break;
+ }
+ super.addInformation(itemStack, entityPlayer, list, b);
+ return;
+ }
+
+ BioCulture culture = BioCulture.getBioCulture(
+ itemStack.getTagCompound()
+ .getString("Name"));
+
+ switch (itemStack.getItemDamage()) {
+ case 0:
+ list.add(
+ StatCollector.translateToLocal("tooltip.labparts.5.name") + " "
+ + itemStack.getTagCompound()
+ .getString("Name")
+ + (culture != null ? " (" + culture.getLocalisedName() + ")" : ""));
+ if (!itemStack.getTagCompound()
+ .getBoolean("Breedable")) {
+ list.add(StatCollector.translateToLocal("tooltip.labparts.6.name"));
+ }
+ break;
+ case 1:
+ list.add(
+ StatCollector.translateToLocal("tooltip.labparts.7.name") + " "
+ + itemStack.getTagCompound()
+ .getString("Name")
+ + (culture != null ? " (" + culture.getLocalisedName() + ")" : ""));
+ break;
+ case 2:
+ list.add(
+ StatCollector.translateToLocal("tooltip.labparts.8.name") + " "
+ + itemStack.getTagCompound()
+ .getString("Name")
+ + (culture != null ? " (" + culture.getLocalisedName() + ")" : ""));
+ break;
+ default:
+ break;
+ }
+ super.addInformation(itemStack, entityPlayer, list, b);
+ }
+
+ @Override
+ public void getSubItems(Item item, CreativeTabs creativeTabs, List<ItemStack> list) {
+ list.addAll(BioItemList.getAllPetriDishes());
+ list.addAll(BioItemList.getAllDNASampleFlasks());
+ list.addAll(BioItemList.getAllPlasmidCells());
+ super.getSubItems(item, creativeTabs, list);
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack itemStack) {
+ if (itemStack.getItemDamage() == 0 && itemStack.getTagCompound() != null)
+ return "filled.item." + this.tex[itemStack.getItemDamage()].replace('/', '.');
+ return super.getUnlocalizedName(itemStack);
+ }
+}
diff --git a/src/main/java/bartworks/common/items/ItemRockCutter.java b/src/main/java/bartworks/common/items/ItemRockCutter.java
new file mode 100644
index 0000000000..45682fc457
--- /dev/null
+++ b/src/main/java/bartworks/common/items/ItemRockCutter.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemTool;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+
+import com.google.common.collect.Sets;
+
+import bartworks.MainMod;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.enums.GTValues;
+import ic2.api.item.ElectricItem;
+import ic2.api.item.IElectricItem;
+
+public class ItemRockCutter extends ItemTool implements IElectricItem {
+
+ private static Set<Block> mineableBlocks = Sets
+ .newHashSet(Blocks.stone, Blocks.cobblestone, Blocks.sand, Blocks.clay);
+ private final int mCharge;
+ private final int mTransfer;
+ public int mTier;
+
+ @SideOnly(Side.CLIENT)
+ private IIcon icon;
+
+ private final int multi;
+
+ public ItemRockCutter(int aTier) {
+ super(2 * aTier, Item.ToolMaterial.EMERALD, ItemRockCutter.mineableBlocks);
+ this.mTier = aTier;
+ this.multi = (int) Math.pow(10, this.mTier - 1);
+ ItemRockCutter.mineableBlocks = new HashSet<>();
+ this.maxStackSize = 1;
+ this.mCharge = 10000 * this.multi;
+ this.mTransfer = (int) GTValues.V[this.mTier];
+ this.efficiencyOnProperMaterial = 2.0f * this.mTier;
+ this.setCreativeTab(MainMod.GT2);
+ this.setMaxDamage(27 + 10 * this.multi);
+ this.setNoRepair();
+ this.setUnlocalizedName("GT_Rockcutter_Item_" + GTValues.VN[this.mTier]);
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) {
+ aList.add(StatCollector.translateToLocal("tooltip.bw.tier.name") + " " + GTValues.VN[this.mTier]);
+ }
+
+ @Override
+ public void onUpdate(ItemStack aStack, World worldIn, Entity entityIn, int p_77663_4_, boolean p_77663_5_) {
+ if (!ElectricItem.manager.canUse(aStack, 500 * this.multi)) {
+ if (aStack.isItemEnchanted()) {
+ aStack.getTagCompound()
+ .removeTag("ench");
+ }
+ } else if (!aStack.isItemEnchanted()) {
+ aStack.addEnchantment(Enchantment.silkTouch, 3);
+ }
+ }
+
+ @Override
+ public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World p_77648_3_, int p_77648_4_, int p_77648_5_,
+ int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
+ ElectricItem.manager.use(aStack, 0, aPlayer);
+ return false;
+ }
+
+ @Override
+ public boolean onBlockDestroyed(ItemStack var1, World var2, Block var3, int var4, int var5, int var6,
+ EntityLivingBase var7) {
+ ElectricItem.manager.use(var1, 0, var7);
+ if (ElectricItem.manager.canUse(var1, 500 * this.multi)) {
+ ElectricItem.manager.use(var1, 500 * this.multi, var7);
+ } else {
+ ElectricItem.manager.discharge(var1, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, false);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean canHarvestBlock(Block par1Block, ItemStack itemStack) {
+ return par1Block.getMaterial()
+ .equals(Material.glass)
+ || par1Block.getMaterial()
+ .equals(Material.clay)
+ || par1Block.getMaterial()
+ .equals(Material.packedIce)
+ || par1Block.getMaterial()
+ .equals(Material.ice)
+ || par1Block.getMaterial()
+ .equals(Material.sand)
+ || par1Block.getMaterial()
+ .equals(Material.ground)
+ || par1Block.getMaterial()
+ .equals(Material.rock)
+ || mineableBlocks.contains(par1Block);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List<ItemStack> itemList) {
+ ItemStack itemStack = new ItemStack(this, 1);
+ if (this.getChargedItem(itemStack) == this) {
+ ItemStack charged = new ItemStack(this, 1);
+ ElectricItem.manager.charge(charged, Integer.MAX_VALUE, Integer.MAX_VALUE, true, false);
+ itemList.add(charged);
+ }
+ if (this.getEmptyItem(itemStack) == this) {
+ itemList.add(new ItemStack(this, 1, this.getMaxDamage()));
+ }
+ }
+
+ @Override
+ public boolean canProvideEnergy(ItemStack itemStack) {
+ return false;
+ }
+
+ @Override
+ public Item getChargedItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public Item getEmptyItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public double getMaxCharge(ItemStack itemStack) {
+ return this.mCharge;
+ }
+
+ @Override
+ public int getTier(ItemStack itemStack) {
+ return this.mTier;
+ }
+
+ @Override
+ public double getTransferLimit(ItemStack itemStack) {
+ return this.mTransfer;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister iconRegister) {
+ this.icon = iconRegister.registerIcon("bartworks:GT_Rockcutter");
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamage(int par1) {
+ return this.icon;
+ }
+}
diff --git a/src/main/java/bartworks/common/items/ItemSimpleWindMeter.java b/src/main/java/bartworks/common/items/ItemSimpleWindMeter.java
new file mode 100644
index 0000000000..a477fbf37c
--- /dev/null
+++ b/src/main/java/bartworks/common/items/ItemSimpleWindMeter.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.common.items;
+
+import java.util.List;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+
+import bartworks.MainMod;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import ic2.core.WorldData;
+
+public class ItemSimpleWindMeter extends Item {
+
+ public ItemSimpleWindMeter() {
+ this.maxStackSize = 1;
+ this.setMaxDamage(15);
+ this.setCreativeTab(MainMod.BWT);
+ this.hasSubtypes = false;
+ this.setUnlocalizedName("BW_SimpleWindMeter");
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register) {
+ this.itemIcon = register.registerIcon(MainMod.MOD_ID + ":BW_SimpleWindMeter");
+ }
+
+ @Override
+ public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List<String> list, boolean p_77624_4_) {
+ super.addInformation(itemStack, entityPlayer, list, p_77624_4_);
+ list.add(StatCollector.translateToLocal("tooltip.windmeter.0.name"));
+ list.add(
+ StatCollector.translateToLocal("tooltip.windmeter.1.name") + " "
+ + (this.getMaxDamage() - this.getDamage(itemStack))
+ + "/"
+ + this.getMaxDamage());
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer) {
+ if (entityPlayer.worldObj.isRemote || world == null
+ || WorldData.get(world) == null
+ || WorldData.get(world).windSim == null) return itemStack;
+
+ float windStrength = (float) WorldData.get(world).windSim.getWindAt(entityPlayer.posY);
+ String windS = windStrength < 1f ? StatCollector.translateToLocal("tooltip.windmeter.2.name")
+ : windStrength < 10f ? StatCollector.translateToLocal("tooltip.windmeter.3.name")
+ : windStrength < 20f ? StatCollector.translateToLocal("tooltip.windmeter.4.name")
+ : windStrength < 30f ? StatCollector.translateToLocal("tooltip.windmeter.5.name"