diff options
| author | NotAPenguin <michiel.vandeginste@gmail.com> | 2024-09-02 23:17:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-02 23:17:17 +0200 |
| commit | 1b820de08a05070909a267e17f033fcf58ac8710 (patch) | |
| tree | 02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/bartworks/common/items | |
| parent | afd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff) | |
| download | GT5-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')
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" |
