Skip to content

Commit 81ed76f

Browse files
committed
[Feat]: Added ITEM_CRAFTED event
1 parent d620dd6 commit 81ed76f

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package net.p3pp3rf1y.sophisticatedcore.event.common;
2+
3+
import net.fabricmc.fabric.api.event.Event;
4+
import net.fabricmc.fabric.api.event.EventFactory;
5+
import net.minecraft.world.Container;
6+
import net.minecraft.world.entity.player.Player;
7+
import net.minecraft.world.item.ItemStack;
8+
9+
public interface PlayerEvents {
10+
Event<PlayerEvents.ItemCrafted> ITEM_CRAFTED = EventFactory.createArrayBacked(PlayerEvents.ItemCrafted.class, callbacks -> (player, stack, craftMatrix) -> {
11+
for (PlayerEvents.ItemCrafted callback : callbacks)
12+
callback.onItemCrafted(player, stack, craftMatrix);
13+
});
14+
15+
@FunctionalInterface
16+
interface ItemCrafted {
17+
void onItemCrafted(Player player, ItemStack stack, Container craftMatrix);
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package net.p3pp3rf1y.sophisticatedcore.mixin.common;
2+
3+
import net.minecraft.world.entity.player.Player;
4+
import net.minecraft.world.inventory.CraftingContainer;
5+
import net.minecraft.world.inventory.ResultSlot;
6+
import net.minecraft.world.item.ItemStack;
7+
import net.p3pp3rf1y.sophisticatedcore.event.common.PlayerEvents;
8+
import org.spongepowered.asm.mixin.Final;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.Shadow;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
15+
@Mixin(ResultSlot.class)
16+
public class ResultSlotMixin {
17+
@Shadow @Final private CraftingContainer craftSlots;
18+
19+
@Shadow @Final private Player player;
20+
21+
@Inject(method = "onTake", at = @At("HEAD"))
22+
public void sophisticatedCore_onTake(Player player, ItemStack stack, CallbackInfo callbackInfo) {
23+
PlayerEvents.ITEM_CRAFTED.invoker().onItemCrafted(player, stack, craftSlots);
24+
}
25+
26+
@Inject(method = "onQuickCraft", at = @At("HEAD"))
27+
public void sophisticatedCore_onQuickCraft(ItemStack stack, int amount, CallbackInfo ci) {
28+
PlayerEvents.ITEM_CRAFTED.invoker().onItemCrafted(player, stack, craftSlots);
29+
}
30+
}

0 commit comments

Comments
 (0)