Skip to content

Commit fcdb776

Browse files
committed
Add precision breaking functionality on right click (still crashes)
1 parent 8245ca4 commit fcdb776

File tree

2 files changed

+44
-7
lines changed

2 files changed

+44
-7
lines changed

src/main/java/net/neganote/monilabs/common/item/MoniItems.java

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

33

44
import com.gregtechceu.gtceu.api.GTValues;
5-
import com.gregtechceu.gtceu.api.data.tag.TagUtil;
65
import com.gregtechceu.gtceu.api.item.ComponentItem;
76
import com.gregtechceu.gtceu.api.item.component.ElectricStats;
8-
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
9-
import com.gregtechceu.gtceu.common.data.GTSoundEntries;
107
import com.tterrag.registrate.util.entry.ItemEntry;
11-
import net.minecraft.world.level.block.state.BlockBehaviour;
128
import net.neganote.monilabs.MoniLabsMod;
139

1410
import static com.gregtechceu.gtceu.common.data.GTItems.attach;
@@ -19,10 +15,11 @@ public class MoniItems {
1915
REGISTRATE.creativeModeTab(() -> MoniLabsMod.MONI_CREATIVE_TAB);
2016
}
2117

22-
public static ItemEntry<ComponentItem> OMNITOOL = REGISTRATE.item("Multitool", ComponentItem::create)
23-
.lang("Multitool")
18+
@SuppressWarnings("unused")
19+
public static ItemEntry<ComponentItem> OMNITOOL = REGISTRATE.item("omnitool", ComponentItem::create)
20+
.lang("Omnitool")
2421
.properties(p -> p.stacksTo(1).durability(0))
25-
.onRegister(attach(ElectricStats.createElectricItem(25_600_000L, GTValues.IV)))
22+
.onRegister(attach(ElectricStats.createElectricItem(25_600_000L, GTValues.IV), new PrecisionBreakBehavior()))
2623
.register();
2724

2825
public static void init() {}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package net.neganote.monilabs.common.item;
2+
3+
import com.gregtechceu.gtceu.api.GTValues;
4+
import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper;
5+
import com.gregtechceu.gtceu.api.item.component.IInteractionItem;
6+
import net.minecraft.core.BlockPos;
7+
import net.minecraft.world.InteractionResult;
8+
import net.minecraft.world.item.context.UseOnContext;
9+
import net.minecraft.world.level.Level;
10+
import net.minecraft.world.level.block.state.BlockState;
11+
12+
public class PrecisionBreakBehavior implements IInteractionItem {
13+
public PrecisionBreakBehavior() {
14+
}
15+
16+
@Override
17+
public InteractionResult useOn(UseOnContext context) {
18+
Level level = context.getLevel();
19+
if (!level.isClientSide()) {
20+
BlockPos pos = context.getClickedPos();
21+
BlockState blockState = level.getBlockState(pos);
22+
if (!blockState.canHarvestBlock(level, pos, context.getPlayer())) {
23+
return InteractionResult.PASS;
24+
}
25+
26+
var electricItem = GTCapabilityHelper.getElectricItem(context.getItemInHand());
27+
28+
if (electricItem != null) {
29+
if (electricItem.discharge(8192L, GTValues.IV, true, false, true) == 8192L) {
30+
electricItem.discharge(8192L, GTValues.IV, true, false, false);
31+
} else {
32+
return InteractionResult.PASS;
33+
}
34+
}
35+
36+
level.destroyBlock(pos, true);
37+
}
38+
return InteractionResult.SUCCESS;
39+
}
40+
}

0 commit comments

Comments
 (0)