Skip to content

Commit 7f76087

Browse files
authored
[1.20.6] Update Architectury API's dependencies and require the latest Fabric API and NeoForge. (#509)
* update dependencies * Fix compile errors
1 parent 5e4933e commit 7f76087

File tree

6 files changed

+76
-31
lines changed

6 files changed

+76
-31
lines changed

fabric/src/main/resources/fabric.mod.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
"icon": "icon.png",
3636
"depends": {
3737
"minecraft": "~1.20.6-",
38-
"fabricloader": ">=0.15.6",
39-
"fabric-api": ">=0.98.0"
38+
"fabricloader": ">=0.15.11",
39+
"fabric-api": ">=0.99.0"
4040
},
4141
"breaks": {
4242
"optifabric": "<1.13.0"

gradle.properties

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ base_version=12.1
1414
maven_group=dev.architectury
1515
version_suffix=
1616

17-
fabric_loader_version=0.15.10
18-
fabric_api_version=0.98.0+1.20.6
17+
fabric_loader_version=0.15.11
18+
fabric_api_version=0.99.0+1.20.6
1919
mod_menu_version=10.0.0-beta.1
2020

21-
forge_version=50.0.0
22-
neoforge_version=20.6.70-beta
21+
forge_version=50.0.31
22+
neoforge_version=20.6.98-beta
2323

2424
# Set to empty if not snapshots
2525
neoforge_pr=

neoforge/src/main/java/dev/architectury/event/forge/EventHandlerImplCommon.java

+11-24
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import net.neoforged.bus.api.EventPriority;
3737
import net.neoforged.bus.api.SubscribeEvent;
3838
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
39+
import net.neoforged.neoforge.common.util.TriState;
3940
import net.neoforged.neoforge.event.CommandEvent;
4041
import net.neoforged.neoforge.event.LootTableLoadEvent;
4142
import net.neoforged.neoforge.event.RegisterCommandsEvent;
@@ -247,20 +248,6 @@ public static void event(FarmlandTrampleEvent event) {
247248
}
248249
}
249250

250-
@SubscribeEvent(priority = EventPriority.HIGH)
251-
public static void event(FillBucketEvent event) {
252-
ItemStack oldItem = event.getEmptyBucket();
253-
CompoundEventResult<ItemStack> result = PlayerEvent.FILL_BUCKET.invoker().fill(event.getEntity(), event.getLevel(), oldItem, event.getTarget());
254-
if (result.interruptsFurtherEvaluation()) {
255-
event.setCanceled(true);
256-
event.setFilledBucket(result.object());
257-
258-
if (result.value() != null) {
259-
event.setResult(result.value() ? Event.Result.ALLOW : Event.Result.DENY);
260-
}
261-
}
262-
}
263-
264251
// TODO: Hook ourselves when mixin is available
265252
// @SubscribeEvent(priority = EventPriority.HIGH)
266253
// public static void event(EnteringChunk event) {
@@ -294,20 +281,20 @@ public static void event(ItemSmeltedEvent event) {
294281
}
295282

296283
@SubscribeEvent(priority = EventPriority.HIGH)
297-
public static void event(EntityItemPickupEvent event) {
284+
public static void event(ItemEntityPickupEvent.Pre event) {
298285
// note: this event is weird, cancel is equivalent to denying the pickup,
299286
// and setting the result to ALLOW will pick it up without adding it to the player's inventory
300-
var result = PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getEntity(), event.getItem(), event.getItem().getItem());
287+
var result = PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getPlayer(), event.getItemEntity(), event.getItemEntity().getItem());
301288
if (result.isFalse()) {
302-
event.setCanceled(true);
289+
event.setCanPickup(TriState.FALSE);
303290
} else if (result.isTrue()) {
304-
event.setResult(Event.Result.ALLOW);
291+
event.setCanPickup(TriState.TRUE);
305292
}
306293
}
307294

308295
@SubscribeEvent(priority = EventPriority.HIGH)
309-
public static void event(ItemPickupEvent event) {
310-
PlayerEvent.PICKUP_ITEM_POST.invoker().pickup(event.getEntity(), event.getOriginalEntity(), event.getStack());
296+
public static void event(ItemEntityPickupEvent.Post event) {
297+
PlayerEvent.PICKUP_ITEM_POST.invoker().pickup(event.getPlayer(), event.getItemEntity(), event.getCurrentStack());
311298
}
312299

313300
@SubscribeEvent(priority = EventPriority.HIGH)
@@ -340,8 +327,8 @@ public static void eventPlayerInteractEvent(PlayerInteractEvent.RightClickBlock
340327
if (result.isPresent()) {
341328
event.setCanceled(true);
342329
event.setCancellationResult(result.asMinecraft());
343-
event.setUseBlock(Event.Result.DENY);
344-
event.setUseItem(Event.Result.DENY);
330+
event.setUseBlock(TriState.FALSE);
331+
event.setUseItem(TriState.FALSE);
345332
}
346333
}
347334

@@ -360,8 +347,8 @@ public static void eventPlayerInteractEvent(PlayerInteractEvent.LeftClickBlock e
360347
EventResult result = InteractionEvent.LEFT_CLICK_BLOCK.invoker().click(event.getEntity(), event.getHand(), event.getPos(), event.getFace());
361348
if (result.isPresent()) {
362349
event.setCanceled(true);
363-
event.setUseBlock(result.value() ? Event.Result.ALLOW : Event.Result.DENY);
364-
event.setUseItem(result.value() ? Event.Result.ALLOW : Event.Result.DENY);
350+
event.setUseBlock(result.value() ? TriState.TRUE : TriState.FALSE);
351+
event.setUseItem(result.value() ? TriState.TRUE : TriState.FALSE);
365352
}
366353
}
367354

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* This file is part of architectury.
3+
* Copyright (C) 2020, 2021, 2022 architectury
4+
*
5+
* This program is free software; you can redistribute it and/or
6+
* modify it under the terms of the GNU Lesser General Public
7+
* License as published by the Free Software Foundation; either
8+
* version 3 of the License, or (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13+
* Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program; if not, write to the Free Software Foundation,
17+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18+
*/
19+
20+
package dev.architectury.mixin.forge.neoforge;
21+
22+
import dev.architectury.event.events.common.PlayerEvent;
23+
import net.minecraft.world.InteractionHand;
24+
import net.minecraft.world.InteractionResultHolder;
25+
import net.minecraft.world.entity.player.Player;
26+
import net.minecraft.world.item.BucketItem;
27+
import net.minecraft.world.item.ItemStack;
28+
import net.minecraft.world.level.Level;
29+
import net.minecraft.world.phys.BlockHitResult;
30+
import org.spongepowered.asm.mixin.Mixin;
31+
import org.spongepowered.asm.mixin.injection.At;
32+
import org.spongepowered.asm.mixin.injection.Inject;
33+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
34+
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
35+
36+
@Mixin(BucketItem.class)
37+
public class MixinBucketItem {
38+
39+
@Inject(
40+
method = "use",
41+
at = @At(
42+
value = "INVOKE",
43+
target = "Lnet/minecraft/world/phys/BlockHitResult;getType()Lnet/minecraft/world/phys/HitResult$Type;",
44+
ordinal = 0
45+
),
46+
locals = LocalCapture.CAPTURE_FAILHARD,
47+
cancellable = true
48+
)
49+
public void fillBucket(Level level, Player player, InteractionHand hand, CallbackInfoReturnable<InteractionResultHolder<ItemStack>> cir, ItemStack stack, BlockHitResult target) {
50+
var result = PlayerEvent.FILL_BUCKET.invoker().fill(player, level, stack, target);
51+
if (result.interruptsFurtherEvaluation() && result.value() != null) {
52+
cir.setReturnValue(result.asMinecraft());
53+
cir.cancel();
54+
}
55+
}
56+
57+
}

neoforge/src/main/resources/META-INF/neoforge.mods.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ side = "BOTH"
2424
[[dependencies.architectury]]
2525
modId = "neoforge"
2626
type = "required"
27-
versionRange = "[20.6.70-beta,)"
27+
versionRange = "[20.6.98-beta,)"
2828
ordering = "NONE"
2929
side = "BOTH"
3030

neoforge/src/main/resources/architectury.mixins.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"MixinMinecraft"
1111
],
1212
"mixins": [
13+
"neoforge.MixinBucketItem",
1314
"neoforge.BucketItemAccessor",
1415
"neoforge.LiquidBlockAccessor",
1516
"neoforge.MixinChunkSerializer",

0 commit comments

Comments
 (0)