diff --git a/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java b/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java index 4a491d86..182d86cc 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java +++ b/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java @@ -22,6 +22,7 @@ import com.gtnewhorizon.structurelib.command.CommandConfigureChannels; import com.gtnewhorizon.structurelib.command.CommandRegistryDebug; import com.gtnewhorizon.structurelib.item.ItemBlockHint; import com.gtnewhorizon.structurelib.item.ItemConstructableTrigger; +import com.gtnewhorizon.structurelib.item.ItemDebugConstructableTrigger; import com.gtnewhorizon.structurelib.item.ItemFrontRotationTool; import com.gtnewhorizon.structurelib.net.AlignmentMessage; import com.gtnewhorizon.structurelib.net.ErrorHintParticleMessage; @@ -99,6 +100,7 @@ public class StructureLib { static Item itemBlockHint; static Item itemFrontRotationTool; static Item itemConstructableTrigger; + static Item itemDebugConstructableTrigger; public static final CreativeTabs creativeTab = new CreativeTabs("structurelib") { @Override @@ -119,6 +121,9 @@ public class StructureLib { GameRegistry.registerItem( itemConstructableTrigger = new ItemConstructableTrigger(), itemConstructableTrigger.getUnlocalizedName()); + GameRegistry.registerItem( + itemDebugConstructableTrigger = new ItemDebugConstructableTrigger(), + itemDebugConstructableTrigger.getUnlocalizedName()); proxy.preInit(e); NetworkRegistry.INSTANCE.registerGuiHandler(instance(), new GuiHandler()); diff --git a/src/main/java/com/gtnewhorizon/structurelib/alignment/constructable/ConstructableUtility.java b/src/main/java/com/gtnewhorizon/structurelib/alignment/constructable/ConstructableUtility.java index 9b42ad71..291ad1dd 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/alignment/constructable/ConstructableUtility.java +++ b/src/main/java/com/gtnewhorizon/structurelib/alignment/constructable/ConstructableUtility.java @@ -16,6 +16,7 @@ import com.gtnewhorizon.structurelib.StructureLib; import com.gtnewhorizon.structurelib.StructureLibAPI; import com.gtnewhorizon.structurelib.alignment.IAlignment; import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing; +import com.gtnewhorizon.structurelib.item.ItemDebugConstructableTrigger; import com.gtnewhorizon.structurelib.structure.IItemSource; import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; @@ -73,7 +74,7 @@ public class ConstructableUtility { if (aPlayer instanceof EntityPlayerMP playerMP) { // server side and sneaking (already checked above) // do construct - if (aPlayer.capabilities.isCreativeMode) { + if (aPlayer.capabilities.isCreativeMode || aStack.getItem() instanceof ItemDebugConstructableTrigger) { constructable.construct(aStack, false); } else if (constructable instanceof ISurvivalConstructable) { int built = ((ISurvivalConstructable) constructable).survivalConstruct( diff --git a/src/main/java/com/gtnewhorizon/structurelib/item/ItemDebugConstructableTrigger.java b/src/main/java/com/gtnewhorizon/structurelib/item/ItemDebugConstructableTrigger.java new file mode 100644 index 00000000..6bad5eea --- /dev/null +++ b/src/main/java/com/gtnewhorizon/structurelib/item/ItemDebugConstructableTrigger.java @@ -0,0 +1,14 @@ +package com.gtnewhorizon.structurelib.item; + +import static com.gtnewhorizon.structurelib.StructureLibAPI.MOD_ID; + +/** + * Hologram projector that always performs a creative build, whatever the player's game mode. + */ +public class ItemDebugConstructableTrigger extends ItemConstructableTrigger { + + public ItemDebugConstructableTrigger() { + setUnlocalizedName("structurelib.debugConstructableTrigger"); + setTextureName(MOD_ID + ":itemDebugConstructableTrigger"); + } +} diff --git a/src/main/resources/assets/structurelib/lang/en_US.lang b/src/main/resources/assets/structurelib/lang/en_US.lang index 8a733238..ce143ea6 100644 --- a/src/main/resources/assets/structurelib/lang/en_US.lang +++ b/src/main/resources/assets/structurelib/lang/en_US.lang @@ -41,6 +41,8 @@ item.structurelib.constructableTrigger.gui.wipe.confirm=§4Sure? item.structurelib.constructableTrigger.gui.channels.from=§rMod: §9§o%s item.structurelib.constructableTrigger.gui.info=Many multiblocks support some degree of variation in their structure and a sub channel allows indication of which variant to use.\n All sub channels have a sequence of lowercase characters as key and a positive integer as value. Most known sub channels should be available as typeahead completions.\n You can also drag and drop items from NEI to set the corresponding sub channel value. These items all have a tooltip of "§oIndicates§r §ovalue§r §oX§r §ofor§r §osub§r §ochannel§r §oY§r". +item.structurelib.debugConstructableTrigger.name=Debug Multiblock Structure Hologram Projector + channels.structurelib.show_errors=When set, will highlight parts of the multiblock that is definitely wrong structurelib.tooltip.channelvalue=§7Value §b%d§r§7 for subchannel §b%s diff --git a/src/main/resources/assets/structurelib/textures/items/itemDebugConstructableTrigger.png b/src/main/resources/assets/structurelib/textures/items/itemDebugConstructableTrigger.png new file mode 100644 index 00000000..d29c8427 Binary files /dev/null and b/src/main/resources/assets/structurelib/textures/items/itemDebugConstructableTrigger.png differ