aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/items
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/items')
-rw-r--r--src/main/java/gregtech/common/items/MetaGeneratedItem01.java5
-rw-r--r--src/main/java/gregtech/common/items/behaviors/BehaviourSprayColor.java74
-rw-r--r--src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorInfinite.java282
-rw-r--r--src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorRemover.java34
4 files changed, 265 insertions, 130 deletions
diff --git a/src/main/java/gregtech/common/items/MetaGeneratedItem01.java b/src/main/java/gregtech/common/items/MetaGeneratedItem01.java
index 9afdb22673..68eea152a6 100644
--- a/src/main/java/gregtech/common/items/MetaGeneratedItem01.java
+++ b/src/main/java/gregtech/common/items/MetaGeneratedItem01.java
@@ -3462,6 +3462,7 @@ public class MetaGeneratedItem01 extends MetaGeneratedItemX32 {
setAllFluidContainerStats();
setAllElectricStats();
registerTieredTooltips();
+ registerSubIcons();
craftingShapedRecipes();
craftingShapelessRecipes();
@@ -4634,6 +4635,10 @@ public class MetaGeneratedItem01 extends MetaGeneratedItemX32 {
setElectricStats(32000 + BatteryHull_UxV_Full.ID, 1677721600000L, GTValues.V[13], 13L, -3L, true);
}
+ private void registerSubIcons() {
+ setSubIcons(Spray_Color_Infinite.ID, 3);
+ }
+
private void registerTieredTooltips() {
registerTieredTooltip(ItemList.Battery_RE_ULV_Tantalum.get(1), ULV);
registerTieredTooltip(ItemList.Battery_SU_LV_SulfuricAcid.get(1), LV);
diff --git a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColor.java b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColor.java
index 8c655907f2..60b586335f 100644
--- a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColor.java
+++ b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColor.java
@@ -1,13 +1,9 @@
package gregtech.common.items.behaviors;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.List;
import net.minecraft.block.Block;
-import net.minecraft.block.BlockColored;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -16,13 +12,11 @@ import net.minecraft.util.Vec3;
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.enums.Dyes;
import gregtech.api.enums.SoundResource;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.MetaBaseItem;
+import gregtech.api.util.ColoredBlockContainer;
import gregtech.api.util.GTLanguageManager;
import gregtech.api.util.GTUtility;
import gregtech.common.config.Other;
@@ -34,13 +28,6 @@ public class BehaviourSprayColor extends BehaviourNone {
private final ItemStack mFull;
private final long mUses;
private final byte mColor;
- private final Collection<Block> mAllowedVanillaBlocks = Arrays.asList(
- Blocks.glass,
- Blocks.glass_pane,
- Blocks.stained_glass,
- Blocks.stained_glass_pane,
- Blocks.carpet,
- Blocks.hardened_clay);
protected String mTooltip;
private final String mTooltipUses = GTLanguageManager
.addStringLocalization("gt.behaviour.paintspray.uses", "Remaining Uses:");
@@ -75,6 +62,21 @@ public class BehaviourSprayColor extends BehaviourNone {
}
@Override
+ // Included for Ring of Loki support.
+ public boolean onItemUse(final MetaBaseItem aItem, final ItemStack aStack, final EntityPlayer aPlayer,
+ final World aWorld, final int aX, final int aY, final int aZ, final int ordinalSide, final float hitX,
+ final float hitY, final float hitZ) {
+ final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide);
+
+ if (ColoredBlockContainer.getInstance(aWorld, aX, aY, aZ, side, aPlayer)
+ .isValid()) {
+ return onItemUseFirst(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, side, hitX, hitY, hitZ);
+ }
+
+ return false;
+ }
+
+ @Override
public boolean onItemUseFirst(MetaBaseItem aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX,
int aY, int aZ, ForgeDirection side, float hitX, float hitY, float hitZ) {
if ((aWorld.isRemote) || (aStack.stackSize != 1)) {
@@ -130,8 +132,8 @@ public class BehaviourSprayColor extends BehaviourNone {
if (aWorld.getBlockMetadata(aX, aY, aZ) != initialBlockMeta) break;
/*
- * Check if the initial block had a TE and if the next one does, check if its the same kind.
- * else one does and the other doesnt, thus stop checking.
+ * Check if the initial block had a TE and if the next one does, check if it's the same kind.
+ * else one does and the other doesn't, thus stop checking.
*/
TileEntity targetTE = aWorld.getTileEntity(aX, aY, aZ);
if (initialTE == null ^ targetTE == null) break;
@@ -149,6 +151,13 @@ public class BehaviourSprayColor extends BehaviourNone {
return rOutput;
}
+ @Override
+ public boolean shouldInterruptBlockActivation(final EntityPlayer player, final TileEntity tileEntity,
+ final ForgeDirection side) {
+ return ColoredBlockContainer.getInstance(player, tileEntity, side)
+ .isValid();
+ }
+
protected long getUses(ItemStack aStack, NBTTagCompound tNBT) {
long tUses = tNBT.getLong("GT.RemainingPaint");
if (GTUtility.areStacksEqual(aStack, this.mFull, true)) {
@@ -180,37 +189,8 @@ public class BehaviourSprayColor extends BehaviourNone {
}
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) {
- if (aBlock == Blocks.hardened_clay) {
- aWorld.setBlock(aX, aY, aZ, Blocks.stained_hardened_clay, (~getColor()) & 0xF, 3);
- return true;
- }
- if (aBlock == Blocks.glass_pane) {
- aWorld.setBlock(aX, aY, aZ, Blocks.stained_glass_pane, (~getColor()) & 0xF, 3);
- return true;
- }
- if (aBlock == Blocks.glass) {
- aWorld.setBlock(aX, aY, aZ, Blocks.stained_glass, (~getColor()) & 0xF, 3);
- return true;
- }
- if (aWorld.getBlockMetadata(aX, aY, aZ) == ((~getColor()) & 0xF)) {
- return false;
- }
- aWorld.setBlockMetadataWithNotify(aX, aY, aZ, (~getColor()) & 0xF, 3);
- return true;
- }
-
- if (aBlock instanceof IColorableTile) {
- return ((IColorableTile) aBlock).recolourBlock(side, AEColor.values()[(~getColor()) & 0xF], player);
- }
-
- if (aBlock instanceof BlockCableBus) {
- return ((BlockCableBus) aBlock).recolourBlock(aWorld, aX, aY, aZ, side, (~getColor()) & 0xF, player);
- }
- }
- return aBlock.recolourBlock(aWorld, aX, aY, aZ, side, (~getColor()) & 0xF);
+ return ColoredBlockContainer.getInstance(aWorld, aX, aY, aZ, side, player)
+ .setColor(getColor());
}
protected byte getColor() {
diff --git a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorInfinite.java b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorInfinite.java
index 6f7d99fe3a..ad22dcb958 100644
--- a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorInfinite.java
+++ b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorInfinite.java
@@ -1,49 +1,71 @@
package gregtech.common.items.behaviors;
import static gregtech.api.enums.GTValues.AuthorQuerns;
+import static net.minecraft.util.MovingObjectPosition.MovingObjectType.BLOCK;
import java.util.List;
+import java.util.function.Consumer;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
+import com.google.common.collect.ImmutableList;
+import com.gtnewhorizon.gtnhlib.GTNHLib;
+import com.gtnewhorizons.modularui.api.UIInfos;
+import com.gtnewhorizons.modularui.api.widget.Widget;
+
import gregtech.api.enums.Dyes;
import gregtech.api.enums.GTValues;
+import gregtech.api.enums.ItemList;
import gregtech.api.items.MetaBaseItem;
import gregtech.api.net.GTPacketInfiniteSpraycan;
-import gregtech.api.util.GTLanguageManager;
+import gregtech.api.util.ColoredBlockContainer;
+import gregtech.api.util.GTUtility;
import gregtech.common.config.Other;
+import gregtech.common.gui.modularui.uifactory.SelectItemUIFactory;
public class BehaviourSprayColorInfinite extends BehaviourSprayColor {
private static final byte REMOVE_COLOR = (byte) Dyes.VALUES.length;
- private static final String COLOR_NBT_TAG = "current_color";
- private final String tooltipInfinite = GTLanguageManager
- .addStringLocalization("gt.behaviour.paintspray.infinite.tooltip", "Infinite uses");
- private final String tooltipSwitchHint = GTLanguageManager.addStringLocalization(
- "gt.behaviour.paintspray.infinite.hint.tooltip",
- "Left click to change color (sneak to reverse direction)");
+ private static final List<ItemStack> COLOR_SELECTIONS;
+ public static final String COLOR_NBT_TAG = "current_color";
+ public static final String LOCK_NBT_TAG = "is_locked";
+ public static final String SEPARATOR = "-----------------------------------------";
private byte mCurrentColor;
+ static {
+ final ImmutableList.Builder<ItemStack> builder = ImmutableList.builder();
+
+ for (int i = 0; i < 16; i++) {
+ builder.add(new ItemStack(Items.dye, 1, i));
+ }
+
+ builder.add(ItemList.Spray_Color_Remover.get(1));
+ COLOR_SELECTIONS = builder.build();
+ }
+
public BehaviourSprayColorInfinite(ItemStack sprayCan) {
super(sprayCan, sprayCan, sprayCan, Other.sprayCanChainRange, 0);
this.mTooltip = "";
mCurrentColor = 0;
}
+ // region Base Method Overrides
@Override
- protected long getUses(ItemStack aStack, NBTTagCompound tNBT) {
+ protected long getUses(ItemStack itemStack, NBTTagCompound tNBT) {
return Other.sprayCanChainRange;
}
@Override
- protected void setRemainingUses(ItemStack aStack, NBTTagCompound tNBT, long tUses) {
+ protected void setRemainingUses(ItemStack itemStack, NBTTagCompound tNBT, long tUses) {
// Infinite spray can; do nothing
}
@@ -56,87 +78,243 @@ public class BehaviourSprayColorInfinite extends BehaviourSprayColor {
}
@Override
- public boolean onItemUseFirst(MetaBaseItem aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX,
+ public boolean onItemUseFirst(MetaBaseItem aItem, ItemStack itemStack, EntityPlayer aPlayer, World aWorld, int aX,
int aY, int aZ, ForgeDirection side, float hitX, float hitY, float hitZ) {
- if ((aWorld.isRemote) || (aStack.stackSize != 1)) {
+ if ((aWorld.isRemote) || (itemStack.stackSize != 1)) {
return false;
}
- if (aStack.hasTagCompound()) {
- final NBTTagCompound tag = aStack.getTagCompound();
+ if (itemStack.hasTagCompound()) {
+ final NBTTagCompound tag = itemStack.getTagCompound();
if (tag.hasKey(COLOR_NBT_TAG)) {
mCurrentColor = tag.getByte(COLOR_NBT_TAG);
}
}
- return super.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, side, hitX, hitY, hitZ);
+ return super.onItemUseFirst(aItem, itemStack, aPlayer, aWorld, aX, aY, aZ, side, hitX, hitY, hitZ);
}
@Override
protected boolean colorize(World aWorld, int aX, int aY, int aZ, ForgeDirection side, EntityPlayer player) {
+ ColoredBlockContainer block = ColoredBlockContainer.getInstance(aWorld, aX, aY, aZ, side, player);
if (mCurrentColor == REMOVE_COLOR) {
- return BehaviourSprayColorRemover.removeColor(aWorld, aX, aY, aZ, side, player);
+ return block.removeColor();
+ }
+ return block.setColor(getColor());
+ }
+
+ @Override
+ public List<String> getAdditionalToolTips(final MetaBaseItem aItem, final List<String> aList,
+ final ItemStack itemStack) {
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.infinite"));
+ aList.add(mTooltipChain);
+ aList.add(SEPARATOR);
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.more_info"));
+ aList.add(SEPARATOR);
+ aList.add(AuthorQuerns);
+
+ return aList;
+ }
+
+ @Override
+ public List<String> getAdditionalToolTipsWhileSneaking(final MetaBaseItem aItem, final List<String> aList,
+ final ItemStack aStack) {
+ aList.add(SEPARATOR);
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.switch"));
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.gui"));
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.pick"));
+ aList.add(StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.tooltip.lock"));
+ aList.add(SEPARATOR);
+ aList.add(AuthorQuerns);
+
+ return aList;
+ }
+ // endregion
+
+ // region Raw Mouse Event Handlers
+ @Override
+ public boolean onLeftClick(MetaBaseItem item, ItemStack itemStack, EntityPlayer aPlayer) {
+ if (isLocked(itemStack)) {
+ displayLockedMessage();
+ } else {
+ sendPacket(GTPacketInfiniteSpraycan.Action.INCREMENT_COLOR);
}
- return super.colorize(aWorld, aX, aY, aZ, side, player);
+ return true;
}
- public boolean onLeftClick(MetaBaseItem item, ItemStack aStack, EntityPlayer aPlayer) {
- GTValues.NW.sendToServer(new GTPacketInfiniteSpraycan(aPlayer.isSneaking()));
+ @Override
+ public boolean onMiddleClick(final MetaBaseItem item, final ItemStack itemStack, final EntityPlayer player) {
+ if (player.isSneaking()) {
+ sendPacket(GTPacketInfiniteSpraycan.Action.LOCK_CAN);
+ } else if (isLocked(itemStack)) {
+ displayLockedMessage();
+ } else {
+ final MovingObjectPosition position = GTUtility.getPlayerLookingTarget(player);
+
+ if (position != null && position.typeOfHit == BLOCK) {
+ final ColoredBlockContainer block = ColoredBlockContainer.getInstance(player, position);
+ if (block.getColor()
+ .isPresent()) {
+ sendPacket(
+ GTPacketInfiniteSpraycan.Action.SET_COLOR,
+ block.getColor()
+ .get());
+ return true;
+ }
+ }
+
+ openGUI(player, itemStack);
+ }
return true;
}
+ // endregion
- private static byte clampColor(byte newColor) {
- if (newColor > REMOVE_COLOR) {
- newColor = 0;
- } else if (newColor < 0) {
- newColor = REMOVE_COLOR;
+ // region GUI
+ private void openGUI(final EntityPlayer player, final ItemStack itemStack) {
+ UIInfos.openClientUI(
+ player,
+ buildContext -> new DyeSelectGUI(
+ StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.gui.header"),
+ itemStack,
+ selectedStack -> sendPacket(
+ GTPacketInfiniteSpraycan.Action.SET_COLOR,
+ selectedStack.getItem() == Items.dye ? selectedStack.getItemDamage() : REMOVE_COLOR),
+ COLOR_SELECTIONS,
+ getColor(itemStack),
+ true).createWindow(buildContext));
+ }
+
+ private byte getColor(ItemStack sprayCan) {
+ if (sprayCan.hasTagCompound()) {
+ final NBTTagCompound tag = sprayCan.getTagCompound();
+ if (tag.hasKey(COLOR_NBT_TAG)) {
+ return tag.getByte(COLOR_NBT_TAG);
+ }
}
- return newColor;
+
+ return REMOVE_COLOR;
+ }
+
+ private static void displayLockedMessage() {
+ GTNHLib.proxy.printMessageAboveHotbar(
+ StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.gui.lock_error"),
+ 120,
+ true,
+ true);
}
+ // endregion
- public void setNewColor(final ItemStack aStack, final boolean wasSneaking) {
- final NBTTagCompound tag = aStack.hasTagCompound() ? aStack.getTagCompound() : new NBTTagCompound();
+ // region Networking
+ private static void sendPacket(GTPacketInfiniteSpraycan.Action action) {
+ GTValues.NW.sendToServer(new GTPacketInfiniteSpraycan(action));
+ }
+
+ private static void sendPacket(@SuppressWarnings("SameParameterValue") GTPacketInfiniteSpraycan.Action action,
+ int newColor) {
+ GTValues.NW.sendToServer(new GTPacketInfiniteSpraycan(action, newColor));
+ }
+ // endregion
+
+ // region Server Actions
+ public void incrementColor(final ItemStack itemStack, final boolean wasSneaking) {
+ if (isLocked(itemStack)) {
+ return;
+ }
+
+ final NBTTagCompound tag = itemStack.hasTagCompound() ? itemStack.getTagCompound() : new NBTTagCompound();
byte color = 0;
if (tag.hasKey(COLOR_NBT_TAG)) {
color = tag.getByte(COLOR_NBT_TAG);
}
- color = clampColor((byte) (color + (wasSneaking ? -1 : 1)));
+ byte newColor = (byte) (color + (wasSneaking ? -1 : 1));
+ if (newColor > REMOVE_COLOR) {
+ newColor = 0;
+ } else if (newColor < 0) {
+ newColor = REMOVE_COLOR;
+ }
+ color = newColor;
+
+ setColor(itemStack, color);
+ }
+
+ public void setColor(final ItemStack itemStack, final byte color) {
+ if (isLocked(itemStack)) {
+ return;
+ }
+
+ final NBTTagCompound tag = itemStack.hasTagCompound() ? itemStack.getTagCompound() : new NBTTagCompound();
tag.setByte(COLOR_NBT_TAG, color);
mCurrentColor = color;
- aStack.setTagCompound(tag);
+ itemStack.setTagCompound(tag);
+
+ setItemStackName(itemStack);
+ }
+
+ public boolean toggleLock(final ItemStack itemStack) {
+ final NBTTagCompound tag = itemStack.hasTagCompound() ? itemStack.getTagCompound() : new NBTTagCompound();
+ final boolean newLockStatus = !tag.getBoolean(LOCK_NBT_TAG);
+
+ tag.setBoolean(LOCK_NBT_TAG, newLockStatus);
+ itemStack.setTagCompound(tag);
+ setItemStackName(itemStack);
+
+ return newLockStatus;
+ }
+
+ private void setItemStackName(final ItemStack itemStack) {
+ final boolean isLocked = isLocked(itemStack);
+ final char lBracket = isLocked ? '[' : '(';
+ final char rBracket = isLocked ? ']' : ')';
if (mCurrentColor == REMOVE_COLOR) {
- aStack.setStackDisplayName("Infinite Spray Can (Solvent)");
+ itemStack.setStackDisplayName(String.format("Infinite Spray Can %cSolvent%c", lBracket, rBracket));
} else {
- aStack.setStackDisplayName("Infinite Spray Can (" + Dyes.get(mCurrentColor).mName + ")");
+ itemStack.setStackDisplayName(
+ String.format("Infinite Spray Can %c" + Dyes.get(mCurrentColor).mName + "%c", lBracket, rBracket));
}
}
+ // endregion
- @Override
- public List<String> getAdditionalToolTips(final MetaBaseItem aItem, final List<String> aList,
- final ItemStack aStack) {
- if (mCurrentColor == REMOVE_COLOR) {
- aList.add(
- GTLanguageManager.addStringLocalization(
- "gt.behavior.paintspray.infinite.remover.tooltip",
- "Current color: Solvent (clears color)"));
- } else {
- final Dyes currentDye = Dyes.get(mCurrentColor);
- final String diamondSymbol = " " + currentDye.formatting + "♦" + EnumChatFormatting.RESET + " ";
- aList.add(
- GTLanguageManager.addStringLocalization(
- "gt.behaviour.paintspray.infinite." + mCurrentColor + ".tooltip",
- "Current color:" + diamondSymbol + currentDye.mName + diamondSymbol));
- }
- aList.add(tooltipInfinite);
- aList.add(tooltipSwitchHint);
- aList.add(mTooltipChain);
- aList.add(AuthorQuerns);
+ public static Dyes getDye(ItemStack itemStack) {
+ if (itemStack.hasTagCompound()) {
+ final byte color = itemStack.getTagCompound()
+ .getByte(COLOR_NBT_TAG);
+ if (color != REMOVE_COLOR) {
+ return Dyes.getDyeFromIndex(color);
+ }
+ }
- return aList;
+ return Dyes.MACHINE_METAL;
+ }
+
+ public boolean isLocked(final ItemStack itemStack) {
+ return itemStack.hasTagCompound() && itemStack.getTagCompound()
+ .getBoolean(LOCK_NBT_TAG);
+ }
+
+ private static class DyeSelectGUI extends SelectItemUIFactory {
+
+ public DyeSelectGUI(final String header, final ItemStack headerItem, final Consumer<ItemStack> selectedCallback,
+ final List<ItemStack> stacks, final int selected, final boolean noDeselect) {
+ super(header, headerItem, selectedCallback, stacks, selected, noDeselect);
+ }
+
+ @Override
+ public void setSelected(final int selected, Widget widget) {
+ super.setSelected(selected, widget);
+ widget.getWindow()
+ .closeWindow();
+ }
+
+ @Override
+ protected List<String> getItemTooltips(final int index) {
+ return ImmutableList.of(
+ index == REMOVE_COLOR ? StatCollector.translateToLocal("gt.behaviour.paintspray.infinite.gui.solvent")
+ : Dyes.getDyeFromIndex((short) index).mName);
+ }
}
}
diff --git a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorRemover.java b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorRemover.java
index 1cf51f32fa..0a6d2095e1 100644
--- a/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorRemover.java
+++ b/src/main/java/gregtech/common/items/behaviors/BehaviourSprayColorRemover.java
@@ -1,17 +1,11 @@
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.ColoredBlockContainer;
import gregtech.api.util.GTLanguageManager;
public class BehaviourSprayColorRemover extends BehaviourSprayColor {
@@ -24,29 +18,7 @@ public class BehaviourSprayColorRemover extends BehaviourSprayColor {
@Override
protected boolean colorize(World aWorld, int aX, int aY, int aZ, ForgeDirection side, EntityPlayer player) {
- return removeColor(aWorld, aX, aY, aZ, side, player);
- }
-
- public static boolean removeColor(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;
+ return ColoredBlockContainer.getInstance(aWorld, aX, aY, aZ, side, player)
+ .removeColor();
}
}