Files
fabric-carpet/src/main/java/carpet/mixins/MerchantResultSlot_scarpetEventMixin.java
T
2023-04-26 22:58:59 +02:00

35 lines
1.3 KiB
Java

package carpet.mixins;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static carpet.script.CarpetEventServer.Event.PLAYER_TRADES;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.MerchantContainer;
import net.minecraft.world.inventory.MerchantResultSlot;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.trading.Merchant;
@Mixin(MerchantResultSlot.class)
public abstract class MerchantResultSlot_scarpetEventMixin {
@Shadow @Final private Merchant merchant;
@Shadow @Final private MerchantContainer slots;
@Inject(method = "onTake", at = @At(value = "INVOKE",
target = "Lnet/minecraft/world/item/trading/Merchant;notifyTrade(Lnet/minecraft/world/item/trading/MerchantOffer;)V")
)
private void onTrade(Player player, ItemStack stack, CallbackInfo ci) {
if(PLAYER_TRADES.isNeeded() && !player.level().isClientSide())
{
PLAYER_TRADES.onTrade((ServerPlayer) player, merchant, slots.getActiveOffer());
}
}
}