From 04c1248281f3c067e2ba4a979e7d363704b06663 Mon Sep 17 00:00:00 2001 From: Caedis Date: Mon, 23 Oct 2023 14:07:25 -0500 Subject: Backport paint solvent from GTCEu (#2346) --- src/main/java/gregtech/api/enums/ItemList.java | 4 ++ .../common/items/GT_MetaGenerated_Item_01.java | 56 ++++++++++++++++++--- .../items/behaviors/Behaviour_Spray_Color.java | 17 +++++-- .../behaviors/Behaviour_Spray_Color_Remover.java | 48 ++++++++++++++++++ .../postload/recipes/FluidCannerRecipes.java | 16 ++++++ .../gregtech/textures/items/gt.metaitem.01/465.png | Bin 0 -> 271 bytes .../gregtech/textures/items/gt.metaitem.01/466.png | Bin 0 -> 271 bytes .../gregtech/textures/items/gt.metaitem.01/467.png | Bin 0 -> 232 bytes 8 files changed, 131 insertions(+), 10 deletions(-) create mode 100644 src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color_Remover.java create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/465.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/466.png create mode 100644 src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/467.png (limited to 'src/main') diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index 1ed3057dcd..30eda5b677 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -737,6 +737,7 @@ public enum ItemList implements IItemContainer { Spray_Color_13, Spray_Color_14, Spray_Color_15, + Spray_Color_Remover, Spray_Color_Used_00, Spray_Color_Used_01, @@ -754,6 +755,9 @@ public enum ItemList implements IItemContainer { Spray_Color_Used_13, Spray_Color_Used_14, Spray_Color_Used_15, + Spray_Color_Used_Remover, + + Spray_Color_Remover_Empty, Armor_Cheat, Armor_Cloaking, diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index ff8d1c3e94..e1163f84eb 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -130,6 +130,7 @@ import gregtech.common.items.behaviors.Behaviour_Scanner; import gregtech.common.items.behaviors.Behaviour_SensorKit; import gregtech.common.items.behaviors.Behaviour_Sonictron; import gregtech.common.items.behaviors.Behaviour_Spray_Color; +import gregtech.common.items.behaviors.Behaviour_Spray_Color_Remover; import gregtech.common.items.behaviors.Behaviour_WrittenBook; public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { @@ -1194,6 +1195,53 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { addItemBehavior(32000 + tLastID, tBehaviour); addItemBehavior(32001 + tLastID, tBehaviour); } + + ItemList.Spray_Color_Remover.set( + addItem( + tLastID = 465, + "Spray Can Solvent", + "Full", + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 4L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERDITIO, 8L))); + ItemList.Spray_Color_Used_Remover.set( + addItem( + tLastID = 466, + "Spray Can Solvent", + "Used", + new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 3L), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERDITIO, 6L), + SubTag.INVISIBLE)); + IItemBehaviour tBehaviour = new Behaviour_Spray_Color_Remover( + ItemList.Spray_Empty.get(1L), + ItemList.Spray_Color_Used_Remover.get(1L), + ItemList.Spray_Color_Remover.get(1L), + 1024L); + addItemBehavior(32000 + 465, tBehaviour); + addItemBehavior(32000 + 466, tBehaviour); + + ItemList.Spray_Color_Remover_Empty.set( + addItem( + tLastID = 467, + "Empty Spray Can Solvent Cannister", + "Used for making Spray Can Solvent", + new ItemData( + Materials.Aluminium, + OrePrefixes.plateDouble.mMaterialAmount * 4L, + Materials.Redstone, + OrePrefixes.dust.mMaterialAmount), + new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 1L), + new TC_Aspects.TC_AspectStack(TC_Aspects.MOTUS, 1L))); + + GT_Values.RA.stdBuilder() + .itemInputs( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Redstone, 1L), + ItemList.Large_Fluid_Cell_Aluminium.get(1), + GT_Utility.getIntegratedCircuit(1)) + .itemOutputs(ItemList.Spray_Color_Remover_Empty.get(1L)) + .duration(40 * SECONDS) + .eut(1) + .addTo(sAssemblerRecipes); + ItemList.Tool_Matches.set( addItem( tLastID = 471, @@ -1217,11 +1265,7 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { new TC_Aspects.TC_AspectStack(TC_Aspects.IGNIS, 1L), new TC_Aspects.TC_AspectStack(TC_Aspects.POTENTIA, 2L))); - IItemBehaviour tBehaviour = new Behaviour_Lighter( - null, - ItemList.Tool_Matches.get(1L), - ItemList.Tool_Matches.get(1L), - 1L); + tBehaviour = new Behaviour_Lighter(null, ItemList.Tool_Matches.get(1L), ItemList.Tool_Matches.get(1L), 1L); addItemBehavior(32471, tBehaviour); tBehaviour = new Behaviour_Lighter( null, @@ -4570,7 +4614,7 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { @Override public ItemStack getContainerItem(ItemStack aStack) { int aDamage = aStack.getItemDamage(); - if ((aDamage >= 32430) && (aDamage <= 32461)) { + if (((aDamage >= 32430) && (aDamage <= 32461)) || (aDamage == 32465 || aDamage == 32466)) { return ItemList.Spray_Empty.get(1L); } if ((aDamage == 32479) || (aDamage == 32476)) { diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color.java index f7e7571c9e..11693b05d2 100644 --- a/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color.java +++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color.java @@ -40,18 +40,18 @@ public class Behaviour_Spray_Color extends Behaviour_None { Blocks.stained_glass_pane, Blocks.carpet, Blocks.hardened_clay); - private final String mTooltip; + protected String mTooltip; private final String mTooltipUses = GT_LanguageManager .addStringLocalization("gt.behaviour.paintspray.uses", "Remaining Uses:"); private final String mTooltipUnstackable = GT_LanguageManager .addStringLocalization("gt.behaviour.unstackable", "Not usable when stacked!"); private final String mTooltipChain = GT_LanguageManager.addStringLocalization( "gt.behaviour.paintspray.chain", - "If used while sneaking it will paint a chain of blocks"); + "If used while sneaking it will spray a chain of blocks"); private final String mTooltipChainAmount = GT_LanguageManager.addStringLocalization( "gt.behaviour.paintspray.chain", - "Paints up to %d blocks, in the direction you're looking at"); + "Sprays up to %d blocks, in the direction you're looking at"); public Behaviour_Spray_Color(ItemStack aEmpty, ItemStack aUsed, ItemStack aFull, long aUses, int aColor) { this.mEmpty = aEmpty; @@ -64,6 +64,15 @@ public class Behaviour_Spray_Color extends Behaviour_None { "Can Color things in " + Dyes.get(this.mColor).mName); } + public Behaviour_Spray_Color(ItemStack aEmpty, ItemStack aUsed, ItemStack aFull, long aUses) { + this.mEmpty = aEmpty; + this.mUsed = aUsed; + this.mFull = aFull; + this.mUses = aUses; + this.mColor = 0; + mTooltip = ""; + } + @Override public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, ForgeDirection side, float hitX, float hitY, float hitZ) { @@ -137,7 +146,7 @@ public class Behaviour_Spray_Color extends Behaviour_None { return rOutput; } - private boolean colorize(World aWorld, int aX, int aY, int aZ, ForgeDirection side, EntityPlayer player) { + protected boolean colorize(World aWorld, int aX, int aY, int aZ, ForgeDirection side, EntityPlayer player) { final Block aBlock = aWorld.getBlock(aX, aY, aZ); if (aBlock != Blocks.air) { if (this.mAllowedVanillaBlocks.contains(aBlock) || aBlock instanceof BlockColored) { diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color_Remover.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color_Remover.java new file mode 100644 index 0000000000..0b73b4f7fc --- /dev/null +++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Spray_Color_Remover.java @@ -0,0 +1,48 @@ +package gregtech.common.items.behaviors; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import appeng.api.implementations.tiles.IColorableTile; +import appeng.api.util.AEColor; +import appeng.block.networking.BlockCableBus; +import gregtech.api.interfaces.tileentity.IColoredTileEntity; +import gregtech.api.util.GT_LanguageManager; + +public class Behaviour_Spray_Color_Remover extends Behaviour_Spray_Color { + + public Behaviour_Spray_Color_Remover(ItemStack aEmpty, ItemStack aUsed, ItemStack aFull, long aUses) { + super(aEmpty, aUsed, aFull, aUses); + this.mTooltip = GT_LanguageManager + .addStringLocalization("gt.behaviour.paintspray.solvent.tooltip", "Can remove paint from things"); + } + + @Override + protected boolean colorize(World aWorld, int aX, int aY, int aZ, ForgeDirection side, EntityPlayer player) { + final Block aBlock = aWorld.getBlock(aX, aY, aZ); + if (aBlock != Blocks.air) { + if (aBlock instanceof IColorableTile) { + return ((IColorableTile) aBlock).recolourBlock(side, AEColor.Transparent, player); + } + + if (aBlock instanceof BlockCableBus) { + return ((BlockCableBus) aBlock) + .recolourBlock(aWorld, aX, aY, aZ, side, AEColor.Transparent.ordinal(), player); + } + + TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof IColoredTileEntity gte) { + if (gte.getColorization() >= 0) { + gte.setColorization((byte) -1); + return true; + } + } + } + return false; + } +} diff --git a/src/main/java/gregtech/loaders/postload/recipes/FluidCannerRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/FluidCannerRecipes.java index ce27eb4a0d..23acb5c772 100644 --- a/src/main/java/gregtech/loaders/postload/recipes/FluidCannerRecipes.java +++ b/src/main/java/gregtech/loaders/postload/recipes/FluidCannerRecipes.java @@ -73,5 +73,21 @@ public class FluidCannerRecipes implements Runnable { .duration(4) .eut(1) .addTo(sFluidCannerRecipes); + + GT_Values.RA.stdBuilder() + .itemInputs(ItemList.Spray_Color_Remover_Empty.get(1)) + .fluidInputs(Materials.Acetone.getFluid(4000)) + .itemOutputs(ItemList.Spray_Color_Remover.get(1)) + .duration(74) + .eut(1) + .addTo(sFluidCannerRecipes); + + GT_Values.RA.stdBuilder() + .itemInputs(ItemList.Spray_Color_Remover.get(1)) + .itemOutputs(ItemList.Spray_Color_Remover_Empty.get(1)) + .fluidOutputs(Materials.Acetone.getFluid(4000)) + .duration(74) + .eut(1) + .addTo(sFluidCannerRecipes); } } diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/465.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/465.png new file mode 100644 index 0000000000..36ed2bbb07 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/465.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/466.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/466.png new file mode 100644 index 0000000000..36ed2bbb07 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/466.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/467.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/467.png new file mode 100644 index 0000000000..5f7e634adf Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/467.png differ -- cgit