Skip to content

Commit

Permalink
feat(event): ItemInventoryTickEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
WakelessSloth56 committed Aug 15, 2022
1 parent bc3a544 commit 4165b6f
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 4 deletions.
@@ -1,8 +1,11 @@
package org.auioc.mcmod.arnicalib.common.event;

import org.auioc.mcmod.arnicalib.common.event.impl.ItemInventoryTickEvent;
import org.auioc.mcmod.arnicalib.common.event.impl.PistonCheckPushableEvent;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.MinecraftForge;
Expand All @@ -21,4 +24,8 @@ public static boolean firePistonCheckPushableEvent(BlockState blockState, Level
return forgeEventBus.post(new PistonCheckPushableEvent(blockState, level, blockPos, pushDirection, p_60209_, p_60210_));
}

public static boolean onSelectedItemItemInventoryTick(Player player, Level level, ItemStack itemStack, int index) {
return forgeEventBus.post(new ItemInventoryTickEvent.Selected(player, level, itemStack, index));
}

}
@@ -0,0 +1,49 @@
package org.auioc.mcmod.arnicalib.common.event.impl;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.Cancelable;

public class ItemInventoryTickEvent extends PlayerEvent {

private final Level level;
private final ItemStack itemStack;
private final int index;
private final boolean selected;

public ItemInventoryTickEvent(Player player, Level level, ItemStack itemStack, int index, boolean selected) {
super(player);
this.level = level;
this.itemStack = itemStack;
this.index = index;
this.selected = selected;
}

public Level getLevel() {
return this.level;
}

public ItemStack getItemStack() {
return this.itemStack;
}

public int getIndex() {
return this.index;
}

public boolean isSelected() {
return this.selected;
}

@Cancelable
public static class Selected extends ItemInventoryTickEvent {

public Selected(Player player, Level level, ItemStack itemStack, int index) {
super(player, level, itemStack, index, true);
}

}

}
@@ -0,0 +1,32 @@
package org.auioc.mcmod.arnicalib.mixin.common;

import org.auioc.mcmod.arnicalib.common.event.CommonEventFactory;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;

@Mixin(value = ItemStack.class)
public class MixinItemStack {

// @org.spongepowered.asm.mixin.Debug(export = true, print = true)
@Inject(
method = "Lnet/minecraft/world/item/ItemStack;inventoryTick(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/Entity;IZ)V",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getItem()Lnet/minecraft/world/item/Item;", ordinal = 1),
require = 1,
allow = 1,
cancellable = true
)
private void onInventoryTick(Level p_41667_, Entity p_41668_, int p_41669_, boolean p_41670_, CallbackInfo ci) {
if (p_41670_ && p_41668_ instanceof Player player) {
if (CommonEventFactory.onSelectedItemItemInventoryTick(player, p_41667_, ((ItemStack) (Object) this), p_41669_)) {
ci.cancel();;
}
}
}

}
Expand Up @@ -13,20 +13,22 @@ public final class ServerEventHandler {

private static final Marker MARKER = LogUtil.getMarker("ServerHooks");


@SubscribeEvent
public static void registerCommands(final RegisterCommandsEvent event) {
AHServerCommands.register(event.getDispatcher());
}


private static final Marker SERVER_LIST_PING_MARKER = LogUtil.getMarker("ServerListPing").addParents(MARKER);

@SubscribeEvent
public static void onServerLogin(final ServerLoginEvent event) {
ConnectionProtocol intention = event.getPacket().getIntention();
if (intention == ConnectionProtocol.STATUS) {
if (event.getPacket().getIntention() == ConnectionProtocol.STATUS) {
LOGGER.info(
LogUtil.getMarker("ServerListPing").addParents(MARKER),
SERVER_LIST_PING_MARKER,
String.format("[%s] <-> InitialHandler has pinged", event.getNetworkManager().getRemoteAddress())
);
return;
}
}

Expand Down
1 change: 1 addition & 0 deletions src/main/resources/arnicalib.mixin.json
Expand Up @@ -7,6 +7,7 @@
"common.MixinMobEffectInstance",
"common.MixinCommandSourceStack",
"common.MixinCreativeModeTab",
"common.MixinItemStack",
"server.MixinServerLifecycleHooks",
"server.MixinLootContext",
"server.MixinServerPlayer",
Expand Down

0 comments on commit 4165b6f

Please sign in to comment.