Update WorldEditWrapper21

This commit is contained in:
2024-11-28 23:28:44 +01:00
parent edd3524b41
commit e088e9794b
9 changed files with 171 additions and 93 deletions
@@ -32,10 +32,12 @@ import net.minecraft.network.protocol.game.PacketPlayOutExplosion;
import net.minecraft.network.protocol.game.PacketPlayOutGameStateChange;
import net.minecraft.server.level.EntityPlayer;
import net.minecraft.server.level.PlayerInteractManager;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.entity.player.PlayerAbilities;
import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.level.EnumGamemode;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_21_R2.entity.CraftPlayer;
@@ -44,6 +46,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.List;
import java.util.Optional;
public class NMSWrapper21 implements NMSWrapper {
@@ -77,11 +80,13 @@ public class NMSWrapper21 implements NMSWrapper {
gameStateChangeReason.set(packet, PacketPlayOutGameStateChange.d);
}
private static final Reflection.FieldAccessor<PlayerAbilities> playerAbilities = Reflection.getField(EntityHuman.class, null, PlayerAbilities.class);
@Override
public void setPlayerBuildAbilities(Player player) {
PlayerAbilities abilities = ((CraftPlayer) player).getHandle().;
((CraftPlayer) player).getHandle().().d = true;
((CraftPlayer) player).getHandle().fZ().e = true;
PlayerAbilities abilities = playerAbilities.get(((CraftPlayer) player).getHandle());
abilities.d = true;
abilities.e = true;
}
@Override
@@ -128,30 +133,11 @@ public class NMSWrapper21 implements NMSWrapper {
}
private final Class<?> explosionPacket = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutExplosion");
private final Reflection.FieldAccessor<Double> a = Reflection.getField(explosionPacket, double.class, 0);
private final Reflection.FieldAccessor<Double> b = Reflection.getField(explosionPacket, double.class, 1);
private final Reflection.FieldAccessor<Double> c = Reflection.getField(explosionPacket, double.class, 2);
private final Reflection.FieldAccessor<Float> d = Reflection.getField(explosionPacket, float.class, 0);
private final Reflection.FieldAccessor<List> e = Reflection.getField(explosionPacket, List.class, 0);
private final Reflection.FieldAccessor<Explosion.Effect> f = Reflection.getField(explosionPacket, Explosion.Effect.class, 0);
private final Reflection.FieldAccessor<ParticleParam> g = Reflection.getField(explosionPacket, ParticleParam.class, 0);
private final Reflection.FieldAccessor<ParticleParam> h = Reflection.getField(explosionPacket, ParticleParam.class, 1);
private final Reflection.FieldAccessor<Holder> i = Reflection.getField(explosionPacket, Holder.class, 0);
private final Reflection.FieldAccessor<Optional> explosionKnockback = Reflection.getField(explosionPacket, Optional.class, 0);
@Override
public Object resetExplosionKnockback(Object packet) {
PacketPlayOutExplosion packetPlayOutExplosion = (PacketPlayOutExplosion) packet;
return new PacketPlayOutExplosion(
a.get(packetPlayOutExplosion),
b.get(packetPlayOutExplosion),
c.get(packetPlayOutExplosion),
d.get(packetPlayOutExplosion),
e.get(packetPlayOutExplosion),
null,
f.get(packetPlayOutExplosion),
g.get(packetPlayOutExplosion),
h.get(packetPlayOutExplosion),
i.get(packetPlayOutExplosion)
);
explosionKnockback.set(packet, Optional.empty());
return packet;
}
}