Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor packets #59

Merged
merged 7 commits into from
Jan 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
*/
dependencies {
api("com.github.GTNewHorizons:GTNHLib:0.6.3:dev")
api("com.github.GTNewHorizons:GTNHLib:0.6.5:dev")
compileOnly("com.github.GTNewHorizons:TinkersConstruct:1.13.4-GTNH:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.7.23-GTNH:dev")
compileOnly("com.github.GTNewHorizons:inventory-tweaks:1.7.0:dev")
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/xonin/backhand/Backhand.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
modid = Backhand.MODID,
name = "Backhand",
version = Tags.VERSION,
dependencies = "required-after:gtnhlib@[0.6.3,)")
dependencies = "required-after:gtnhlib@[0.6.5,)")
public class Backhand {

public static final String MODID = "backhand";
Expand All @@ -33,7 +33,6 @@ public class Backhand {

@SidedProxy(clientSide = "xonin.backhand.client.ClientProxy", serverSide = "xonin.backhand.CommonProxy")
public static CommonProxy proxy;
public static BackhandPacketHandler packetHandler;

@Mod.EventHandler
public void load(FMLPreInitializationEvent event) {
Expand All @@ -49,8 +48,7 @@ public void load(FMLPreInitializationEvent event) {

@Mod.EventHandler
public void init(FMLInitializationEvent event) {
packetHandler = new BackhandPacketHandler();
packetHandler.register();
BackhandPacketHandler.init();
}

public static MinecraftServer getServer() {
Expand Down
31 changes: 21 additions & 10 deletions src/main/java/xonin/backhand/CommonProxy.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
package xonin.backhand;

import javax.annotation.Nullable;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.FakePlayer;

import org.lwjgl.input.Keyboard;

import com.gtnewhorizon.gtnhlib.eventbus.EventBusSubscriber;
import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent;
import xonin.backhand.api.core.BackhandUtils;
import xonin.backhand.packet.BackhandPacketHandler;
import xonin.backhand.packet.OffhandSyncItemPacket;

@EventBusSubscriber
public class CommonProxy {

public static final SyncedKeybind SWAP_KEY = SyncedKeybind
.createConfigurable("backhand.swap_offhand", "key.categories.gameplay", Keyboard.KEY_F)
.registerGlobalListener(CommonProxy::swapOffhand);

public void load() {}

@SubscribeEvent
Expand All @@ -36,14 +40,21 @@ public static void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {

@SubscribeEvent
public static void addTracking(net.minecraftforge.event.entity.player.PlayerEvent.StartTracking event) {
if (event.entityPlayer instanceof EntityPlayerMP playerMP && isValidPlayer(event.target)) {
Backhand.packetHandler
.sendPacketToPlayer(new OffhandSyncItemPacket((EntityPlayer) event.target).generatePacket(), playerMP);
if (BackhandUtils.isValidPlayer(event.entityPlayer) && BackhandUtils.isValidPlayer(event.target)) {
BackhandPacketHandler
.sendPacketToPlayer(new OffhandSyncItemPacket((EntityPlayer) event.target), event.entityPlayer);
}
}

private static boolean isValidPlayer(@Nullable Entity entity) {
return entity instanceof EntityPlayerMP playerMP
&& !(entity instanceof FakePlayer || playerMP.playerNetServerHandler == null);
private static void swapOffhand(EntityPlayerMP player, SyncedKeybind keybind) {
ItemStack offhandItem = BackhandUtils.getOffhandItem(player);
if (Backhand.isOffhandBlacklisted(player.getCurrentEquippedItem())
|| Backhand.isOffhandBlacklisted(offhandItem)) {
return;
}

BackhandUtils.setPlayerOffhandItem(player, player.getCurrentEquippedItem());
player.setCurrentItemOrArmor(0, offhandItem);
player.inventoryContainer.detectAndSendChanges();
}
}
14 changes: 8 additions & 6 deletions src/main/java/xonin/backhand/api/core/BackhandUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import javax.annotation.ParametersAreNonnullByDefault;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.FakePlayer;

/**
* Store commonly used method, mostly for the {@link EntityPlayer} {@link ItemStack}s management
Expand All @@ -19,12 +22,6 @@ public final class BackhandUtils {

public static final List<Class<?>> offhandPriorityItems = new ArrayList<>();

public static void swapOffhandItem(EntityPlayer player) {
ItemStack mainHand = player.getCurrentEquippedItem();
player.setCurrentItemOrArmor(0, BackhandUtils.getOffhandItem(player));
BackhandUtils.setPlayerOffhandItem(player, mainHand);
}

public static void setPlayerOffhandItem(EntityPlayer player, @Nullable ItemStack stack) {
((IOffhandInventory) player.inventory).backhand$setOffhandItem(stack);
}
Expand Down Expand Up @@ -73,4 +70,9 @@ public static int getOffhandSlot(EntityPlayer player) {
public static void addOffhandPriorityItem(Class<?> itemClass) {
offhandPriorityItems.add(itemClass);
}

public static boolean isValidPlayer(@Nullable Entity entity) {
return entity instanceof EntityPlayerMP playerMP
&& !(entity instanceof FakePlayer || playerMP.playerNetServerHandler == null);
}
}
11 changes: 2 additions & 9 deletions src/main/java/xonin/backhand/client/ClientEventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import static xonin.backhand.utils.Mods.DOUBLE_WIDE_SURPRISE;

import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.gui.GuiIngame;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.RenderHelper;
Expand All @@ -18,7 +17,6 @@
import net.minecraftforge.client.event.RenderLivingEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

Expand All @@ -30,9 +28,9 @@
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.relauncher.Side;
import invtweaks.InvTweaks;
import xonin.backhand.CommonProxy;
import xonin.backhand.api.core.BackhandUtils;
import xonin.backhand.client.utils.BackhandRenderHelper;
import xonin.backhand.packet.OffhandSwapPacket;
import xonin.backhand.utils.BackhandConfig;
import xonin.backhand.utils.Mods;

Expand All @@ -43,7 +41,6 @@ public class ClientEventHandler {
public static boolean prevInvTweaksBreakRefill;

public static int invTweaksDelay;
public static boolean allowSwap = true;

public static int renderPass;

Expand All @@ -62,12 +59,8 @@ public static void renderHotbarOverlay(RenderGameOverlayEvent event) {
@SubscribeEvent
public static void onKeyInputEvent(InputEvent.KeyInputEvent event) {
Minecraft mc = Minecraft.getMinecraft();
EntityClientPlayerMP player = mc.thePlayer;

if (ClientProxy.swapOffhand.getIsKeyPressed() && Keyboard.isKeyDown(Keyboard.getEventKey()) && allowSwap) {
allowSwap = false;
if (mc.currentScreen == null && CommonProxy.SWAP_KEY.isKeyDown(mc.thePlayer)) {
invTweaksSwapPatch();
player.sendQueue.addToSendQueue(new OffhandSwapPacket(player).generatePacket());
}
}

Expand Down
15 changes: 0 additions & 15 deletions src/main/java/xonin/backhand/client/ClientProxy.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,7 @@
package xonin.backhand.client;

import net.minecraft.client.settings.KeyBinding;

import org.lwjgl.input.Keyboard;

import cpw.mods.fml.client.registry.ClientRegistry;
import xonin.backhand.CommonProxy;

public class ClientProxy extends CommonProxy {

public static final KeyBinding swapOffhand = new KeyBinding(
"Swap Offhand",
Keyboard.KEY_F,
"key.categories.gameplay");

@Override
public void load() {
super.load();
ClientRegistry.registerKeyBinding(swapOffhand);
}
}
11 changes: 9 additions & 2 deletions src/main/java/xonin/backhand/compat/TConstructCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@

import com.gtnewhorizon.gtnhlib.eventbus.EventBusSubscriber;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import tconstruct.library.tools.HarvestTool;
import tconstruct.library.weaponry.IWindup;
import tconstruct.tools.TinkerToolEvents;
Expand All @@ -36,8 +39,11 @@ public static boolean register() {
if (Mods.TINKERS_CONSTRUCT.isLoaded()) {
try {
// Gotta hide those NEW instructions from the JVM
crosshairHandler = CrosshairHandler.class.getConstructor()
.newInstance();
if (FMLCommonHandler.instance()
.getSide() == Side.CLIENT) {
crosshairHandler = CrosshairHandler.class.getConstructor()
.newInstance();
}
// These need to be MethodHandles since the compiler complains about Mobs-Info not being present
// otherwise
onHurt = MethodHandles.publicLookup()
Expand Down Expand Up @@ -91,6 +97,7 @@ public static void onAttack(LivingAttackEvent event) {
}
}

@SideOnly(Side.CLIENT)
@SubscribeEvent(priority = EventPriority.LOWEST)
public static void onRenderOverlay(RenderGameOverlayEvent.Pre event) {
if (event.type != RenderGameOverlayEvent.ElementType.CROSSHAIRS) return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

import com.llamalad7.mixinextras.sugar.Local;

import xonin.backhand.Backhand;
import xonin.backhand.api.core.BackhandUtils;
import xonin.backhand.packet.BackhandPacketHandler;
import xonin.backhand.packet.OffhandSyncItemPacket;

@Mixin(EntityLivingBase.class)
Expand All @@ -39,6 +39,6 @@ public MixinEntityLivingBase(World worldIn) {
ItemStack offhand = BackhandUtils.getOffhandItem(player);
if (ItemStack.areItemStacksEqual(backhand$previousOffhandStack, offhand)) return;
backhand$previousOffhandStack = offhand;
Backhand.packetHandler.sendPacketToAllTracking(player, new OffhandSyncItemPacket(player).generatePacket());
BackhandPacketHandler.sendPacketToAllTracking(player, new OffhandSyncItemPacket(player));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemStack;
import net.minecraft.network.play.server.S0BPacketAnimation;
import net.minecraft.util.RegistrySimple;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -25,10 +23,11 @@
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;

import xonin.backhand.Backhand;
import xonin.backhand.api.core.BackhandUtils;
import xonin.backhand.api.core.IBackhandPlayer;
import xonin.backhand.api.core.IOffhandInventory;
import xonin.backhand.packet.BackhandPacketHandler;
import xonin.backhand.packet.OffhandAnimationPacket;
import xonin.backhand.packet.OffhandSyncOffhandUse;

@Mixin(EntityPlayer.class)
Expand Down Expand Up @@ -139,8 +138,7 @@ private MixinEntityPlayer(World p_i1594_1_) {
setOffhandItemInUse(state);

if (!worldObj.isRemote) {
Backhand.packetHandler
.sendPacketToAllTracking(player, new OffhandSyncOffhandUse(player, state).generatePacket());
BackhandPacketHandler.sendPacketToAllTracking(player, new OffhandSyncOffhandUse(player, state));
}
}

Expand Down Expand Up @@ -172,9 +170,8 @@ public void swingOffItem() {
this.backhand$offHandSwingProgressInt = -1;
this.backhand$isOffHandSwingInProgress = true;

if (worldObj instanceof WorldServer world) {
world.getEntityTracker()
.func_151247_a(this, new S0BPacketAnimation(this, 99));
if (!worldObj.isRemote) {
BackhandPacketHandler.sendPacketToAllTracking(player, new OffhandAnimationPacket(player));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
Expand All @@ -20,9 +19,6 @@
@Mixin(EntityPlayer.class)
public abstract class MixinEntityPlayerClient extends EntityLivingBase implements IBackhandPlayer {

@Shadow
public InventoryPlayer inventory;

@Shadow
private ItemStack itemInUse;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,13 @@

import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.entity.Entity;
import net.minecraft.network.play.server.S0BPacketAnimation;

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 com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;

import xonin.backhand.api.core.IBackhandPlayer;
import xonin.backhand.api.core.IOffhandInventory;

@Mixin(NetHandlerPlayClient.class)
Expand All @@ -33,14 +27,4 @@ public abstract class MixinNetHandlerPlayClient {
// return a valid int e.g. between 0 and < 9
return IOffhandInventory.isValidSwitch(original, gameController.thePlayer) ? 0 : -1;
}

@Inject(
method = "handleAnimation",
at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/server/S0BPacketAnimation;func_148977_d()I"))
private void backhand$handleOffhandSwing(S0BPacketAnimation packetIn, CallbackInfo ci, @Local Entity entity) {
if (!(entity instanceof IBackhandPlayer player)) return;
if (packetIn.func_148978_c() == 99) {
player.swingOffItem();
}
}
}
27 changes: 0 additions & 27 deletions src/main/java/xonin/backhand/packet/AbstractPacket.java

This file was deleted.

Loading