Skip to content

Commit 2b9d374

Browse files
committed
Bump min Neo version to 21.0.4-beta and account for breaking changes
1 parent 3d54df9 commit 2b9d374

File tree

8 files changed

+51
-49
lines changed

8 files changed

+51
-49
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ dependencies {
391391

392392
def crt = "com.blamejared.crafttweaker:CraftTweaker-neoforge-${minecraft_version}:${crafttweaker_version}"
393393
compileOnly(crt)
394-
localRuntime(crt)
394+
//TODO: Re-enable when it updates to neo changes
395+
//localRuntime(crt)
395396
def jeiTweaker = "com.blamejared.jeitweaker:JeiTweaker-forge-1.20.1:${jeitweaker_version}"
396397
compileOnly(jeiTweaker)
397398
//TODO: Re-enable when it updates

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ minecraft_version=1.21
99
previous_minecraft_version=1.20.4
1010
previous_minor_minecraft_version=1.20.6
1111
loader_version_range=[4,)
12-
forge_version=21.0.37-beta
12+
forge_version=21.0.40-beta
1313
mod_version=10.6.2
1414
#This determines the minimum version of forge required to use Mekanism
1515
# Only bump it whenever we need access to a feature in forge that is not available in earlier versions
16-
forge_version_range=[21.0.31-beta,)
16+
forge_version_range=[21.0.4-beta,)
1717
minecraft_version_range=[1.21]
1818
#This specifies what type of release it will be uploaded to CurseForge and Modrinth as
1919
# options are: alpha, beta, release

src/api/java/mekanism/api/gear/ICustomModule.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import net.minecraft.world.entity.player.Player;
1919
import net.minecraft.world.item.ItemStack;
2020
import net.minecraft.world.item.context.UseOnContext;
21-
import net.neoforged.neoforge.common.ToolAction;
21+
import net.neoforged.neoforge.common.ItemAbility;
2222
import net.neoforged.neoforge.event.ItemAttributeModifierEvent;
2323
import org.jetbrains.annotations.NotNull;
2424
import org.jetbrains.annotations.Nullable;
@@ -285,14 +285,14 @@ default InteractionResult onItemUse(IModule<MODULE> module, UseOnContext context
285285
}
286286

287287
/**
288-
* Called to check if this module allows the Meka-Tool to perform a specific {@link ToolAction}.
288+
* Called to check if this module allows the Meka-Tool to perform a specific {@link net.neoforged.neoforge.common.ItemAbility}.
289289
*
290290
* @param module Module instance.
291291
* @param moduleContainer The container this module is part of.
292292
* @param stack The stack this module is installed on.
293-
* @param action Tool action to check.
293+
* @param ability Item ability to check.
294294
*/
295-
default boolean canPerformAction(IModule<MODULE> module, IModuleContainer moduleContainer, ItemStack stack, ToolAction action) {
295+
default boolean canPerformAction(IModule<MODULE> module, IModuleContainer moduleContainer, ItemStack stack, ItemAbility ability) {
296296
return false;
297297
}
298298

src/main/java/mekanism/common/content/gear/mekatool/ModuleFarmingUnit.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import net.minecraft.sounds.SoundEvent;
3838
import net.minecraft.sounds.SoundEvents;
3939
import net.minecraft.sounds.SoundSource;
40+
import net.minecraft.tags.BlockTags;
4041
import net.minecraft.util.ByIdMap;
4142
import net.minecraft.util.StringRepresentable;
4243
import net.minecraft.world.InteractionResult;
@@ -52,9 +53,8 @@
5253
import net.minecraft.world.phys.AABB;
5354
import net.minecraft.world.phys.BlockHitResult;
5455
import net.minecraft.world.phys.Vec3;
55-
import net.neoforged.neoforge.common.IPlantable;
56-
import net.neoforged.neoforge.common.ToolAction;
57-
import net.neoforged.neoforge.common.ToolActions;
56+
import net.neoforged.neoforge.common.ItemAbilities;
57+
import net.neoforged.neoforge.common.ItemAbility;
5858
import net.neoforged.neoforge.common.util.Lazy;
5959
import org.jetbrains.annotations.NotNull;
6060
import org.jetbrains.annotations.Nullable;
@@ -91,9 +91,9 @@ public InteractionResult onItemUse(IModule<ModuleFarmingUnit> module, UseOnConte
9191
Lazy<BlockState> lazyClickedState = Lazy.of(() -> context.getLevel().getBlockState(context.getClickedPos()));
9292
return MekanismUtils.performActions(
9393
//First try to use the disassembler as an axe
94-
useAxeAOE(context, lazyClickedState, energyContainer, diameter, ToolActions.AXE_STRIP, SoundEvents.AXE_STRIP, -1),
95-
() -> useAxeAOE(context, lazyClickedState, energyContainer, diameter, ToolActions.AXE_SCRAPE, SoundEvents.AXE_SCRAPE, LevelEvent.PARTICLES_SCRAPE),
96-
() -> useAxeAOE(context, lazyClickedState, energyContainer, diameter, ToolActions.AXE_WAX_OFF, SoundEvents.AXE_WAX_OFF, LevelEvent.PARTICLES_WAX_OFF),
94+
useAxeAOE(context, lazyClickedState, energyContainer, diameter, ItemAbilities.AXE_STRIP, SoundEvents.AXE_STRIP, -1),
95+
() -> useAxeAOE(context, lazyClickedState, energyContainer, diameter, ItemAbilities.AXE_SCRAPE, SoundEvents.AXE_SCRAPE, LevelEvent.PARTICLES_SCRAPE),
96+
() -> useAxeAOE(context, lazyClickedState, energyContainer, diameter, ItemAbilities.AXE_WAX_OFF, SoundEvents.AXE_WAX_OFF, LevelEvent.PARTICLES_WAX_OFF),
9797
//Then as a shovel
9898
() -> flattenAOE(context, lazyClickedState, energyContainer, diameter),
9999
() -> dowseCampfire(context, lazyClickedState, energyContainer),
@@ -103,18 +103,18 @@ public InteractionResult onItemUse(IModule<ModuleFarmingUnit> module, UseOnConte
103103
}
104104

105105
@Override
106-
public boolean canPerformAction(IModule<ModuleFarmingUnit> module, IModuleContainer moduleContainer, ItemStack stack, ToolAction action) {
107-
if (action == ToolActions.AXE_STRIP || action == ToolActions.AXE_SCRAPE || action == ToolActions.AXE_WAX_OFF) {
106+
public boolean canPerformAction(IModule<ModuleFarmingUnit> module, IModuleContainer moduleContainer, ItemStack stack, ItemAbility action) {
107+
if (action == ItemAbilities.AXE_STRIP || action == ItemAbilities.AXE_SCRAPE || action == ItemAbilities.AXE_WAX_OFF) {
108108
return module.hasEnoughEnergy(stack, MekanismConfig.gear.mekaToolEnergyUsageAxe);
109-
} else if (action == ToolActions.SHOVEL_FLATTEN) {
109+
} else if (action == ItemAbilities.SHOVEL_FLATTEN) {
110110
return module.hasEnoughEnergy(stack, MekanismConfig.gear.mekaToolEnergyUsageShovel);
111-
} else if (action == ToolActions.HOE_TILL) {
111+
} else if (action == ItemAbilities.HOE_TILL) {
112112
return module.hasEnoughEnergy(stack, MekanismConfig.gear.mekaToolEnergyUsageHoe);
113113
}
114114
//Note: In general when we get here there will be no tool actions known unless mods add more default tool actions
115115
// This is because we special case the known vanilla types above and the dig variants are already handled by the Meka-Tool itself before
116116
// it even checks the installed modules
117-
return ToolActions.DEFAULT_AXE_ACTIONS.contains(action) || ToolActions.DEFAULT_SHOVEL_ACTIONS.contains(action) || ToolActions.DEFAULT_HOE_ACTIONS.contains(action);
117+
return ItemAbilities.DEFAULT_AXE_ACTIONS.contains(action) || ItemAbilities.DEFAULT_SHOVEL_ACTIONS.contains(action) || ItemAbilities.DEFAULT_HOE_ACTIONS.contains(action);
118118
}
119119

120120
@NothingNullByDefault
@@ -179,7 +179,7 @@ private InteractionResult dowseCampfire(UseOnContext context, Lazy<BlockState> l
179179
}
180180

181181
private InteractionResult tillAOE(UseOnContext context, Lazy<BlockState> lazyClickedState, IEnergyContainer energyContainer, int diameter) {
182-
return useAOE(context, lazyClickedState, energyContainer, diameter, ToolActions.HOE_TILL, SoundEvents.HOE_TILL, -1,
182+
return useAOE(context, lazyClickedState, energyContainer, diameter, ItemAbilities.HOE_TILL, SoundEvents.HOE_TILL, -1,
183183
MekanismConfig.gear.mekaToolEnergyUsageHoe.get(), new HoeToolAOEData());
184184
}
185185

@@ -189,17 +189,17 @@ private InteractionResult flattenAOE(UseOnContext context, Lazy<BlockState> lazy
189189
//Don't allow flattening a block from underneath
190190
return InteractionResult.PASS;
191191
}
192-
return useAOE(context, lazyClickedState, energyContainer, diameter, ToolActions.SHOVEL_FLATTEN, SoundEvents.SHOVEL_FLATTEN, -1,
192+
return useAOE(context, lazyClickedState, energyContainer, diameter, ItemAbilities.SHOVEL_FLATTEN, SoundEvents.SHOVEL_FLATTEN, -1,
193193
MekanismConfig.gear.mekaToolEnergyUsageShovel.get(), new ShovelToolAOEData());
194194
}
195195

196-
private InteractionResult useAxeAOE(UseOnContext context, Lazy<BlockState> lazyClickedState, IEnergyContainer energyContainer, int diameter, ToolAction action,
196+
private InteractionResult useAxeAOE(UseOnContext context, Lazy<BlockState> lazyClickedState, IEnergyContainer energyContainer, int diameter, ItemAbility action,
197197
SoundEvent sound, int particle) {
198198
return useAOE(context, lazyClickedState, energyContainer, diameter, action, sound, particle, MekanismConfig.gear.mekaToolEnergyUsageAxe.get(),
199199
new AxeToolAOEData());
200200
}
201201

202-
private InteractionResult useAOE(UseOnContext context, Lazy<BlockState> lazyClickedState, IEnergyContainer energyContainer, int diameter, ToolAction action,
202+
private InteractionResult useAOE(UseOnContext context, Lazy<BlockState> lazyClickedState, IEnergyContainer energyContainer, int diameter, ItemAbility action,
203203
SoundEvent sound, int particle, FloatingLong energyUsage, IToolAOEData toolAOEData) {
204204
FloatingLong energy = energyContainer.getEnergy();
205205
if (energy.smallerThan(energyUsage)) {
@@ -326,7 +326,8 @@ public boolean isValid(Level level, BlockPos pos, BlockState state) {
326326
}
327327
//Or it is a replaceable plant that is also not solid (such as tall grass)
328328
//Note: This may not be the most optimal way of checking this, but it gives a decent enough estimate of it
329-
if (aboveState.is(MekanismTags.Blocks.FARMING_OVERRIDE) || aboveState.canBeReplaced() && aboveState.getBlock() instanceof IPlantable) {
329+
//TODO - 1.21: Do we want to try and come up with a better tag or check for if it is a replaceable plant?
330+
if (aboveState.is(MekanismTags.Blocks.FARMING_OVERRIDE) || aboveState.canBeReplaced() && aboveState.is(BlockTags.REPLACEABLE_BY_TREES)) {
330331
return aboveState.getFluidState().isEmpty() && !aboveState.isSolidRender(level, abovePos);
331332
}
332333
return false;

src/main/java/mekanism/common/content/gear/mekatool/ModuleShearingUnit.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import net.minecraft.world.level.gameevent.GameEvent;
3838
import net.minecraft.world.phys.AABB;
3939
import net.neoforged.neoforge.common.IShearable;
40-
import net.neoforged.neoforge.common.ToolAction;
41-
import net.neoforged.neoforge.common.ToolActions;
40+
import net.neoforged.neoforge.common.ItemAbilities;
41+
import net.neoforged.neoforge.common.ItemAbility;
4242
import org.jetbrains.annotations.NotNull;
4343
import org.jetbrains.annotations.Nullable;
4444

@@ -50,8 +50,8 @@ public class ModuleShearingUnit implements ICustomModule<ModuleShearingUnit> {
5050
private static final Predicate<Entity> SHEARABLE = entity -> !entity.isSpectator() && entity instanceof IShearable;
5151

5252
@Override
53-
public boolean canPerformAction(IModule<ModuleShearingUnit> module, IModuleContainer container, ItemStack stack, ToolAction action) {
54-
if (action == ToolActions.SHEARS_DISARM) {
53+
public boolean canPerformAction(IModule<ModuleShearingUnit> module, IModuleContainer container, ItemStack stack, ItemAbility action) {
54+
if (action == ItemAbilities.SHEARS_DISARM) {
5555
if (stack.getItem() instanceof ItemMekaTool) {
5656
//Only require energy if we are installed on a Meka-Tool and can thus calculate the energy required to break the block "safely"
5757
// Note: We assume hardness is zero like the default is for tripwires as we don't have the target block in our current context
@@ -61,12 +61,12 @@ public boolean canPerformAction(IModule<ModuleShearingUnit> module, IModuleConta
6161
//Note: If for some reason we are installed on something that is not the Meka-Tool don't stop the action from being enabled
6262
// as it may not actually require energy
6363
return true;
64-
} else if (action == ToolActions.SHEARS_DIG) {
64+
} else if (action == ItemAbilities.SHEARS_DIG) {
6565
//Note: If for some reason we are installed on something that is not the Meka-Tool don't stop the action from being enabled
6666
// as it may not actually require energy
6767
return !(stack.getItem() instanceof ItemMekaTool) || ItemMekaTool.hasEnergyForDigAction(container, module.getEnergyContainer(stack));
6868
}
69-
return ToolActions.DEFAULT_SHEARS_ACTIONS.contains(action);
69+
return ItemAbilities.DEFAULT_SHEARS_ACTIONS.contains(action);
7070
}
7171

7272
@NotNull

src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070
import net.minecraft.world.level.Level;
7171
import net.minecraft.world.level.block.state.BlockState;
7272
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
73-
import net.neoforged.neoforge.common.ToolAction;
74-
import net.neoforged.neoforge.common.ToolActions;
73+
import net.neoforged.neoforge.common.ItemAbilities;
74+
import net.neoforged.neoforge.common.ItemAbility;
7575
import net.neoforged.neoforge.common.util.Lazy;
7676
import net.neoforged.neoforge.event.ItemAttributeModifierEvent;
7777
import net.neoforged.neoforge.registries.holdersets.AnyHolderSet;
@@ -80,8 +80,8 @@
8080
public class ItemAtomicDisassembler extends ItemEnergized implements IItemHUDProvider, IRadialModeItem<DisassemblerMode>, IHasConditionalAttributes {
8181

8282
//All basic dig actions except shears
83-
public static final Set<ToolAction> ALWAYS_SUPPORTED_ACTIONS = Set.of(ToolActions.AXE_DIG, ToolActions.HOE_DIG, ToolActions.SHOVEL_DIG, ToolActions.PICKAXE_DIG,
84-
ToolActions.SWORD_DIG);
83+
public static final Set<ItemAbility> ALWAYS_SUPPORTED_ACTIONS = Set.of(ItemAbilities.AXE_DIG, ItemAbilities.HOE_DIG, ItemAbilities.SHOVEL_DIG, ItemAbilities.PICKAXE_DIG,
84+
ItemAbilities.SWORD_DIG);
8585
private static final Lazy<RadialData<DisassemblerMode>> LAZY_RADIAL_DATA = Lazy.of(() ->
8686
IRadialDataHelper.INSTANCE.dataForEnum(Mekanism.rl("disassembler_mode"), DisassemblerMode.NORMAL));
8787

@@ -116,7 +116,7 @@ public void appendHoverText(@NotNull ItemStack stack, @NotNull Item.TooltipConte
116116
}
117117

118118
@Override
119-
public boolean canPerformAction(ItemStack stack, ToolAction action) {
119+
public boolean canPerformAction(ItemStack stack, ItemAbility action) {
120120
if (ALWAYS_SUPPORTED_ACTIONS.contains(action)) {
121121
IEnergyContainer energyContainer = StorageUtils.getEnergyContainer(stack, 0);
122122
if (energyContainer != null) {

src/main/java/mekanism/common/item/gear/ItemMekaTool.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@
7575
import net.minecraft.world.level.block.state.BlockState;
7676
import net.minecraft.world.phys.BlockHitResult;
7777
import net.minecraft.world.phys.HitResult;
78+
import net.neoforged.neoforge.common.ItemAbility;
7879
import net.neoforged.neoforge.common.NeoForge;
79-
import net.neoforged.neoforge.common.ToolAction;
8080
import net.neoforged.neoforge.event.ItemAttributeModifierEvent;
8181
import net.neoforged.neoforge.registries.holdersets.AnyHolderSet;
8282
import org.jetbrains.annotations.NotNull;
@@ -111,7 +111,7 @@ public void appendHoverText(@NotNull ItemStack stack, @NotNull Item.TooltipConte
111111
}
112112

113113
@Override
114-
public boolean canPerformAction(ItemStack stack, ToolAction action) {
114+
public boolean canPerformAction(ItemStack stack, ItemAbility action) {
115115
if (ItemAtomicDisassembler.ALWAYS_SUPPORTED_ACTIONS.contains(action)) {
116116
IModuleContainer container = moduleContainer(stack);
117117
return container != null && hasEnergyForDigAction(container, StorageUtils.getEnergyContainer(stack, 0));
@@ -127,7 +127,7 @@ public boolean canPerformAction(ItemStack stack, ToolAction action) {
127127
return false;
128128
}
129129

130-
private <MODULE extends ICustomModule<MODULE>> boolean canPerformAction(IModule<MODULE> module, IModuleContainer moduleContainer, ItemStack stack, ToolAction action) {
130+
private <MODULE extends ICustomModule<MODULE>> boolean canPerformAction(IModule<MODULE> module, IModuleContainer moduleContainer, ItemStack stack, ItemAbility action) {
131131
return module.getCustomInstance().canPerformAction(module, moduleContainer, stack, action);
132132
}
133133

src/tools/java/mekanism/tools/common/item/ItemMekanismPaxel.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,20 @@
3232
import net.minecraft.world.level.block.LevelEvent;
3333
import net.minecraft.world.level.block.state.BlockState;
3434
import net.minecraft.world.level.gameevent.GameEvent;
35-
import net.neoforged.neoforge.common.ToolAction;
36-
import net.neoforged.neoforge.common.ToolActions;
35+
import net.neoforged.neoforge.common.ItemAbilities;
36+
import net.neoforged.neoforge.common.ItemAbility;
3737
import org.jetbrains.annotations.NotNull;
3838
import org.jetbrains.annotations.Nullable;
3939

4040
@ParametersAreNonnullByDefault
4141
public class ItemMekanismPaxel extends DiggerItem {
4242

43-
private static final ToolAction PAXEL_DIG = ToolAction.get("paxel_dig");
44-
private static final Set<ToolAction> PAXEL_ACTIONS = Util.make(Collections.newSetFromMap(new IdentityHashMap<>()), actions -> {
43+
private static final ItemAbility PAXEL_DIG = ItemAbility.get("paxel_dig");
44+
private static final Set<ItemAbility> PAXEL_ACTIONS = Util.make(Collections.newSetFromMap(new IdentityHashMap<>()), actions -> {
4545
actions.add(PAXEL_DIG);
46-
actions.addAll(ToolActions.DEFAULT_PICKAXE_ACTIONS);
47-
actions.addAll(ToolActions.DEFAULT_SHOVEL_ACTIONS);
48-
actions.addAll(ToolActions.DEFAULT_AXE_ACTIONS);
46+
actions.addAll(ItemAbilities.DEFAULT_PICKAXE_ACTIONS);
47+
actions.addAll(ItemAbilities.DEFAULT_SHOVEL_ACTIONS);
48+
actions.addAll(ItemAbilities.DEFAULT_AXE_ACTIONS);
4949
});
5050

5151
private final IPaxelMaterial material;
@@ -69,7 +69,7 @@ public void appendHoverText(@NotNull ItemStack stack, @NotNull Item.TooltipConte
6969
}
7070

7171
@Override
72-
public boolean canPerformAction(ItemStack stack, ToolAction action) {
72+
public boolean canPerformAction(ItemStack stack, ItemAbility action) {
7373
return PAXEL_ACTIONS.contains(action);
7474
}
7575

@@ -91,7 +91,7 @@ public InteractionResult useOn(UseOnContext context) {
9191
if (context.getClickedFace() == Direction.DOWN) {
9292
return InteractionResult.PASS;
9393
}
94-
BlockState foundResult = blockstate.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false);
94+
BlockState foundResult = blockstate.getToolModifiedState(context, ItemAbilities.SHOVEL_FLATTEN, false);
9595
if (foundResult != null && world.isEmptyBlock(blockpos.above())) {
9696
//We can flatten the item as a shovel
9797
world.playSound(player, blockpos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F);
@@ -127,18 +127,18 @@ private BlockState useAsAxe(BlockState state, UseOnContext context) {
127127
Level world = context.getLevel();
128128
BlockPos pos = context.getClickedPos();
129129
Player player = context.getPlayer();
130-
BlockState resultToSet = state.getToolModifiedState(context, ToolActions.AXE_STRIP, false);
130+
BlockState resultToSet = state.getToolModifiedState(context, ItemAbilities.AXE_STRIP, false);
131131
if (resultToSet != null) {
132132
world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F);
133133
return resultToSet;
134134
}
135-
resultToSet = state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false);
135+
resultToSet = state.getToolModifiedState(context, ItemAbilities.AXE_SCRAPE, false);
136136
if (resultToSet != null) {
137137
world.playSound(player, pos, SoundEvents.AXE_SCRAPE, SoundSource.BLOCKS, 1.0F, 1.0F);
138138
world.levelEvent(player, LevelEvent.PARTICLES_SCRAPE, pos, 0);
139139
return resultToSet;
140140
}
141-
resultToSet = state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false);
141+
resultToSet = state.getToolModifiedState(context, ItemAbilities.AXE_WAX_OFF, false);
142142
if (resultToSet != null) {
143143
world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F);
144144
world.levelEvent(player, LevelEvent.PARTICLES_WAX_OFF, pos, 0);

0 commit comments

Comments
 (0)