Skip to content

Commit 2990773

Browse files
committed
Everything works!
1 parent 817e610 commit 2990773

19 files changed

+346
-84
lines changed

build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ java {
7070
// These can be tweaked, removed, or duplicated as needed.
7171
runs {
7272
// applies to all the run configs below
73-
configureEach {
73+
configureEach { net.neoforged.gradle.dsl.common.runs.run.Run run ->
7474
// Recommended logging data for a userdev environment
7575
// The markers can be added/remove as needed separated by commas.
7676
// "SCAN": For mods scan.
@@ -86,9 +86,9 @@ runs {
8686
modSource project.sourceSets.main
8787

8888
//if the selected toolchain is a JBR, enable DCEVM
89-
//if (run.project.javaToolchains.launcherFor(java.toolchain).map { it.metadata.vendor }.getOrElse("").contains("JetBrains")) {
90-
// run.jvmArgument("-XX:+AllowEnhancedClassRedefinition")
91-
//}
89+
if (run.project.javaToolchains.launcherFor(java.toolchain).map { it.metadata.vendor }.getOrElse("").contains("JetBrains")) {
90+
run.jvmArgument("-XX:+AllowEnhancedClassRedefinition")
91+
}
9292
}
9393

9494
client {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// 1.20.6 2024-05-11T13:25:30.0411425 Languages: en_us for mod: mininggadgets
2-
e818e2aea1f0fc0b2317b97b5679d8eebc239abb assets/mininggadgets/lang/en_us.json
1+
// 1.20.6 2024-05-11T13:50:02.2019011 Languages: en_us for mod: mininggadgets
2+
de5afda06eece1f64a4df1a2f3fd029bcc802b1b assets/mininggadgets/lang/en_us.json

src/generated/resources/assets/mininggadgets/lang/en_us.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"mininggadgets.tooltip.item.upgrades": "Current Upgrades:",
4444
"mininggadgets.tooltip.item.use_cost": "+%1$d FE per use",
4545
"mininggadgets.tooltip.screen.beam_preview": "Beam preview",
46-
"mininggadgets.tooltip.screen.blacklist": "Blacklist active",
46+
"mininggadgets.tooltip.screen.blacklist": "Destroy List",
4747
"mininggadgets.tooltip.screen.block_break_style": "Breaking Style",
4848
"mininggadgets.tooltip.screen.blue": "Blue",
4949
"mininggadgets.tooltip.screen.delay_explain": "Controls how often a freeze particle is spawned\nby default it is one particle every tick, to reduce\nthe amount of particles add more delay",
@@ -68,7 +68,7 @@
6868
"mininggadgets.tooltip.screen.visual_settings": "Visual Settings",
6969
"mininggadgets.tooltip.screen.visuals_menu": "Edit Visuals",
7070
"mininggadgets.tooltip.screen.volume": "Volume",
71-
"mininggadgets.tooltip.screen.whitelist": "Whitelist active",
71+
"mininggadgets.tooltip.screen.whitelist": "Keep List",
7272
"mininggadgets.tooltip.single.filters": "Filters",
7373
"mininggadgets.tooltip.single.insert": "Insert",
7474
"mininggadgets.upgrade.replacement": "Upgrade: ",

src/main/java/com/direwolf20/mininggadgets/client/MiningGadgetsJEI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.direwolf20.mininggadgets.client.screens.ModificationTableScreen;
44
import com.direwolf20.mininggadgets.common.MiningGadgets;
55
import com.direwolf20.mininggadgets.common.items.MiningGadget;
6-
import com.direwolf20.mininggadgets.common.util.MGDataComponents;
76
import com.direwolf20.mininggadgets.setup.Config;
7+
import com.direwolf20.mininggadgets.setup.MGDataComponents;
88
import com.direwolf20.mininggadgets.setup.Registration;
99
import mezz.jei.api.IModPlugin;
1010
import mezz.jei.api.JeiPlugin;

src/main/java/com/direwolf20/mininggadgets/common/capabilities/EnergyStorageItemstack.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.direwolf20.mininggadgets.common.capabilities;
22

3-
import com.direwolf20.mininggadgets.common.util.MGDataComponents;
3+
import com.direwolf20.mininggadgets.setup.MGDataComponents;
44
import net.minecraft.core.HolderLookup;
55
import net.minecraft.nbt.IntTag;
66
import net.minecraft.nbt.Tag;
@@ -11,7 +11,7 @@ public class EnergyStorageItemstack extends EnergyStorage {
1111
protected final ItemStack itemStack;
1212

1313
public EnergyStorageItemstack(int capacity, ItemStack itemStack) {
14-
super(capacity, capacity, capacity, 0);
14+
super(getMaxCapacity(itemStack, capacity), Integer.MAX_VALUE, Integer.MAX_VALUE);
1515
this.itemStack = itemStack;
1616
this.energy = itemStack.getOrDefault(MGDataComponents.FORGE_ENERGY, 0);
1717
}
@@ -21,6 +21,10 @@ public void setEnergy(int energy) {
2121
itemStack.set(MGDataComponents.FORGE_ENERGY, energy);
2222
}
2323

24+
private static int getMaxCapacity(ItemStack stack, int capacity) {
25+
return stack.getOrDefault(MGDataComponents.FORGE_ENERGY_MAX_ENERGY, capacity);
26+
}
27+
2428
public void updatedMaxEnergy(int max) {
2529
itemStack.set(MGDataComponents.FORGE_ENERGY_MAX_ENERGY, max);
2630
this.capacity = max;

src/main/java/com/direwolf20/mininggadgets/common/containers/FilterContainer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
package com.direwolf20.mininggadgets.common.containers;
22

3+
import com.direwolf20.mininggadgets.common.containers.handlers.DataComponentHandler;
34
import com.direwolf20.mininggadgets.common.items.MiningGadget;
45
import com.direwolf20.mininggadgets.common.items.UpgradeCard;
56
import com.direwolf20.mininggadgets.setup.Registration;
6-
import net.minecraft.network.FriendlyByteBuf;
7+
import net.minecraft.network.RegistryFriendlyByteBuf;
78
import net.minecraft.world.entity.player.Inventory;
89
import net.minecraft.world.entity.player.Player;
910
import net.minecraft.world.inventory.AbstractContainerMenu;
1011
import net.minecraft.world.inventory.ClickType;
1112
import net.minecraft.world.inventory.Slot;
1213
import net.minecraft.world.item.ItemStack;
1314
import net.neoforged.neoforge.items.IItemHandler;
14-
import net.neoforged.neoforge.items.ItemStackHandler;
1515
import net.neoforged.neoforge.items.SlotItemHandler;
1616
import net.neoforged.neoforge.items.wrapper.InvWrapper;
1717

1818

1919
public class FilterContainer extends AbstractContainerMenu {
20-
public FilterContainer(int windowId, Inventory playerInventory, FriendlyByteBuf extraData) {
21-
this(windowId, playerInventory, new ItemStackHandler(30));
20+
public FilterContainer(int windowId, Inventory playerInventory, RegistryFriendlyByteBuf extraData) {
21+
this(windowId, playerInventory, new DataComponentHandler(ItemStack.OPTIONAL_STREAM_CODEC.decode(extraData), 30));
2222

2323
}
2424

25-
public FilterContainer(int windowId, Inventory playerInventory, IItemHandler ghostInventory) {
25+
public FilterContainer(int windowId, Inventory playerInventory, DataComponentHandler ghostInventory) {
2626
super(Registration.FILTER_CONTAINER.get(), windowId);
2727
this.setup(new InvWrapper(playerInventory), ghostInventory);
2828
}

src/main/java/com/direwolf20/mininggadgets/common/containers/ModificationTableCommands.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ public static boolean insertButton(ModificationTableContainer container, ItemSta
3232
boolean hasFortune = UpgradeTools.containsUpgradeFromList(upgrades, Upgrade.FORTUNE_1);
3333
boolean hasSilk = UpgradeTools.containsUpgradeFromList(upgrades, Upgrade.SILK);
3434

35+
if (UpgradeTools.containsUpgrade(laser, card))
36+
return false;
37+
3538
// Did we just insert a Range upgrade?
3639
if (card.getBaseName().equals(Upgrade.RANGE_1.getBaseName())) {
3740
// Always reset the range regardless if it's bigger or smaller
@@ -45,9 +48,6 @@ public static boolean insertButton(ModificationTableContainer container, ItemSta
4548
MiningProperties.setMaxMiningRange(laser, UpgradeTools.getMaxMiningRange(card.getTier()));
4649
}
4750

48-
if (UpgradeTools.containsUpgrade(laser, card))
49-
return false;
50-
5151
if (hasFortune && card.getBaseName().equals(Upgrade.SILK.getBaseName()) || hasSilk && card.getBaseName().equals(Upgrade.FORTUNE_1.getBaseName()))
5252
((UpgradeCard) upgrade.getItem()).getUpgrade().setEnabled(false);
5353

src/main/java/com/direwolf20/mininggadgets/common/containers/ModificationTableHandler.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@
1010
public class ModificationTableHandler extends ItemStackHandler {
1111
ModificationTableTileEntity blockEntity;
1212

13-
public ModificationTableHandler(int size) {
14-
super(size);
15-
}
16-
1713
public ModificationTableHandler(int size, ModificationTableTileEntity blockEntity) {
1814
super(size);
1915
this.blockEntity = blockEntity;
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.direwolf20.mininggadgets.common.containers.handlers;
2+
3+
import com.direwolf20.mininggadgets.setup.MGDataComponents;
4+
import net.minecraft.core.NonNullList;
5+
import net.minecraft.world.item.ItemStack;
6+
import net.neoforged.neoforge.items.IItemHandlerModifiable;
7+
8+
public class DataComponentHandler implements IItemHandlerModifiable {
9+
private final ItemStack stack;
10+
private final int size;
11+
12+
public DataComponentHandler(ItemStack stack, int size) {
13+
this.stack = stack;
14+
this.size = size;
15+
}
16+
17+
@Override
18+
public int getSlots() {
19+
return size;
20+
}
21+
22+
@Override
23+
public ItemStack getStackInSlot(int slot) {
24+
validateSlotIndex(slot);
25+
if (getItemList().size() < slot + 1)
26+
return ItemStack.EMPTY;
27+
return getItemList().get(slot);
28+
}
29+
30+
@Override
31+
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
32+
if (stack.isEmpty())
33+
return ItemStack.EMPTY;
34+
35+
if (!isItemValid(slot, stack))
36+
return stack;
37+
38+
validateSlotIndex(slot);
39+
40+
NonNullList<ItemStack> itemStacks = getItemList();
41+
42+
ItemStack existing = itemStacks.get(slot);
43+
44+
int limit = Math.min(getSlotLimit(slot), stack.getMaxStackSize());
45+
46+
if (!existing.isEmpty()) {
47+
if (!ItemStack.isSameItemSameComponents(stack, existing))
48+
return stack;
49+
50+
limit -= existing.getCount();
51+
}
52+
53+
if (limit <= 0)
54+
return stack;
55+
56+
boolean reachedLimit = stack.getCount() > limit;
57+
58+
if (!simulate) {
59+
if (existing.isEmpty()) {
60+
itemStacks.set(slot, reachedLimit ? stack.copyWithCount(limit) : stack);
61+
} else {
62+
existing.grow(reachedLimit ? limit : stack.getCount());
63+
}
64+
setItemList(itemStacks);
65+
}
66+
67+
return reachedLimit ? stack.copyWithCount(stack.getCount() - limit) : ItemStack.EMPTY;
68+
}
69+
70+
@Override
71+
public ItemStack extractItem(int slot, int amount, boolean simulate) {
72+
NonNullList<ItemStack> itemStacks = getItemList();
73+
if (amount == 0)
74+
return ItemStack.EMPTY;
75+
76+
validateSlotIndex(slot);
77+
78+
ItemStack existing = itemStacks.get(slot);
79+
80+
if (existing.isEmpty())
81+
return ItemStack.EMPTY;
82+
83+
int toExtract = Math.min(amount, existing.getMaxStackSize());
84+
85+
if (existing.getCount() <= toExtract) {
86+
if (!simulate) {
87+
itemStacks.set(slot, ItemStack.EMPTY);
88+
setItemList(itemStacks);
89+
return existing;
90+
} else {
91+
return existing.copy();
92+
}
93+
} else {
94+
if (!simulate) {
95+
itemStacks.set(slot, existing.copyWithCount(existing.getCount() - toExtract));
96+
setItemList(itemStacks);
97+
}
98+
99+
return existing.copyWithCount(toExtract);
100+
}
101+
}
102+
103+
private void validateSlotIndex(int slot) {
104+
if (slot < 0 || slot >= getSlots())
105+
throw new RuntimeException("Slot " + slot + " not in valid range - [0," + getSlots() + ")");
106+
}
107+
108+
@Override
109+
public int getSlotLimit(int slot) {
110+
return 64;
111+
}
112+
113+
@Override
114+
public boolean isItemValid(int slot, ItemStack stack) {
115+
return stack.getItem().canFitInsideContainerItems();
116+
}
117+
118+
@Override
119+
public void setStackInSlot(int slot, ItemStack stack) {
120+
validateSlotIndex(slot);
121+
if (!stack.isEmpty() && !isItemValid(slot, stack))
122+
throw new RuntimeException("Invalid stack " + stack + " for slot " + slot + ")");
123+
NonNullList<ItemStack> itemStacks = getItemList();
124+
itemStacks.set(slot, stack);
125+
setItemList(itemStacks);
126+
}
127+
128+
private NonNullList<ItemStack> getItemList() {
129+
DireItemContainerContents contents = this.stack.getOrDefault(MGDataComponents.ITEMSTACK_HANDLER, DireItemContainerContents.fromItems(NonNullList.withSize(size, ItemStack.EMPTY)));
130+
NonNullList<ItemStack> list = NonNullList.withSize(size, ItemStack.EMPTY);
131+
contents.copyInto(list);
132+
return list;
133+
}
134+
135+
private void setItemList(NonNullList<ItemStack> itemStacks) {
136+
this.stack.set(MGDataComponents.ITEMSTACK_HANDLER, DireItemContainerContents.fromItems(itemStacks));
137+
}
138+
}

0 commit comments

Comments
 (0)