mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 08:59:27 +00:00
0.0.55.1
This commit is contained in:
@@ -4,6 +4,7 @@ import com.mojang.datafixers.util.Pair;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Item;
|
||||
@@ -20,9 +21,24 @@ import java.util.List;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class PlayerUtils {
|
||||
public final class PlayerUtils {
|
||||
private PlayerUtils() {
|
||||
}
|
||||
|
||||
private PlayerUtils() {}
|
||||
public static void resendItemInHand(@NotNull final Player player) {
|
||||
ItemStack itemInHand = player.getInventory().getItemInMainHand();
|
||||
if (ItemUtils.isEmpty(itemInHand)) return;
|
||||
Object serverPlayer = FastNMS.INSTANCE.method$CraftPlayer$getHandle(player);
|
||||
try {
|
||||
Object inventoryMenu = Reflections.field$Player$inventoryMenu.get(serverPlayer);
|
||||
int containerId = Reflections.field$AbstractContainerMenu$containerId.getInt(inventoryMenu);
|
||||
int heldItemSlot = player.getInventory().getHeldItemSlot();
|
||||
int stateId = (int) Reflections.method$AbstractContainerMenu$incrementStateId.invoke(inventoryMenu);
|
||||
|
||||
} catch (ReflectiveOperationException e) {
|
||||
CraftEngine.instance().logger().warn("Failed to resend item in hand", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void dropItem(@NotNull Player player, @NotNull ItemStack itemStack, boolean retainOwnership, boolean noPickUpDelay, boolean throwRandomly) {
|
||||
requireNonNull(player, "player");
|
||||
|
||||
@@ -6982,4 +6982,21 @@ public class Reflections {
|
||||
"nbt.Tag"
|
||||
)
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$InventoryMenu = requireNonNull(
|
||||
BukkitReflectionUtils.findReobfOrMojmapClass(
|
||||
"world.inventory.ContainerPlayer",
|
||||
"world.inventory.InventoryMenu"
|
||||
)
|
||||
);
|
||||
|
||||
public static final Field field$Player$inventoryMenu = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(clazz$Player, clazz$InventoryMenu, 0)
|
||||
);
|
||||
|
||||
public static final Method method$AbstractContainerMenu$incrementStateId = requireNonNull(
|
||||
ReflectionUtils.getMethod(
|
||||
clazz$AbstractContainerMenu, int.class, new String[]{"incrementStateId", "k"}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Project settings
|
||||
# Rule: [major update].[feature update].[bug fix]
|
||||
project_version=0.0.55
|
||||
project_version=0.0.55.1
|
||||
config_version=34
|
||||
lang_version=14
|
||||
project_group=net.momirealms
|
||||
|
||||
Reference in New Issue
Block a user