Skip to content

Commit b458724

Browse files
committed
Move toolbelt container to unique capability
1 parent 5eacd29 commit b458724

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

src/main/java/gregtech/api/capability/GregtechCapabilities.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import gregtech.api.GTValues;
44
import gregtech.api.capability.impl.EUToFEProvider;
5+
import gregtech.api.items.toolitem.ItemGTToolbelt;
56
import gregtech.api.util.GTUtility;
67
import gregtech.common.metatileentities.converter.ConverterTrait;
78

@@ -22,6 +23,9 @@ public class GregtechCapabilities {
2223
@CapabilityInject(IElectricItem.class)
2324
public static Capability<IElectricItem> CAPABILITY_ELECTRIC_ITEM = null;
2425

26+
@CapabilityInject(ItemGTToolbelt.ToolStackHandler.class)
27+
public static Capability<ItemGTToolbelt.ToolStackHandler> CAPABILITY_TOOLBELT_HANDLER = null;
28+
2529
@CapabilityInject(IMultiblockController.class)
2630
public static Capability<IMultiblockController> CAPABILITY_MULTIBLOCK_CONTROLLER = null;
2731

src/main/java/gregtech/api/capability/SimpleCapabilityManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import gregtech.api.capability.impl.AbstractRecipeLogic;
44
import gregtech.api.cover.CoverHolder;
5+
import gregtech.api.items.toolitem.ItemGTToolbelt;
56
import gregtech.api.metatileentity.multiblock.IMaintenance;
67
import gregtech.api.worldgen.generator.GTWorldGenCapability;
78
import gregtech.common.metatileentities.converter.ConverterTrait;
@@ -37,6 +38,7 @@ public void readNBT(Capability<T> capability, T instance, EnumFacing side, NBTBa
3738
public static void init() {
3839
registerCapabilityWithNoDefault(IEnergyContainer.class);
3940
registerCapabilityWithNoDefault(IElectricItem.class);
41+
registerCapabilityWithNoDefault(ItemGTToolbelt.ToolStackHandler.class);
4042
registerCapabilityWithNoDefault(IWorkable.class);
4143
registerCapabilityWithNoDefault(CoverHolder.class);
4244
registerCapabilityWithNoDefault(IControllable.class);

src/main/java/gregtech/api/items/toolitem/ItemGTToolbelt.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gregtech.api.items.toolitem;
22

33
import gregtech.api.GregTechAPI;
4+
import gregtech.api.capability.GregtechCapabilities;
45
import gregtech.api.items.IDyeableItem;
56
import gregtech.api.items.gui.ItemUIFactory;
67
import gregtech.api.items.toolitem.behavior.IToolBehavior;
@@ -420,8 +421,7 @@ public boolean supportsTool(ItemStack stack, ItemStack tool) {
420421
}
421422

422423
private ToolStackHandler getHandler(ItemStack stack) {
423-
// use the very rarely used sidedness of item capabilities to signal that we want to ignore passthrough
424-
IItemHandler handler = stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP);
424+
IItemHandler handler = stack.getCapability(GregtechCapabilities.CAPABILITY_TOOLBELT_HANDLER, null);
425425
if (handler instanceof ToolStackHandler h) return h;
426426
else return FALLBACK;
427427
}
@@ -569,6 +569,8 @@ public ToolbeltCapabilityProvider(ItemStack stack) {
569569

570570
@Override
571571
public boolean hasCapability(@NotNull Capability<?> capability, EnumFacing facing) {
572+
if (capability == GregtechCapabilities.CAPABILITY_TOOLBELT_HANDLER)
573+
return true;
572574
ItemStack selected = getHandler().getSelectedStack();
573575
if (!selected.isEmpty() && facing != EnumFacing.UP) {
574576
return selected.hasCapability(capability, facing);
@@ -577,12 +579,15 @@ public boolean hasCapability(@NotNull Capability<?> capability, EnumFacing facin
577579

578580
@Override
579581
public <T> T getCapability(@NotNull Capability<T> capability, EnumFacing facing) {
582+
if (capability == GregtechCapabilities.CAPABILITY_TOOLBELT_HANDLER)
583+
return GregtechCapabilities.CAPABILITY_TOOLBELT_HANDLER.cast(this.getHandler());
580584
ItemStack selected = getHandler().getSelectedStack();
581-
if (!selected.isEmpty() && facing != EnumFacing.UP) {
585+
if (!selected.isEmpty()) {
582586
return selected.getCapability(capability, facing);
583-
} else if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
587+
} else if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
588+
// if nothing is selected, expose the handler under the item handler capability
584589
return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(this.getHandler());
585-
else return null;
590+
} else return null;
586591
}
587592

588593
@Override
@@ -622,7 +627,7 @@ public void readNBTShareTag(ItemStack stack, NBTTagCompound nbt) {
622627

623628
protected static final ToolStackHandler FALLBACK = new ToolStackHandler(0);
624629

625-
protected static class ToolStackHandler extends ItemStackHandler {
630+
public static class ToolStackHandler extends ItemStackHandler {
626631

627632
private static final Set<String> EMPTY = ImmutableSet.of();
628633

0 commit comments

Comments
 (0)