Skip to content

Commit 558f9e2

Browse files
committed
Update deps and address breaking changes in Neo
1 parent 7154c30 commit 558f9e2

File tree

7 files changed

+56
-81
lines changed

7 files changed

+56
-81
lines changed

build.gradle

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import java.util.function.Consumer
1212

1313
plugins {
1414
id 'org.ajoberstar.grgit.service' version '5.2.2'
15-
id 'net.darkhax.curseforgegradle' version '1.1.23'
15+
id 'net.darkhax.curseforgegradle' version '1.1.24'
1616
id "com.modrinth.minotaur" version "2.+"
1717
id 'java'
1818
id 'eclipse'
1919
id 'idea'
2020
id 'maven-publish'
21-
id 'net.neoforged.gradle.userdev' version '7.0.133'//https://projects.neoforged.net/neoforged/neogradle
21+
id 'net.neoforged.gradle.userdev' version '7.0.134'//https://projects.neoforged.net/neoforged/neogradle
2222
}
2323

2424
tasks.named('wrapper', Wrapper).configure {
@@ -438,7 +438,7 @@ dependencies {
438438

439439
compileOnly("dev.emi:emi-neoforge:${emi_version}+${minecraft_version}:api")
440440
def emi = "dev.emi:emi-neoforge:${emi_version}+${minecraft_version}"
441-
//TODO - 1.20.5: Re-evaluate
441+
//TODO - 1.20.5: Re-evaluate (https://github.com/emilyploszaj/emi/issues/537) might allow us to not have to do this
442442
//Compile against full emi in datagen
443443
datagenMainCompileOnly(emi)
444444
if (recipe_viewer == "emi" || recipe_viewer == "hybrid") {
@@ -460,15 +460,13 @@ dependencies {
460460
transitive = false
461461
}*/
462462
compileOnly("curse.maven:jade-api-324717:${jade_api_id}")
463-
//TODO - 1.20.5: Re-enable when Jade updates
464-
//localRuntime("curse.maven:jade-324717:${jade_id}")
463+
localRuntime("curse.maven:jade-324717:${jade_id}")
465464
compileOnly("mcp.mobius.waila:wthit-api:neo-${wthit_version}")
466465

467466
def crt = "com.blamejared.crafttweaker:CraftTweaker-neoforge-${previous_minor_minecraft_version}:${crafttweaker_version}"
468467
compileOnly(crt)
469468
//TODO - 1.20.5: Re-enable when it updates
470469
//localRuntime(crt)
471-
//TODO - 1.20.2: move back to implementation
472470
def jeiTweaker = "com.blamejared.jeitweaker:JeiTweaker-forge-${previous_minecraft_version}:${jeitweaker_version}"
473471
compileOnly(jeiTweaker)
474472
//TODO - 1.20.5: Re-enable when it updates

gradle.properties

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ minecraft_version=1.20.6
77
#Used as a helper for porting when deps we use have not updated yet
88
previous_minecraft_version=1.20.1
99
previous_minor_minecraft_version=1.20.4
10-
loader_version_range=[2,)
11-
forge_version=20.6.72-beta
10+
loader_version_range=[3,)
11+
forge_version=20.6.78-beta
1212
mod_version=10.5.20
1313
#This determines the minimum version of forge required to use Mekanism
1414
# Only bump it whenever we need access to a feature in forge that is not available in earlier versions
15-
forge_version_range=[20.6.72-beta,)
15+
forge_version_range=[20.6.78-beta,)
1616
minecraft_version_range=[1.20.6]
1717
#This specifies what type of release it will be uploaded to CurseForge and Modrinth as
1818
# options are: alpha, beta, release
@@ -35,12 +35,12 @@ yamlops_version=1.2.0
3535

3636
#Mod dependencies
3737
cc_tweaked_version=1.110.3
38-
curios_version=8.0.0-beta+1.20.6
38+
curios_version=8.0.0-beta.3+1.20.6
3939
emi_version=1.1.6
4040
jade_api_id=5288706
41-
jade_id=5288504
41+
jade_id=5366595
4242
top_version=1.20.5_neo-11.1.1-2
43-
wthit_version=11.1.3
43+
wthit_version=11.1.6
4444

4545
#Mod dependency min version ranges
4646

@@ -49,13 +49,13 @@ wthit_version=11.1.3
4949

5050

5151
#Mod dependencies for recipes (only used by our data generators)
52-
ae2_version=18.1.1-alpha
53-
biomesoplenty_version=18.4.0.2
54-
glitchcore_version=1.1.0.5
55-
terrablender_version=3.5.0.3
52+
ae2_version=18.1.2-alpha
53+
biomesoplenty_version=18.4.0.5
54+
glitchcore_version=1.1.0.10
55+
terrablender_version=3.5.0.4
5656

5757
#Outdated mod dependencies
58-
crafttweaker_version=17.0.3
58+
crafttweaker_version=17.0.17
5959

6060
ctm_version=1.1.7+11
6161
flux_networks_id=5234697
@@ -65,7 +65,7 @@ json_things_version=0.10.0
6565
oc2_id=3896581
6666
projecte_api_id=4860862
6767
recipe_stages_version=8.0.0.1
68-
wildfire_gender_mod_id=4603538
68+
wildfire_gender_mod_id=5357649
6969

7070
#Outdated mod dependencies for recipes
7171
farmers_delight_id=5051242

src/main/java/mekanism/common/CommonPlayerTracker.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import net.minecraft.world.entity.player.Player;
2020
import net.minecraft.world.item.ItemStack;
2121
import net.minecraft.world.level.block.Block;
22-
import net.neoforged.bus.api.Event;
2322
import net.neoforged.bus.api.SubscribeEvent;
2423
import net.neoforged.neoforge.common.NeoForge;
24+
import net.neoforged.neoforge.common.util.TriState;
2525
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
2626
import net.neoforged.neoforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent;
2727
import net.neoforged.neoforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent;
@@ -87,11 +87,11 @@ public void rightClickEvent(RightClickBlock event) {
8787
//it's a wrench, see if it's our block. Not the configurator, as it handles bypass correctly
8888
Block block = event.getLevel().getBlockState(event.getPos()).getBlock();
8989
if (block instanceof BlockMekanism || block instanceof BlockBounding) {
90-
event.setUseBlock(Event.Result.ALLOW);//force it to use the item on the block
90+
event.setUseBlock(TriState.TRUE);//force it to use the item on the block
9191
}
9292
} else if (event.getEntity().isShiftKeyDown() && event.getLevel().getBlockState(event.getPos()).getBlock() instanceof BlockCardboardBox) {
93-
event.setUseBlock(Event.Result.ALLOW);
94-
event.setUseItem(Event.Result.DENY);
93+
event.setUseBlock(TriState.TRUE);
94+
event.setUseItem(TriState.FALSE);
9595
}
9696
}
9797
}

src/main/java/mekanism/common/entity/EntityFlame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ private boolean tryPlace(@Nullable Entity shooter, BlockPos pos, Direction hitSi
188188
level().setBlockAndUpdate(pos, newState);
189189
if (EventHooks.onBlockPlace(shooter, blockSnapshot, hitSide)) {
190190
level().restoringBlockSnapshots = true;
191-
blockSnapshot.restore(true, false);
191+
blockSnapshot.restore(blockSnapshot.getFlags() | Block.UPDATE_CLIENTS);
192192
level().restoringBlockSnapshots = false;
193193
return false;
194194
}

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

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -164,37 +164,26 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state
164164
}
165165

166166
@Override
167-
public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level world, @NotNull BlockState state, @NotNull BlockPos pos, @NotNull LivingEntity entityliving) {
167+
public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level world, @NotNull BlockState state, @NotNull BlockPos pos, @NotNull LivingEntity entity) {
168168
IEnergyContainer energyContainer = StorageUtils.getEnergyContainer(stack, 0);
169169
if (energyContainer != null) {
170-
energyContainer.extract(getDestroyEnergy(stack, state.getDestroySpeed(world, pos)), Action.EXECUTE, AutomationType.MANUAL);
171-
}
172-
return true;
173-
}
174-
175-
@Override
176-
public boolean onBlockStartBreak(ItemStack stack, BlockPos pos, Player player) {
177-
if (player.level().isClientSide || player.isCreative()) {
178-
return super.onBlockStartBreak(stack, pos, player);
179-
}
180-
IEnergyContainer energyContainer = StorageUtils.getEnergyContainer(stack, 0);
181-
if (energyContainer != null && getMode(stack) == DisassemblerMode.VEIN) {
182-
Level world = player.level();
183-
BlockState state = world.getBlockState(pos);
184170
FloatingLong baseDestroyEnergy = getDestroyEnergy(stack);
185171
FloatingLong energyRequired = getDestroyEnergy(baseDestroyEnergy, state.getDestroySpeed(world, pos));
186-
if (energyContainer.extract(energyRequired, Action.SIMULATE, AutomationType.MANUAL).greaterOrEqual(energyRequired)) {
172+
energyContainer.extract(energyRequired, Action.EXECUTE, AutomationType.MANUAL);
173+
//Vein mining handling
174+
if (!world.isClientSide && entity instanceof ServerPlayer player && !player.isCreative() && getMode(stack) == DisassemblerMode.VEIN &&
175+
energyContainer.extract(energyRequired, Action.SIMULATE, AutomationType.MANUAL).greaterOrEqual(energyRequired)) {
187176
// Only allow mining things that are considered an ore
188177
if (ModuleVeinMiningUnit.canVeinBlock(state) && state.is(MekanismTags.Blocks.ATOMIC_DISASSEMBLER_ORE)) {
189178
Object2IntMap<BlockPos> found = ModuleVeinMiningUnit.findPositions(world, Map.of(pos, state), 0,
190179
Reference2BooleanMaps.singleton(state.getBlock(), true));
191-
MekanismUtils.veinMineArea(energyContainer, energyRequired, FloatingLong.ZERO, baseDestroyEnergy, world, pos, (ServerPlayer) player, stack,
192-
this, found, (base, hardness) -> FloatingLong.ZERO,
180+
MekanismUtils.veinMineArea(energyContainer, energyRequired, FloatingLong.ZERO, baseDestroyEnergy, world, pos, player, stack, this, found,
181+
(base, hardness) -> FloatingLong.ZERO,
193182
(base, hardness, distance, bs) -> getDestroyEnergy(base, hardness).multiply(0.5 * Math.pow(distance, 1.5)));
194183
}
195184
}
196185
}
197-
return super.onBlockStartBreak(stack, pos, player);
186+
return true;
198187
}
199188

200189
private FloatingLong getDestroyEnergy(ItemStack itemStack, float hardness) {

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

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ public class ItemMekaTool extends ItemEnergized implements IRadialModuleContaine
9393

9494
public ItemMekaTool(Properties properties) {
9595
super(IModuleHelper.INSTANCE.applyModuleContainerProperties(properties.rarity(Rarity.EPIC).setNoRepair()
96-
.component(DataComponents.TOOL, new Tool(List.of(
97-
Tool.Rule.deniesDrops(MekanismTags.Blocks.INCORRECT_FOR_MEKA_TOOL),
98-
new Tool.Rule(new AnyHolderSet<>(BuiltInRegistries.BLOCK.asLookup()), Optional.empty(), Optional.of(true))
99-
), 1, 0))
96+
.component(DataComponents.TOOL, new Tool(List.of(
97+
Tool.Rule.deniesDrops(MekanismTags.Blocks.INCORRECT_FOR_MEKA_TOOL),
98+
new Tool.Rule(new AnyHolderSet<>(BuiltInRegistries.BLOCK.asLookup()), Optional.empty(), Optional.of(true))
99+
), 1, 0))
100100
));
101101
}
102102

@@ -249,11 +249,31 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state
249249
}
250250

251251
@Override
252-
public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level world, @NotNull BlockState state, @NotNull BlockPos pos, @NotNull LivingEntity entityliving) {
252+
public boolean mineBlock(@NotNull ItemStack stack, @NotNull Level world, @NotNull BlockState state, @NotNull BlockPos pos, @NotNull LivingEntity entity) {
253253
IEnergyContainer energyContainer = StorageUtils.getEnergyContainer(stack, 0);
254254
if (energyContainer != null) {
255-
FloatingLong energyRequired = getDestroyEnergy(stack, state.getDestroySpeed(world, pos), isModuleEnabled(stack, MekanismModules.SILK_TOUCH_UNIT));
255+
boolean silk = isModuleEnabled(stack, MekanismModules.SILK_TOUCH_UNIT);
256+
FloatingLong modDestroyEnergy = getDestroyEnergy(stack, silk);
257+
FloatingLong energyRequired = getDestroyEnergy(modDestroyEnergy, state.getDestroySpeed(world, pos));
256258
energyContainer.extract(energyRequired, Action.EXECUTE, AutomationType.MANUAL);
259+
//AOE/vein mining handling
260+
if (!world.isClientSide && entity instanceof ServerPlayer player && !player.isCreative() &&
261+
energyContainer.extract(energyRequired, Action.SIMULATE, AutomationType.MANUAL).greaterOrEqual(energyRequired)) {
262+
Map<BlockPos, BlockState> blocks = getBlastedBlocks(world, player, stack, pos, state);
263+
blocks = blocks.isEmpty() && ModuleVeinMiningUnit.canVeinBlock(state) ? Map.of(pos, state) : blocks;
264+
265+
Reference2BooleanMap<Block> oreTracker = blocks.values().stream().collect(Collectors.toMap(BlockStateBase::getBlock,
266+
bs -> bs.is(MekanismTags.Blocks.ATOMIC_DISASSEMBLER_ORE), (l, r) -> l, Reference2BooleanArrayMap::new));
267+
268+
Object2IntMap<BlockPos> veinedBlocks = getVeinedBlocks(world, stack, blocks, oreTracker);
269+
if (!veinedBlocks.isEmpty()) {
270+
//Don't include bonus energy required by efficiency modules when calculating energy of vein mining targets
271+
FloatingLong baseDestroyEnergy = getDestroyEnergy(silk);
272+
MekanismUtils.veinMineArea(energyContainer, energyRequired, modDestroyEnergy, baseDestroyEnergy, world, pos, player, stack, this, veinedBlocks,
273+
ItemMekaTool::getDestroyEnergy, (base, hardness, distance, bs) -> getDestroyEnergy(base, hardness)
274+
.multiply(0.5 * Math.pow(distance, bs.is(MekanismTags.Blocks.ATOMIC_DISASSEMBLER_ORE) ? 1.5 : 2)));
275+
}
276+
}
257277
}
258278
return true;
259279
}
@@ -302,38 +322,6 @@ private Object2IntMap<BlockPos> getVeinedBlocks(Level world, ItemStack stack, Ma
302322
return blocks.entrySet().stream().collect(Collectors.toMap(Entry::getKey, be -> 0, (l, r) -> l, Object2IntArrayMap::new));
303323
}
304324

305-
@Override
306-
public boolean onBlockStartBreak(ItemStack stack, BlockPos pos, Player player) {
307-
if (player.level().isClientSide || player.isCreative()) {
308-
return super.onBlockStartBreak(stack, pos, player);
309-
}
310-
IEnergyContainer energyContainer = StorageUtils.getEnergyContainer(stack, 0);
311-
if (energyContainer != null) {
312-
Level world = player.level();
313-
BlockState state = world.getBlockState(pos);
314-
boolean silk = isModuleEnabled(stack, MekanismModules.SILK_TOUCH_UNIT);
315-
FloatingLong modDestroyEnergy = getDestroyEnergy(stack, silk);
316-
FloatingLong energyRequired = getDestroyEnergy(modDestroyEnergy, state.getDestroySpeed(world, pos));
317-
if (energyContainer.extract(energyRequired, Action.SIMULATE, AutomationType.MANUAL).greaterOrEqual(energyRequired)) {
318-
Map<BlockPos, BlockState> blocks = getBlastedBlocks(world, player, stack, pos, state);
319-
blocks = blocks.isEmpty() && ModuleVeinMiningUnit.canVeinBlock(state) ? Map.of(pos, state) : blocks;
320-
321-
Reference2BooleanMap<Block> oreTracker = blocks.values().stream().collect(Collectors.toMap(BlockStateBase::getBlock,
322-
bs -> bs.is(MekanismTags.Blocks.ATOMIC_DISASSEMBLER_ORE), (l, r) -> l, Reference2BooleanArrayMap::new));
323-
324-
Object2IntMap<BlockPos> veinedBlocks = getVeinedBlocks(world, stack, blocks, oreTracker);
325-
if (!veinedBlocks.isEmpty()) {
326-
//Don't include bonus energy required by efficiency modules when calculating energy of vein mining targets
327-
FloatingLong baseDestroyEnergy = getDestroyEnergy(silk);
328-
MekanismUtils.veinMineArea(energyContainer, energyRequired, modDestroyEnergy, baseDestroyEnergy, world, pos, (ServerPlayer) player, stack, this, veinedBlocks,
329-
ItemMekaTool::getDestroyEnergy, (base, hardness, distance, bs) -> getDestroyEnergy(base, hardness)
330-
.multiply(0.5 * Math.pow(distance, bs.is(MekanismTags.Blocks.ATOMIC_DISASSEMBLER_ORE) ? 1.5 : 2)));
331-
}
332-
}
333-
}
334-
return super.onBlockStartBreak(stack, pos, player);
335-
}
336-
337325
private static FloatingLong getDestroyEnergy(boolean silk) {
338326
return silk ? MekanismConfig.gear.mekaToolEnergyUsageSilk.get() : MekanismConfig.gear.mekaToolEnergyUsage.get();
339327
}

src/main/java/mekanism/common/util/MekanismUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ public static void veinMineArea(IEnergyContainer energyContainer, FloatingLong e
760760
// block hardness values in a modded context
761761
continue;
762762
}
763-
int exp = CommonHooks.onBlockBreakEvent(world, player.gameMode.getGameModeForPlayer(), player, foundPos);
763+
int exp = CommonHooks.fireBlockBreak(world, player.gameMode.getGameModeForPlayer(), player, foundPos, targetState);
764764
if (exp == -1) {
765765
//If we can't actually break the block continue (this allows mods to stop us from vein mining into protected land)
766766
continue;

0 commit comments

Comments
 (0)