mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-28 03:19:14 +00:00
优化版本判断
This commit is contained in:
@@ -124,7 +124,7 @@ public class BukkitCompatibilityManager implements CompatibilityManager {
|
||||
|
||||
private void initSlimeWorldHook() {
|
||||
WorldManager worldManager = this.plugin.worldManager();
|
||||
if (VersionHelper.isVersionNewerThan1_21_4()) {
|
||||
if (VersionHelper.isOrAbove1_21_4()) {
|
||||
try {
|
||||
Class.forName("com.infernalsuite.asp.api.AdvancedSlimePaperAPI");
|
||||
SlimeFormatStorageAdaptor adaptor = new SlimeFormatStorageAdaptor(worldManager);
|
||||
|
||||
@@ -51,7 +51,7 @@ public class BlockEventListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerAttack(EntityDamageByEntityEvent event) {
|
||||
if (!VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (!VersionHelper.isOrAbove1_20_5()) {
|
||||
if (event.getDamager() instanceof Player player) {
|
||||
BukkitServerPlayer serverPlayer = plugin.adapt(player);
|
||||
serverPlayer.setClientSideCanBreakBlock(true);
|
||||
@@ -306,7 +306,7 @@ public class BlockEventListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
||||
public void onEntityExplode(EntityExplodeEvent event) {
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
if (!ExplosionUtils.isDroppingItems(event)) return;
|
||||
}
|
||||
handleExplodeEvent(event.blockList(), new BukkitWorld(event.getEntity().getWorld()), event.getYield());
|
||||
@@ -314,7 +314,7 @@ public class BlockEventListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
||||
public void onBlockExplode(BlockExplodeEvent event) {
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
if (!ExplosionUtils.isDroppingItems(event)) return;
|
||||
}
|
||||
handleExplodeEvent(event.blockList(), new BukkitWorld(event.getBlock().getWorld()), event.getYield());
|
||||
|
||||
@@ -107,7 +107,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
if (enableNoteBlocks) {
|
||||
this.recordVanillaNoteBlocks();
|
||||
}
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
this.fallingBlockRemoveListener = new FallingBlockRemoveListener();
|
||||
} else this.fallingBlockRemoveListener = null;
|
||||
this.stateId2ImmutableBlockStates = new ImmutableBlockState[customBlockCount];
|
||||
|
||||
@@ -107,7 +107,7 @@ public class BukkitCustomBlock extends CustomBlock {
|
||||
Reflections.method$BlockStateBase$initCache.invoke(mcBlockState);
|
||||
// set block light
|
||||
if (settings.blockLight() != -1) {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.field$BlockStateBase$lightBlock.set(mcBlockState, settings.blockLight());
|
||||
} else {
|
||||
Object cache = Reflections.field$BlockStateBase$cache.get(mcBlockState);
|
||||
|
||||
@@ -56,7 +56,7 @@ public class BushBlockBehavior extends BukkitBlockBehavior {
|
||||
Object level;
|
||||
Object blockPos;
|
||||
Object state = args[0];
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
level = args[1];
|
||||
blockPos = args[3];
|
||||
} else {
|
||||
|
||||
@@ -99,7 +99,7 @@ public class ConcretePowderBlockBehavior extends FallingBlockBehavior {
|
||||
public Object updateShape(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
Object level;
|
||||
Object pos;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
level = args[1];
|
||||
pos = args[3];
|
||||
} else {
|
||||
|
||||
@@ -42,7 +42,7 @@ public class FallingBlockBehavior extends BukkitBlockBehavior {
|
||||
public Object updateShape(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
Object world;
|
||||
Object blockPos;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
world = args[1];
|
||||
blockPos = args[3];
|
||||
} else {
|
||||
@@ -81,7 +81,7 @@ public class FallingBlockBehavior extends BukkitBlockBehavior {
|
||||
@Override
|
||||
public void onBrokenAfterFall(Object thisBlock, Object[] args) throws Exception {
|
||||
// Use EntityRemoveEvent for 1.20.3+
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) return;
|
||||
if (VersionHelper.isOrAbove1_20_3()) return;
|
||||
Object level = args[0];
|
||||
Object fallingBlockEntity = args[2];
|
||||
boolean cancelDrop = (boolean) Reflections.field$FallingBlockEntity$cancelDrop.get(fallingBlockEntity);
|
||||
|
||||
@@ -66,7 +66,7 @@ public class LeavesBlockBehavior extends WaterLoggedBlockBehavior {
|
||||
Object blockPos;
|
||||
Object neighborState;
|
||||
Object blockState = args[0];
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
world = args[1];
|
||||
neighborState = args[6];
|
||||
blockPos = args[3];
|
||||
|
||||
@@ -79,7 +79,7 @@ public class SugarCaneBlockBehavior extends BushBlockBehavior {
|
||||
public Object updateShape(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
Object world;
|
||||
Object blockPos;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
world = args[1];
|
||||
blockPos = args[3];
|
||||
} else {
|
||||
@@ -120,7 +120,7 @@ public class SugarCaneBlockBehavior extends BushBlockBehavior {
|
||||
int age = currentState.get(ageProperty);
|
||||
if (age >= this.ageProperty.max || RandomUtils.generateRandomFloat(0, 1) < this.growSpeed) {
|
||||
Object abovePos = LocationUtils.above(blockPos);
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
Reflections.method$CraftEventFactory$handleBlockGrowEvent.invoke(null, level, abovePos, super.customBlock.defaultState().customBlockState().handle(), UpdateOption.UPDATE_ALL.flags());
|
||||
} else {
|
||||
Reflections.method$CraftEventFactory$handleBlockGrowEvent.invoke(null, level, abovePos, super.customBlock.defaultState().customBlockState().handle());
|
||||
|
||||
@@ -38,6 +38,6 @@ public class DisplayEntityData<T> extends BaseEntityData<T> {
|
||||
}
|
||||
|
||||
public DisplayEntityData(int id, Object serializer, T defaultValue) {
|
||||
super(!VersionHelper.isVersionNewerThan1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||
super(!VersionHelper.isOrAbove1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,15 +60,15 @@ public class EntityDataValue {
|
||||
Serializers$OPTIONAL_BLOCK_STATE = initSerializersByName("OPTIONAL_BLOCK_STATE");
|
||||
Serializers$BOOLEAN = initSerializersByName("BOOLEAN");
|
||||
Serializers$PARTICLE = initSerializersByName("PARTICLE");
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) Serializers$PARTICLES = initSerializersByName("PARTICLES");
|
||||
if (VersionHelper.isOrAbove1_20_5()) Serializers$PARTICLES = initSerializersByName("PARTICLES");
|
||||
else Serializers$PARTICLES = null;
|
||||
Serializers$ROTATIONS = initSerializersByName("ROTATIONS");
|
||||
Serializers$BLOCK_POS = initSerializersByName("BLOCK_POS");
|
||||
Serializers$OPTIONAL_BLOCK_POS = initSerializersByName("OPTIONAL_BLOCK_POS");
|
||||
Serializers$DIRECTION = initSerializersByName("DIRECTION");
|
||||
if (!VersionHelper.isVersionNewerThan1_21_5()) Serializers$OPTIONAL_UUID = initSerializersByName("OPTIONAL_UUID");
|
||||
if (!VersionHelper.isOrAbove1_21_5()) Serializers$OPTIONAL_UUID = initSerializersByName("OPTIONAL_UUID");
|
||||
else Serializers$OPTIONAL_UUID = null;
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) Serializers$OPTIONAL_LIVING_ENTITY_REFERENCE = initSerializersByName("OPTIONAL_LIVING_ENTITY_REFERENCE");
|
||||
if (VersionHelper.isOrAbove1_21_5()) Serializers$OPTIONAL_LIVING_ENTITY_REFERENCE = initSerializersByName("OPTIONAL_LIVING_ENTITY_REFERENCE");
|
||||
else Serializers$OPTIONAL_LIVING_ENTITY_REFERENCE = null;
|
||||
Serializers$OPTIONAL_GLOBAL_POS = initSerializersByName("OPTIONAL_GLOBAL_POS");
|
||||
Serializers$COMPOUND_TAG = initSerializersByName("COMPOUND_TAG");
|
||||
@@ -76,11 +76,11 @@ public class EntityDataValue {
|
||||
Serializers$OPTIONAL_UNSIGNED_INT = initSerializersByName("OPTIONAL_UNSIGNED_INT");
|
||||
Serializers$POSE = initSerializersByName("POSE");
|
||||
Serializers$CAT_VARIANT = initSerializersByName("CAT_VARIANT");
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) Serializers$WOLF_VARIANT = initSerializersByName("WOLF_VARIANT");
|
||||
if (VersionHelper.isOrAbove1_20_5()) Serializers$WOLF_VARIANT = initSerializersByName("WOLF_VARIANT");
|
||||
else Serializers$WOLF_VARIANT = null;
|
||||
Serializers$FROG_VARIANT = initSerializersByName("FROG_VARIANT");
|
||||
Serializers$PAINTING_VARIANT = initSerializersByName("PAINTING_VARIANT");
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) Serializers$ARMADILLO_STATE = initSerializersByName("ARMADILLO_STATE");
|
||||
if (VersionHelper.isOrAbove1_20_5()) Serializers$ARMADILLO_STATE = initSerializersByName("ARMADILLO_STATE");
|
||||
else Serializers$ARMADILLO_STATE = null;
|
||||
Serializers$SNIFFER_STATE = initSerializersByName("SNIFFER_STATE");
|
||||
Serializers$VECTOR3 = initSerializersByName("VECTOR3");
|
||||
|
||||
@@ -13,6 +13,6 @@ public class InteractionEntityData<T> extends BaseEntityData<T> {
|
||||
}
|
||||
|
||||
public InteractionEntityData(int id, Object serializer, T defaultValue) {
|
||||
super(!VersionHelper.isVersionNewerThan1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||
super(!VersionHelper.isOrAbove1_20_2() && id >= 11 ? id - 1 : id, serializer, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager {
|
||||
this.plugin = plugin;
|
||||
this.furnitureParser = new FurnitureParser();
|
||||
this.furnitureEventListener = new FurnitureEventListener(this);
|
||||
this.dismountListener = VersionHelper.isVersionNewerThan1_20_3() ? new DismountListener1_20_3(this) : new DismountListener1_20(this::handleDismount);
|
||||
this.dismountListener = VersionHelper.isOrAbove1_20_3() ? new DismountListener1_20_3(this) : new DismountListener1_20(this::handleDismount);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -292,7 +292,7 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager {
|
||||
if (previous != null) return;
|
||||
|
||||
Location location = display.getLocation();
|
||||
boolean above1_20_1 = VersionHelper.isVersionNewerThan1_20_2();
|
||||
boolean above1_20_1 = VersionHelper.isOrAbove1_20_2();
|
||||
boolean preventChange = FastNMS.INSTANCE.isPreventingStatusUpdates(location.getWorld(), location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
if (above1_20_1) {
|
||||
if (!preventChange) {
|
||||
|
||||
@@ -297,9 +297,9 @@ public class LoadedFurniture implements Furniture {
|
||||
public void spawnSeatEntityForPlayer(org.bukkit.entity.Player player, Seat seat) {
|
||||
Location location = this.calculateSeatLocation(seat);
|
||||
Entity seatEntity = seat.limitPlayerRotation() ?
|
||||
EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isVersionNewerThan1_20_2() ? location.subtract(0,0.9875,0) : location.subtract(0,0.990625,0), EntityType.ARMOR_STAND, entity -> {
|
||||
EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location.subtract(0,0.9875,0) : location.subtract(0,0.990625,0), EntityType.ARMOR_STAND, entity -> {
|
||||
ArmorStand armorStand = (ArmorStand) entity;
|
||||
if (VersionHelper.isVersionNewerThan1_21_3()) {
|
||||
if (VersionHelper.isOrAbove1_21_3()) {
|
||||
Objects.requireNonNull(armorStand.getAttribute(Attribute.MAX_HEALTH)).setBaseValue(0.01);
|
||||
} else {
|
||||
LegacyAttributeUtils.setMaxHealth(armorStand);
|
||||
@@ -316,7 +316,7 @@ public class LoadedFurniture implements Furniture {
|
||||
armorStand.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER, this.baseEntityId());
|
||||
armorStand.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_VECTOR_3F_KEY, PersistentDataType.STRING, seat.offset().x + ", " + seat.offset().y + ", " + seat.offset().z);
|
||||
}) :
|
||||
EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isVersionNewerThan1_20_2() ? location : location.subtract(0,0.25,0), EntityType.ITEM_DISPLAY, entity -> {
|
||||
EntityUtils.spawnEntity(player.getWorld(), VersionHelper.isOrAbove1_20_2() ? location : location.subtract(0,0.25,0), EntityType.ITEM_DISPLAY, entity -> {
|
||||
ItemDisplay itemDisplay = (ItemDisplay) entity;
|
||||
itemDisplay.setPersistent(false);
|
||||
itemDisplay.getPersistentDataContainer().set(BukkitFurnitureManager.FURNITURE_SEAT_BASE_ENTITY_KEY, PersistentDataType.INTEGER, this.baseEntityId());
|
||||
|
||||
@@ -57,7 +57,7 @@ public class CustomHitBox extends AbstractHitBox {
|
||||
FastNMS.INSTANCE.toNMSEntityType(this.entityType), 0, Reflections.instance$Vec3$Zero, 0
|
||||
), true);
|
||||
packets.accept(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityId[0], List.copyOf(this.cachedValues)), true);
|
||||
if (VersionHelper.isVersionNewerThan1_20_5() && this.scale != 1) {
|
||||
if (VersionHelper.isOrAbove1_20_5() && this.scale != 1) {
|
||||
Object attributeInstance = Reflections.constructor$AttributeInstance.newInstance(Reflections.instance$Holder$Attribute$scale, (Consumer<?>) (o) -> {});
|
||||
Reflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, this.scale);
|
||||
packets.accept(Reflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityId[0], Collections.singletonList(attributeInstance)), false);
|
||||
|
||||
@@ -223,7 +223,7 @@ public class ShulkerHitBox extends AbstractHitBox {
|
||||
), false);
|
||||
}
|
||||
// set shulker scale
|
||||
if (VersionHelper.isVersionNewerThan1_20_5() && this.scale != 1) {
|
||||
if (VersionHelper.isOrAbove1_20_5() && this.scale != 1) {
|
||||
Object attributeInstance = Reflections.constructor$AttributeInstance.newInstance(Reflections.instance$Holder$Attribute$scale, (Consumer<?>) (o) -> {});
|
||||
Reflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, this.scale);
|
||||
packets.accept(Reflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityIds[1], Collections.singletonList(attributeInstance)), false);
|
||||
|
||||
@@ -131,14 +131,14 @@ public class BukkitFontManager extends AbstractFontManager implements Listener {
|
||||
if (result == null) return;
|
||||
Player player;
|
||||
try {
|
||||
player = (Player) Reflections.method$InventoryView$getPlayer.invoke(VersionHelper.isVersionNewerThan1_21() ? event.getView() : LegacyInventoryUtils.getView(event));
|
||||
player = (Player) Reflections.method$InventoryView$getPlayer.invoke(VersionHelper.isOrAbove1_21() ? event.getView() : LegacyInventoryUtils.getView(event));
|
||||
} catch (ReflectiveOperationException e) {
|
||||
this.plugin.logger().warn("Failed to get inventory viewer", e);
|
||||
return;
|
||||
}
|
||||
|
||||
String renameText;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
AnvilView anvilView = event.getView();
|
||||
renameText = anvilView.getRenameText();
|
||||
} else {
|
||||
|
||||
@@ -277,7 +277,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
itemBuilder.dataModifier(new CustomModelDataModifier<>(customModelData));
|
||||
}
|
||||
// Requires the item to have model before apply item-model
|
||||
else if (!hasItemModelSection && section.containsKey("model") && VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
else if (!hasItemModelSection && section.containsKey("model") && VersionHelper.isOrAbove1_21_2()) {
|
||||
// check server version here because components require 1.21.2+
|
||||
// customize or use the id
|
||||
itemModelKey = Key.from(section.getOrDefault("item-model", id.toString()).toString());
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ComponentTypes {
|
||||
private ComponentTypes() {}
|
||||
|
||||
private static Object getComponentType(Key key) {
|
||||
if (!VersionHelper.isVersionNewerThan1_20_5()) return null;
|
||||
if (!VersionHelper.isOrAbove1_20_5()) return null;
|
||||
return FastNMS.INSTANCE.getComponentType(key.namespace(), key.value());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ public class AxeItemBehavior extends ItemBehavior {
|
||||
player.swingHand(context.getHand());
|
||||
}
|
||||
// shrink item amount
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object itemStack = item.getLiteralObject();
|
||||
Object serverPlayer = player.serverPlayer();
|
||||
Object equipmentSlot = context.getHand() == InteractionHand.MAIN_HAND ? Reflections.instance$EquipmentSlot$MAINHAND : Reflections.instance$EquipmentSlot$OFFHAND;
|
||||
|
||||
@@ -123,10 +123,10 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
MIXED_RECIPE_CONVERTORS.put(RecipeTypes.SMITHING_TRANSFORM, (BukkitRecipeConvertor<CustomSmithingTransformRecipe<ItemStack>>) (id, recipe) -> {
|
||||
try {
|
||||
Object nmsRecipe = createMinecraftSmithingTransformRecipe(recipe);
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
nmsRecipe = Reflections.constructor$RecipeHolder.newInstance(
|
||||
Reflections.method$CraftRecipe$toMinecraft.invoke(null, new NamespacedKey(id.namespace(), id.value())), nmsRecipe);
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_20_2()) {
|
||||
nmsRecipe = Reflections.constructor$RecipeHolder.newInstance(KeyUtils.toResourceLocation(id), nmsRecipe);
|
||||
} else {
|
||||
return () -> {};
|
||||
@@ -255,7 +255,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
instance = this;
|
||||
this.plugin = plugin;
|
||||
this.recipeEventListener = new RecipeEventListener(plugin, this, plugin.itemManager());
|
||||
this.crafterEventListener = VersionHelper.isVersionNewerThan1_21() ? new CrafterEventListener(plugin, this, plugin.itemManager()) : null;
|
||||
this.crafterEventListener = VersionHelper.isOrAbove1_21() ? new CrafterEventListener(plugin, this, plugin.itemManager()) : null;
|
||||
try {
|
||||
nmsRecipeManager = Reflections.method$MinecraftServer$getRecipeManager.invoke(Reflections.method$MinecraftServer$getServer.invoke(null));
|
||||
} catch (ReflectiveOperationException e) {
|
||||
@@ -286,7 +286,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
@Override
|
||||
public void load() {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
try {
|
||||
this.stolenFeatureFlagSet = Reflections.field$RecipeManager$featureflagset.get(nmsRecipeManager);
|
||||
Reflections.field$RecipeManager$featureflagset.set(nmsRecipeManager, null);
|
||||
@@ -301,7 +301,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
super.unload();
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.method$RecipeManager$finalizeRecipeLoading.invoke(nmsRecipeManager);
|
||||
}
|
||||
} catch (ReflectiveOperationException e) {
|
||||
@@ -349,7 +349,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
|
||||
private void unregisterNMSRecipe(NamespacedKey key) {
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Object recipeMap = Reflections.field$RecipeManager$recipes.get(nmsRecipeManager);
|
||||
Reflections.method$RecipeMap$removeRecipe.invoke(recipeMap, Reflections.method$CraftRecipe$toMinecraft.invoke(null, key));
|
||||
} else {
|
||||
@@ -363,7 +363,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
@SuppressWarnings("unchecked")
|
||||
private void injectDataPackRecipes() {
|
||||
try {
|
||||
Object fileToIdConverter = Reflections.method$FileToIdConverter$json.invoke(null, VersionHelper.isVersionNewerThan1_21() ? "recipe" : "recipes");
|
||||
Object fileToIdConverter = Reflections.method$FileToIdConverter$json.invoke(null, VersionHelper.isOrAbove1_21() ? "recipe" : "recipes");
|
||||
Object minecraftServer = Reflections.method$MinecraftServer$getServer.invoke(null);
|
||||
Object packRepository = Reflections.method$MinecraftServer$getPackRepository.invoke(minecraftServer);
|
||||
List<Object> selected = (List<Object>) Reflections.field$PackRepository$selected.get(packRepository);
|
||||
@@ -446,13 +446,13 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
this.delayedTasksOnMainThread.clear();
|
||||
|
||||
// give flags back on 1.21.2+
|
||||
if (VersionHelper.isVersionNewerThan1_21_2() && this.stolenFeatureFlagSet != null) {
|
||||
if (VersionHelper.isOrAbove1_21_2() && this.stolenFeatureFlagSet != null) {
|
||||
Reflections.field$RecipeManager$featureflagset.set(nmsRecipeManager(), this.stolenFeatureFlagSet);
|
||||
this.stolenFeatureFlagSet = null;
|
||||
}
|
||||
|
||||
// refresh recipes
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.method$RecipeManager$finalizeRecipeLoading.invoke(nmsRecipeManager());
|
||||
}
|
||||
|
||||
@@ -460,11 +460,11 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
Reflections.method$DedicatedPlayerList$reloadRecipes.invoke(Reflections.field$CraftServer$playerList.get(Bukkit.getServer()));
|
||||
|
||||
// now we need to remove the fake `exact`
|
||||
if (VersionHelper.isVersionNewerThan1_21_4()) {
|
||||
if (VersionHelper.isOrAbove1_21_4()) {
|
||||
for (Object ingredient : injectedIngredients) {
|
||||
Reflections.field$Ingredient$itemStacks1_21_4.set(ingredient, null);
|
||||
}
|
||||
} else if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_21_2()) {
|
||||
for (Object ingredient : injectedIngredients) {
|
||||
Reflections.field$Ingredient$itemStacks1_21_2.set(ingredient, null);
|
||||
}
|
||||
@@ -711,11 +711,11 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
|
||||
Object shapedRecipe = getNMSRecipe(id);
|
||||
recipeToMcRecipeHolder.put(recipe, shapedRecipe);
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
shapedRecipe = Reflections.field$RecipeHolder$recipe.get(shapedRecipe);
|
||||
}
|
||||
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.field$ShapedRecipe$placementInfo.set(shapedRecipe, null);
|
||||
}
|
||||
|
||||
@@ -732,11 +732,11 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
|
||||
Object shapelessRecipe = getNMSRecipe(id);
|
||||
recipeToMcRecipeHolder.put(recipe, shapelessRecipe);
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
shapelessRecipe = Reflections.field$RecipeHolder$recipe.get(shapelessRecipe);
|
||||
}
|
||||
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.field$ShapelessRecipe$placementInfo.set(shapelessRecipe, null);
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -752,12 +752,12 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
Ingredient<ItemStack> actualIngredient = recipe.ingredient();
|
||||
Object smeltingRecipe = getNMSRecipe(id);
|
||||
recipeToMcRecipeHolder.put(recipe, smeltingRecipe);
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
smeltingRecipe = Reflections.field$RecipeHolder$recipe.get(smeltingRecipe);
|
||||
}
|
||||
|
||||
Object ingredient;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
ingredient = Reflections.field$SingleItemRecipe$input.get(smeltingRecipe);
|
||||
} else {
|
||||
ingredient = Reflections.field$AbstractCookingRecipe$input.get(smeltingRecipe);
|
||||
@@ -771,7 +771,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
// 获取nms配方,请注意1.20.1获取配方本身,而1.20.2+获取的是配方的holder
|
||||
// recipe on 1.20.1 and holder on 1.20.2+
|
||||
private static Object getNMSRecipe(Key id) throws ReflectiveOperationException {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Object resourceKey = Reflections.method$CraftRecipe$toMinecraft.invoke(null, new NamespacedKey(id.namespace(), id.value()));
|
||||
@SuppressWarnings("unchecked")
|
||||
Optional<Object> optional = (Optional<Object>) Reflections.method$RecipeManager$byKey.invoke(nmsRecipeManager, resourceKey);
|
||||
@@ -800,9 +800,9 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
Object ingredient = fakeIngredients.get(i);
|
||||
Ingredient<ItemStack> actualIngredient = actualIngredients.get(i);
|
||||
List<Object> items = getIngredientLooks(actualIngredient.items());
|
||||
if (VersionHelper.isVersionNewerThan1_21_4()) {
|
||||
if (VersionHelper.isOrAbove1_21_4()) {
|
||||
Reflections.field$Ingredient$itemStacks1_21_4.set(ingredient, new HashSet<>(items));
|
||||
} else if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Reflections.field$Ingredient$itemStacks1_21_2.set(ingredient, items);
|
||||
} else {
|
||||
Object itemStackArray = Array.newInstance(Reflections.clazz$ItemStack, items.size());
|
||||
@@ -845,21 +845,21 @@ public class BukkitRecipeManager extends AbstractRecipeManager<ItemStack> {
|
||||
|
||||
// create nms smithing recipe for different versions
|
||||
private static Object createMinecraftSmithingTransformRecipe(CustomSmithingTransformRecipe<ItemStack> recipe) throws ReflectiveOperationException {
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
return Reflections.constructor$SmithingTransformRecipe.newInstance(
|
||||
toOptionalMinecraftIngredient(recipe.template()),
|
||||
toMinecraftIngredient(recipe.base()),
|
||||
toOptionalMinecraftIngredient(recipe.addition()),
|
||||
toTransmuteResult(recipe.result(ItemBuildContext.EMPTY))
|
||||
);
|
||||
} else if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_21_2()) {
|
||||
return Reflections.constructor$SmithingTransformRecipe.newInstance(
|
||||
toOptionalMinecraftIngredient(recipe.template()),
|
||||
toOptionalMinecraftIngredient(recipe.base()),
|
||||
toOptionalMinecraftIngredient(recipe.addition()),
|
||||
FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(recipe.result(ItemBuildContext.EMPTY))
|
||||
);
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_20_2()) {
|
||||
return Reflections.constructor$SmithingTransformRecipe.newInstance(
|
||||
toMinecraftIngredient(recipe.template()),
|
||||
toMinecraftIngredient(recipe.base()),
|
||||
|
||||
@@ -279,7 +279,7 @@ public class RecipeEventListener implements Listener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onBlockIgnite(BlockIgniteEvent event) {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) return;
|
||||
if (VersionHelper.isOrAbove1_21_2()) return;
|
||||
Block block = event.getBlock();
|
||||
Material material = block.getType();
|
||||
if (material == Material.CAMPFIRE) {
|
||||
@@ -308,7 +308,7 @@ public class RecipeEventListener implements Listener {
|
||||
plugin.logger().warn("Failed to inject cooking block entity", e);
|
||||
}
|
||||
}
|
||||
} else if (!VersionHelper.isVersionNewerThan1_21_2() && material == Material.CAMPFIRE) {
|
||||
} else if (!VersionHelper.isOrAbove1_21_2() && material == Material.CAMPFIRE) {
|
||||
if (block.getState() instanceof Campfire campfire) {
|
||||
try {
|
||||
Object blockEntity = Reflections.field$CraftBlockEntityState$tileEntity.get(campfire);
|
||||
@@ -324,13 +324,13 @@ public class RecipeEventListener implements Listener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPutItemOnCampfire(PlayerInteractEvent event) {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
if (!VersionHelper.isVersionNewerThan1_21_2()) return;
|
||||
if (!VersionHelper.isOrAbove1_21_2()) return;
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
Block clicked = event.getClickedBlock();
|
||||
if (clicked == null) return;
|
||||
Material type = clicked.getType();
|
||||
if (type != Material.CAMPFIRE && type != Material.SOUL_CAMPFIRE) return;
|
||||
if (!VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (!VersionHelper.isOrAbove1_21_2()) {
|
||||
if (clicked.getState() instanceof Campfire campfire) {
|
||||
try {
|
||||
Object blockEntity = Reflections.field$CraftBlockEntityState$tileEntity.get(campfire);
|
||||
@@ -375,7 +375,7 @@ public class RecipeEventListener implements Listener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCampfireCook(CampfireStartEvent event) {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
if (!VersionHelper.isVersionNewerThan1_21_2()) return;
|
||||
if (!VersionHelper.isOrAbove1_21_2()) return;
|
||||
CampfireRecipe recipe = event.getRecipe();
|
||||
Key recipeId = new Key(recipe.getKey().namespace(), recipe.getKey().value());
|
||||
|
||||
@@ -406,7 +406,7 @@ public class RecipeEventListener implements Listener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCampfireCook(BlockCookEvent event) {
|
||||
if (!Config.enableRecipeSystem()) return;
|
||||
if (!VersionHelper.isVersionNewerThan1_21_2()) return;
|
||||
if (!VersionHelper.isOrAbove1_21_2()) return;
|
||||
Material type = event.getBlock().getType();
|
||||
if (type != Material.CAMPFIRE && type != Material.SOUL_CAMPFIRE) return;
|
||||
CampfireRecipe recipe = (CampfireRecipe) event.getRecipe();
|
||||
@@ -563,7 +563,7 @@ public class RecipeEventListener implements Listener {
|
||||
String renameText;
|
||||
int maxRepairCost;
|
||||
//int previousCost;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
AnvilView anvilView = event.getView();
|
||||
renameText = anvilView.getRenameText();
|
||||
maxRepairCost = anvilView.getMaximumRepairCost();
|
||||
@@ -588,10 +588,10 @@ public class RecipeEventListener implements Listener {
|
||||
} catch (ReflectiveOperationException e) {
|
||||
plugin.logger().warn("Failed to get hover name", e);
|
||||
}
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_5() && wrappedFirst.hasComponent(ComponentTypes.CUSTOM_NAME)) {
|
||||
} else if (VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasComponent(ComponentTypes.CUSTOM_NAME)) {
|
||||
repairCost += 1;
|
||||
wrappedFirst.customName(null);
|
||||
} else if (!VersionHelper.isVersionNewerThan1_20_5() && wrappedFirst.hasTag("display", "Name")) {
|
||||
} else if (!VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasTag("display", "Name")) {
|
||||
repairCost += 1;
|
||||
wrappedFirst.customName(null);
|
||||
}
|
||||
@@ -601,7 +601,7 @@ public class RecipeEventListener implements Listener {
|
||||
// To fix some client side visual issues
|
||||
try {
|
||||
Object anvilMenu;
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
anvilMenu = Reflections.field$CraftInventoryView$container.get(event.getView());
|
||||
} else {
|
||||
anvilMenu = Reflections.field$CraftInventoryAnvil$menu.get(inventory);
|
||||
@@ -611,7 +611,7 @@ public class RecipeEventListener implements Listener {
|
||||
this.plugin.logger().warn("Failed to broadcast changes", e);
|
||||
}
|
||||
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
AnvilView anvilView = event.getView();
|
||||
anvilView.setRepairCost(finalCost);
|
||||
anvilView.setRepairItemCountCost(actualConsumedAmount);
|
||||
@@ -622,7 +622,7 @@ public class RecipeEventListener implements Listener {
|
||||
|
||||
Player player;
|
||||
try {
|
||||
player = (Player) Reflections.method$InventoryView$getPlayer.invoke(VersionHelper.isVersionNewerThan1_21() ? event.getView() : LegacyInventoryUtils.getView(event));
|
||||
player = (Player) Reflections.method$InventoryView$getPlayer.invoke(VersionHelper.isOrAbove1_21() ? event.getView() : LegacyInventoryUtils.getView(event));
|
||||
} catch (ReflectiveOperationException e) {
|
||||
plugin.logger().warn("Failed to get inventory viewer", e);
|
||||
return;
|
||||
@@ -659,7 +659,7 @@ public class RecipeEventListener implements Listener {
|
||||
wrappedFirst.getCustomItem().ifPresent(item -> {
|
||||
if (!item.settings().renameable()) {
|
||||
String renameText;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
AnvilView anvilView = event.getView();
|
||||
renameText = anvilView.getRenameText();
|
||||
} else {
|
||||
|
||||
@@ -72,7 +72,7 @@ public class BukkitVanillaLootManager extends AbstractVanillaLootManager impleme
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
if (event.getDamageSource().getCausingEntity() instanceof Player player) {
|
||||
BukkitServerPlayer serverPlayer = this.plugin.adapt(player);
|
||||
builder.withParameter(LootParameters.PLAYER, serverPlayer);
|
||||
|
||||
@@ -48,7 +48,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
if (Config.sendPackOnJoin() && !VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (Config.sendPackOnJoin() && !VersionHelper.isOrAbove1_20_2()) {
|
||||
Player player = plugin.adapt(event.getPlayer());
|
||||
this.sendResourcePack(player);
|
||||
}
|
||||
@@ -58,7 +58,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
|
||||
public void load() {
|
||||
if (ReloadCommand.RELOAD_PACK_FLAG || CraftEngine.instance().isInitializing()) {
|
||||
super.load();
|
||||
if (Config.sendPackOnJoin() && VersionHelper.isVersionNewerThan1_20_2() && !(resourcePackHost() instanceof NoneHost)) {
|
||||
if (Config.sendPackOnJoin() && VersionHelper.isOrAbove1_20_2() && !(resourcePackHost() instanceof NoneHost)) {
|
||||
this.modifyServerSettings();
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
|
||||
Object settings = Reflections.field$DedicatedServer$settings.get(Reflections.method$MinecraftServer$getServer.invoke(null));
|
||||
Object properties = Reflections.field$DedicatedServerSettings$properties.get(settings);
|
||||
Object info;
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
info = Reflections.constructor$ServerResourcePackInfo.newInstance(new UUID(0, 0), FAKE_URL, "", Config.kickOnDeclined(), ComponentUtils.adventureToMinecraft(Config.resourcePackPrompt()));
|
||||
} else {
|
||||
info = Reflections.constructor$ServerResourcePackInfo.newInstance(FAKE_URL, "", Config.kickOnDeclined(), ComponentUtils.adventureToMinecraft(Config.resourcePackPrompt()));
|
||||
@@ -84,7 +84,7 @@ public class BukkitPackManager extends AbstractPackManager implements Listener {
|
||||
public void unload() {
|
||||
super.unload();
|
||||
if (ReloadCommand.RELOAD_PACK_FLAG) {
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
this.resetServerSettings();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class BukkitGuiManager implements GuiManager, Listener {
|
||||
if (VersionHelper.isFolia()) {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
this.plugin.scheduler().sync().run(() -> {
|
||||
org.bukkit.inventory.Inventory top = !VersionHelper.isVersionNewerThan1_21() ? LegacyInventoryUtils.getTopInventory(player) : player.getOpenInventory().getTopInventory();
|
||||
org.bukkit.inventory.Inventory top = !VersionHelper.isOrAbove1_21() ? LegacyInventoryUtils.getTopInventory(player) : player.getOpenInventory().getTopInventory();
|
||||
if (top.getHolder() instanceof CraftEngineInventoryHolder holder) {
|
||||
holder.gui().onTimer();
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class BukkitGuiManager implements GuiManager, Listener {
|
||||
}
|
||||
} else {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
org.bukkit.inventory.Inventory top = !VersionHelper.isVersionNewerThan1_21() ? LegacyInventoryUtils.getTopInventory(player) : player.getOpenInventory().getTopInventory();
|
||||
org.bukkit.inventory.Inventory top = !VersionHelper.isOrAbove1_21() ? LegacyInventoryUtils.getTopInventory(player) : player.getOpenInventory().getTopInventory();
|
||||
if (top.getHolder() instanceof CraftEngineInventoryHolder holder) {
|
||||
holder.gui().onTimer();
|
||||
}
|
||||
|
||||
@@ -318,11 +318,11 @@ public class BukkitInjector {
|
||||
.intercept(FieldAccessor.ofField("lastCustomRecipe"))
|
||||
.method(ElementMatchers.named("getRecipeFor").or(ElementMatchers.named("a")))
|
||||
.intercept(MethodDelegation.to(
|
||||
VersionHelper.isVersionNewerThan1_21_2() ?
|
||||
VersionHelper.isOrAbove1_21_2() ?
|
||||
GetRecipeForMethodInterceptor1_21_2.INSTANCE :
|
||||
(VersionHelper.isVersionNewerThan1_21() ?
|
||||
(VersionHelper.isOrAbove1_21() ?
|
||||
GetRecipeForMethodInterceptor1_21.INSTANCE :
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
GetRecipeForMethodInterceptor1_20_5.INSTANCE :
|
||||
GetRecipeForMethodInterceptor1_20.INSTANCE)
|
||||
))
|
||||
@@ -346,7 +346,7 @@ public class BukkitInjector {
|
||||
InjectedCacheCheck injectedChecker = (InjectedCacheCheck) Reflections.UNSAFE.allocateInstance(clazz$InjectedCacheChecker);
|
||||
injectedChecker.recipeType(recipeType);
|
||||
Reflections.field$AbstractFurnaceBlockEntity$quickCheck.set(entity, injectedChecker);
|
||||
} else if (!VersionHelper.isVersionNewerThan1_21_2() && Reflections.clazz$CampfireBlockEntity.isInstance(entity)) {
|
||||
} else if (!VersionHelper.isOrAbove1_21_2() && Reflections.clazz$CampfireBlockEntity.isInstance(entity)) {
|
||||
Object quickCheck = Reflections.field$CampfireBlockEntity$quickCheck.get(entity);
|
||||
if (clazz$InjectedCacheChecker.isInstance(quickCheck)) return; // already injected
|
||||
InjectedCacheCheck injectedChecker = (InjectedCacheCheck) Reflections.UNSAFE.allocateInstance(clazz$InjectedCacheChecker);
|
||||
@@ -749,7 +749,7 @@ public class BukkitInjector {
|
||||
Object direction;
|
||||
Object serverLevel;
|
||||
Object blockPos;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
direction = args[4];
|
||||
serverLevel = args[1];
|
||||
blockPos = args[3];
|
||||
|
||||
@@ -121,7 +121,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
}
|
||||
|
||||
private PacketIds setupPacketIds() {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
return new PacketIds1_20_5();
|
||||
} else {
|
||||
return new PacketIds1_20();
|
||||
@@ -154,18 +154,18 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
registerByteBufPacketConsumer(PacketConsumers.LEVEL_CHUNK_WITH_LIGHT, this.packetIds.clientboundLevelChunkWithLightPacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.SECTION_BLOCK_UPDATE, this.packetIds.clientboundSectionBlocksUpdatePacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.BLOCK_UPDATE, this.packetIds.clientboundBlockUpdatePacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_21_3() ? PacketConsumers.LEVEL_PARTICLE_1_21_3 : (VersionHelper.isVersionNewerThan1_20_5() ? PacketConsumers.LEVEL_PARTICLE_1_20_5 : PacketConsumers.LEVEL_PARTICLE_1_20), this.packetIds.clientboundLevelParticlesPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_21_3() ? PacketConsumers.LEVEL_PARTICLE_1_21_3 : (VersionHelper.isOrAbove1_20_5() ? PacketConsumers.LEVEL_PARTICLE_1_20_5 : PacketConsumers.LEVEL_PARTICLE_1_20), this.packetIds.clientboundLevelParticlesPacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.LEVEL_EVENT, this.packetIds.clientboundLevelEventPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.OPEN_SCREEN_1_20_3 : PacketConsumers.OPEN_SCREEN_1_20, this.packetIds.clientboundOpenScreenPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_TITLE_TEXT_1_20_3 : PacketConsumers.SET_TITLE_TEXT_1_20, this.packetIds.clientboundSetTitleTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_SUBTITLE_TEXT_1_20_3 : PacketConsumers.SET_SUBTITLE_TEXT_1_20, this.packetIds.clientboundSetSubtitleTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_ACTIONBAR_TEXT_1_20_3 : PacketConsumers.SET_ACTIONBAR_TEXT_1_20, this.packetIds.clientboundSetActionBarTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.BOSS_EVENT_1_20_3 : PacketConsumers.BOSS_EVENT_1_20, this.packetIds.clientboundBossEventPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SYSTEM_CHAT_1_20_3 : PacketConsumers.SYSTEM_CHAT_1_20, this.packetIds.clientboundSystemChatPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TAB_LIST_1_20_3 : PacketConsumers.TAB_LIST_1_20, this.packetIds.clientboundTabListPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TEAM_1_20_3 : PacketConsumers.TEAM_1_20, this.packetIds.clientboundSetPlayerTeamPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_OBJECTIVE_1_20_3 : PacketConsumers.SET_OBJECTIVE_1_20, this.packetIds.clientboundSetObjectivePacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.SET_SCORE_1_20_3, VersionHelper.isVersionNewerThan1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1);
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.OPEN_SCREEN_1_20_3 : PacketConsumers.OPEN_SCREEN_1_20, this.packetIds.clientboundOpenScreenPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SET_TITLE_TEXT_1_20_3 : PacketConsumers.SET_TITLE_TEXT_1_20, this.packetIds.clientboundSetTitleTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SET_SUBTITLE_TEXT_1_20_3 : PacketConsumers.SET_SUBTITLE_TEXT_1_20, this.packetIds.clientboundSetSubtitleTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SET_ACTIONBAR_TEXT_1_20_3 : PacketConsumers.SET_ACTIONBAR_TEXT_1_20, this.packetIds.clientboundSetActionBarTextPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.BOSS_EVENT_1_20_3 : PacketConsumers.BOSS_EVENT_1_20, this.packetIds.clientboundBossEventPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SYSTEM_CHAT_1_20_3 : PacketConsumers.SYSTEM_CHAT_1_20, this.packetIds.clientboundSystemChatPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.TAB_LIST_1_20_3 : PacketConsumers.TAB_LIST_1_20, this.packetIds.clientboundTabListPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.TEAM_1_20_3 : PacketConsumers.TEAM_1_20, this.packetIds.clientboundSetPlayerTeamPacket());
|
||||
registerByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SET_OBJECTIVE_1_20_3 : PacketConsumers.SET_OBJECTIVE_1_20, this.packetIds.clientboundSetObjectivePacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.SET_SCORE_1_20_3, VersionHelper.isOrAbove1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1);
|
||||
registerByteBufPacketConsumer(PacketConsumers.REMOVE_ENTITY, this.packetIds.clientboundRemoveEntitiesPacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.ADD_ENTITY_BYTEBUFFER, this.packetIds.clientboundAddEntityPacket());
|
||||
registerByteBufPacketConsumer(PacketConsumers.SOUND, this.packetIds.clientboundSoundPacket());
|
||||
|
||||
@@ -43,7 +43,6 @@ import net.momirealms.craftengine.core.world.chunk.PalettedContainer;
|
||||
import net.momirealms.craftengine.core.world.chunk.packet.BlockEntityData;
|
||||
import net.momirealms.craftengine.core.world.chunk.packet.MCSection;
|
||||
import net.momirealms.craftengine.core.world.collision.AABB;
|
||||
import net.momirealms.sparrow.nbt.NBT;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -98,16 +97,15 @@ public class PacketConsumers {
|
||||
try {
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
// 这里是正片
|
||||
int chunkX = buf.readInt();
|
||||
int chunkZ = buf.readInt();
|
||||
|
||||
boolean named = !VersionHelper.isVersionNewerThan1_20_2();
|
||||
boolean named = !VersionHelper.isOrAbove1_20_2();
|
||||
// ClientboundLevelChunkPacketData
|
||||
int heightmapsCount = 0;
|
||||
Map<Integer, long[]> heightmapsMap = new HashMap<>();
|
||||
Map<Integer, long[]> heightmapsMap = null;
|
||||
Tag heightmaps = null;
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
heightmapsMap = new HashMap<>();
|
||||
heightmapsCount = buf.readVarInt();
|
||||
for (int i = 0; i < heightmapsCount; i++) {
|
||||
int key = buf.readVarInt();
|
||||
@@ -198,8 +196,9 @@ public class PacketConsumers {
|
||||
buf.writeVarInt(event.packetID());
|
||||
buf.writeInt(chunkX);
|
||||
buf.writeInt(chunkZ);
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
buf.writeVarInt(heightmapsCount);
|
||||
assert heightmapsMap != null;
|
||||
for (Map.Entry<Integer, long[]> entry : heightmapsMap.entrySet()) {
|
||||
buf.writeVarInt(entry.getKey());
|
||||
buf.writeLongArray(entry.getValue());
|
||||
@@ -1239,7 +1238,7 @@ public class PacketConsumers {
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
String name = (String) Reflections.field$ServerboundHelloPacket$name.get(packet);
|
||||
player.setName(name);
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
UUID uuid = (UUID) Reflections.field$ServerboundHelloPacket$uuid.get(packet);
|
||||
player.setUUID(uuid);
|
||||
} else {
|
||||
@@ -1287,7 +1286,7 @@ public class PacketConsumers {
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
player.clearView();
|
||||
Object dimensionKey;
|
||||
if (!VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (!VersionHelper.isOrAbove1_20_2()) {
|
||||
dimensionKey = Reflections.field$ClientboundRespawnPacket$dimension.get(packet);
|
||||
} else {
|
||||
Object commonInfo = Reflections.field$ClientboundRespawnPacket$commonPlayerSpawnInfo.get(packet);
|
||||
@@ -1312,7 +1311,7 @@ public class PacketConsumers {
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
player.setConnectionState(ConnectionState.PLAY);
|
||||
Object dimensionKey;
|
||||
if (!VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (!VersionHelper.isOrAbove1_20_2()) {
|
||||
if (BukkitNetworkManager.hasViaVersion()) {
|
||||
user.setProtocolVersion(CraftEngine.instance().compatibilityManager().getPlayerProtocolVersion(player.uuid()));
|
||||
}
|
||||
@@ -1340,7 +1339,7 @@ public class PacketConsumers {
|
||||
// When the hotbar is full, the latest creative mode inventory can only be accessed when the player opens the inventory screen. Currently, it is not worth further handling this issue.
|
||||
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> SET_CREATIVE_SLOT = (user, event, packet) -> {
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_21_4()) return;
|
||||
if (VersionHelper.isOrAbove1_21_4()) return;
|
||||
if (!user.isOnline()) return;
|
||||
BukkitServerPlayer player = (BukkitServerPlayer) user;
|
||||
if (VersionHelper.isFolia()) {
|
||||
@@ -1363,7 +1362,7 @@ public class PacketConsumers {
|
||||
Player bukkitPlayer = player.platformPlayer();
|
||||
if (bukkitPlayer == null) return;
|
||||
if (bukkitPlayer.getGameMode() != GameMode.CREATIVE) return;
|
||||
int slot = VersionHelper.isVersionNewerThan1_20_5() ? Reflections.field$ServerboundSetCreativeModeSlotPacket$slotNum.getShort(packet) : Reflections.field$ServerboundSetCreativeModeSlotPacket$slotNum.getInt(packet);
|
||||
int slot = VersionHelper.isOrAbove1_20_5() ? Reflections.field$ServerboundSetCreativeModeSlotPacket$slotNum.getShort(packet) : Reflections.field$ServerboundSetCreativeModeSlotPacket$slotNum.getInt(packet);
|
||||
if (slot < 36 || slot > 44) return;
|
||||
ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(Reflections.field$ServerboundSetCreativeModeSlotPacket$itemStack.get(packet));
|
||||
if (ItemUtils.isEmpty(item)) return;
|
||||
@@ -1935,7 +1934,7 @@ public class PacketConsumers {
|
||||
|
||||
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> CUSTOM_PAYLOAD = (user, event, packet) -> {
|
||||
try {
|
||||
if (!VersionHelper.isVersionNewerThan1_20_5()) return;
|
||||
if (!VersionHelper.isOrAbove1_20_5()) return;
|
||||
Object payload = Reflections.field$ServerboundCustomPayloadPacket$payload.get(packet);
|
||||
if (payload.getClass().equals(Reflections.clazz$DiscardedPayload)) {
|
||||
Object type = Reflections.method$CustomPacketPayload$type.invoke(payload);
|
||||
@@ -2217,7 +2216,7 @@ public class PacketConsumers {
|
||||
|
||||
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> RESOURCE_PACK_PUSH = (user, event, packet) -> {
|
||||
try {
|
||||
if (!VersionHelper.isVersionNewerThan1_20_2()) return;
|
||||
if (!VersionHelper.isOrAbove1_20_2()) return;
|
||||
// we should only handle fake urls
|
||||
String url = FastNMS.INSTANCE.field$ClientboundResourcePackPushPacket$url(packet);
|
||||
if (!url.equals(BukkitPackManager.FAKE_URL)) {
|
||||
|
||||
@@ -15,7 +15,7 @@ public class PacketIdFinder {
|
||||
|
||||
static {
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
Object packetReport = Reflections.constructor$PacketReport.newInstance((Object) null);
|
||||
JsonElement jsonElement = (JsonElement) Reflections.method$PacketReport$serializePackets.invoke(packetReport);
|
||||
var play = jsonElement.getAsJsonObject().get("play");
|
||||
@@ -26,7 +26,7 @@ public class PacketIdFinder {
|
||||
ids.put(entry2.getKey(), entry2.getValue().getAsJsonObject().get("protocol_id").getAsInt());
|
||||
}
|
||||
}
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
} else if (VersionHelper.isOrAbove1_20_5()) {
|
||||
gamePacketIdsByName.putAll(FastNMS.INSTANCE.method$getGamePacketIdsByName());
|
||||
} else {
|
||||
gamePacketIdsByClazz.putAll(FastNMS.INSTANCE.method$getGamePacketIdsByClazz());
|
||||
|
||||
@@ -415,7 +415,7 @@ public class BukkitServerPlayer extends Player {
|
||||
}
|
||||
this.clientSideCanBreak = canBreak;
|
||||
if (canBreak) {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object serverPlayer = serverPlayer();
|
||||
Object attributeInstance = Reflections.method$ServerPlayer$getAttribute.invoke(serverPlayer, Reflections.instance$Holder$Attribute$block_break_speed);
|
||||
Object newPacket = Reflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityID(), Lists.newArrayList(attributeInstance));
|
||||
@@ -425,8 +425,8 @@ public class BukkitServerPlayer extends Player {
|
||||
resetEffect(Reflections.instance$MobEffecr$haste);
|
||||
}
|
||||
} else {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
Object attributeModifier = VersionHelper.isVersionNewerThan1_21() ?
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object attributeModifier = VersionHelper.isOrAbove1_21() ?
|
||||
Reflections.constructor$AttributeModifier.newInstance(KeyUtils.toResourceLocation("craftengine", "custom_hardness"), -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE) :
|
||||
Reflections.constructor$AttributeModifier.newInstance(UUID.randomUUID(), "craftengine:custom_hardness", -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE);
|
||||
Object attributeSnapshot = Reflections.constructor$ClientboundUpdateAttributesPacket$AttributeSnapshot.newInstance(Reflections.instance$Holder$Attribute$block_break_speed, 1d, Lists.newArrayList(attributeModifier));
|
||||
@@ -520,7 +520,7 @@ public class BukkitServerPlayer extends Player {
|
||||
// creative mode + invalid item in hand
|
||||
if (canInstabuild() && (itemMaterial == Material.DEBUG_STICK
|
||||
|| itemMaterial == Material.TRIDENT
|
||||
|| (VersionHelper.isVersionNewerThan1_20_5() && itemMaterial == MaterialUtils.MACE)
|
||||
|| (VersionHelper.isOrAbove1_20_5() && itemMaterial == MaterialUtils.MACE)
|
||||
|| item.is(ItemTags.SWORDS))) {
|
||||
return;
|
||||
}
|
||||
@@ -757,7 +757,7 @@ public class BukkitServerPlayer extends Player {
|
||||
|
||||
@Override
|
||||
public void addResourcePackUUID(UUID uuid) {
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
this.resourcePackUUID.add(uuid);
|
||||
}
|
||||
}
|
||||
@@ -790,7 +790,7 @@ public class BukkitServerPlayer extends Player {
|
||||
|
||||
@Override
|
||||
public void unloadCurrentResourcePack() {
|
||||
if (!VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (!VersionHelper.isOrAbove1_20_3()) {
|
||||
return;
|
||||
}
|
||||
if (decoderState() == ConnectionState.PLAY && !this.resourcePackUUID.isEmpty()) {
|
||||
|
||||
@@ -33,7 +33,7 @@ public class BukkitSoundManager extends AbstractSoundManager {
|
||||
Object soundId = KeyUtils.toResourceLocation(jukeboxSong.sound());
|
||||
Object song = Reflections.method$Registry$get.invoke(Reflections.instance$InternalRegistries$JUKEBOX_SONG, resourceLocation);
|
||||
|
||||
Object soundEvent = VersionHelper.isVersionNewerThan1_21_2() ?
|
||||
Object soundEvent = VersionHelper.isOrAbove1_21_2() ?
|
||||
Reflections.constructor$SoundEvent.newInstance(soundId, Optional.of(jukeboxSong.range())) :
|
||||
Reflections.constructor$SoundEvent.newInstance(soundId, jukeboxSong.range(), false);
|
||||
Object soundHolder = Reflections.method$Holder$direct.invoke(null, soundEvent);
|
||||
|
||||
@@ -11,8 +11,8 @@ public class EntityDataUtils {
|
||||
private static final int USE_DEFAULT_BACKGROUND = 0x04; // 4
|
||||
private static final int LEFT_ALIGNMENT = 0x08; // 8
|
||||
private static final int RIGHT_ALIGNMENT = 0x10; // 16
|
||||
public static final int BLOCK_STATE_DATA_ID = VersionHelper.isVersionNewerThan1_20_2() ? 23 : 22;
|
||||
public static final int TEXT_DATA_ID = VersionHelper.isVersionNewerThan1_20_2() ? 23 : 22;
|
||||
public static final int BLOCK_STATE_DATA_ID = VersionHelper.isOrAbove1_20_2() ? 23 : 22;
|
||||
public static final int TEXT_DATA_ID = VersionHelper.isOrAbove1_20_2() ? 23 : 22;
|
||||
public static final int CUSTOM_NAME_DATA_ID = 2;
|
||||
|
||||
public static byte encodeTextDisplayMask(boolean hasShadow, boolean isSeeThrough, boolean useDefaultBackground, int alignment) {
|
||||
|
||||
@@ -27,7 +27,7 @@ public class EntityUtils {
|
||||
}
|
||||
|
||||
public static Entity spawnEntity(World world, Location loc, EntityType type, Consumer<Entity> function) {
|
||||
if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
if (VersionHelper.isOrAbove1_20_2()) {
|
||||
return world.spawnEntity(loc, type, CreatureSpawnEvent.SpawnReason.CUSTOM, function);
|
||||
} else {
|
||||
return LegacyEntityUtils.spawnEntity(world, loc, type, function);
|
||||
|
||||
@@ -15,9 +15,9 @@ public class RecipeUtils {
|
||||
public static List<Object> getIngredientsFromShapedRecipe(Object recipe) {
|
||||
List<Object> ingredients = new ArrayList<>();
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
Object pattern = Reflections.field$1_20_3$ShapedRecipe$pattern.get(recipe);
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
List<Optional<Object>> optionals = (List<Optional<Object>>) Reflections.field$ShapedRecipePattern$ingredients1_21_2.get(pattern);
|
||||
for (Optional<Object> optional : optionals) {
|
||||
optional.ifPresent(ingredients::add);
|
||||
|
||||
@@ -341,7 +341,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$SoundEvent = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_2() ?
|
||||
VersionHelper.isOrAbove1_21_2() ?
|
||||
ReflectionUtils.getConstructor(
|
||||
clazz$SoundEvent, clazz$ResourceLocation, Optional.class
|
||||
) :
|
||||
@@ -377,7 +377,7 @@ public class Reflections {
|
||||
public static final Object instance$MinecraftRegistry;
|
||||
|
||||
static {
|
||||
if (VersionHelper.isVersionNewerThan1_20()) {
|
||||
if (VersionHelper.isOrAbove1_20()) {
|
||||
try {
|
||||
Method method = requireNonNull(ReflectionUtils.getMethod(clazz$CraftRegistry, new String[]{"getMinecraftRegistry"}));
|
||||
instance$MinecraftRegistry = method.invoke(null);
|
||||
@@ -460,7 +460,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ServerCommonPacketListenerImpl$connection = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_2() ?
|
||||
VersionHelper.isOrAbove1_20_2() ?
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ServerCommonPacketListenerImpl, clazz$Connection, 0
|
||||
) :
|
||||
@@ -493,7 +493,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$Connection$sendPacketImmediate = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_2() ?
|
||||
VersionHelper.isOrAbove1_20_2() ?
|
||||
ReflectionUtils.getDeclaredMethod(
|
||||
clazz$Connection, void.class, new String[] {"sendPacket", "b"}, clazz$Packet, clazz$PacketSendListener, boolean.class
|
||||
) :
|
||||
@@ -885,10 +885,10 @@ public class Reflections {
|
||||
}
|
||||
|
||||
public static final Constructor<?> constructor$AttributeModifier = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getConstructor(clazz$AttributeModifier, String.class, double.class, clazz$AttributeModifier$Operation):
|
||||
(
|
||||
!VersionHelper.isVersionNewerThan1_21() ?
|
||||
!VersionHelper.isOrAbove1_21() ?
|
||||
ReflectionUtils.getConstructor(clazz$AttributeModifier, UUID.class, String.class, double.class, clazz$AttributeModifier$Operation) :
|
||||
(
|
||||
ReflectionUtils.getConstructor(clazz$AttributeModifier, clazz$ResourceLocation, double.class, clazz$AttributeModifier$Operation)
|
||||
@@ -981,7 +981,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$ClientboundUpdateAttributesPacket$AttributeSnapshot = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getConstructor(
|
||||
clazz$ClientboundUpdateAttributesPacket$AttributeSnapshot, clazz$Holder, double.class, Collection.class
|
||||
) :
|
||||
@@ -1290,7 +1290,7 @@ public class Reflections {
|
||||
public static final Field field$ClientboundSetPlayerTeamPacket$Parameters$nametagVisibility = requireNonNull(
|
||||
ReflectionUtils.getInstanceDeclaredField(
|
||||
clazz$ClientboundSetPlayerTeamPacket$Parameters,
|
||||
VersionHelper.isVersionNewerThan1_21_5() ? clazz$Team$Visibility : String.class,
|
||||
VersionHelper.isOrAbove1_21_5() ? clazz$Team$Visibility : String.class,
|
||||
0
|
||||
)
|
||||
);
|
||||
@@ -2158,7 +2158,7 @@ public class Reflections {
|
||||
registries$Item = field.get(null);
|
||||
} else if (type == clazz$Fluid) {
|
||||
registries$Fluid = field.get(null);
|
||||
} else if (VersionHelper.isVersionNewerThan1_21() && type == clazz$JukeboxSong) {
|
||||
} else if (VersionHelper.isOrAbove1_21() && type == clazz$JukeboxSong) {
|
||||
registries$JukeboxSong = field.get(null);
|
||||
}
|
||||
}
|
||||
@@ -2586,7 +2586,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$ClientboundLevelParticlesPacket = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getDeclaredConstructor(clazz$ClientboundLevelParticlesPacket, clazz$RegistryFriendlyByteBuf) :
|
||||
ReflectionUtils.getConstructor(clazz$ClientboundLevelParticlesPacket, clazz$FriendlyByteBuf)
|
||||
);
|
||||
@@ -2821,7 +2821,7 @@ public class Reflections {
|
||||
}
|
||||
|
||||
public static final Method method$ChunkHolder$sectionLightChanged = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_2() ?
|
||||
VersionHelper.isOrAbove1_21_2() ?
|
||||
ReflectionUtils.getMethod(clazz$ChunkHolder, boolean.class, clazz$LightLayer, int.class) :
|
||||
ReflectionUtils.getMethod(clazz$ChunkHolder, void.class, clazz$LightLayer, int.class)
|
||||
);
|
||||
@@ -2881,18 +2881,18 @@ public class Reflections {
|
||||
|
||||
static {
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
Object block_break_speed = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isVersionNewerThan1_21_2() ? "block_break_speed" : "player.block_break_speed");
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object block_break_speed = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isOrAbove1_21_2() ? "block_break_speed" : "player.block_break_speed");
|
||||
@SuppressWarnings("unchecked")
|
||||
Optional<Object> breakSpeedHolder = (Optional<Object>) method$Registry$getHolder0.invoke(instance$BuiltInRegistries$ATTRIBUTE, block_break_speed);
|
||||
instance$Holder$Attribute$block_break_speed = breakSpeedHolder.orElse(null);
|
||||
|
||||
Object block_interaction_range = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isVersionNewerThan1_21_2() ? "block_interaction_range" : "player.block_interaction_range");
|
||||
Object block_interaction_range = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isOrAbove1_21_2() ? "block_interaction_range" : "player.block_interaction_range");
|
||||
@SuppressWarnings("unchecked")
|
||||
Optional<Object> blockInteractionRangeHolder = (Optional<Object>) method$Registry$getHolder0.invoke(instance$BuiltInRegistries$ATTRIBUTE, block_interaction_range);
|
||||
instance$Holder$Attribute$block_interaction_range = blockInteractionRangeHolder.orElse(null);
|
||||
|
||||
Object scale = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isVersionNewerThan1_21_2() ? "scale" : "generic.scale");
|
||||
Object scale = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", VersionHelper.isOrAbove1_21_2() ? "scale" : "generic.scale");
|
||||
@SuppressWarnings("unchecked")
|
||||
Optional<Object> scaleHolder = (Optional<Object>) method$Registry$getHolder0.invoke(instance$BuiltInRegistries$ATTRIBUTE, scale);
|
||||
instance$Holder$Attribute$scale = scaleHolder.orElse(null);
|
||||
@@ -2907,7 +2907,7 @@ public class Reflections {
|
||||
}
|
||||
|
||||
public static final Method method$ServerPlayer$getAttribute = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getMethod(clazz$ServerPlayer, clazz$AttributeInstance, clazz$Holder) :
|
||||
ReflectionUtils.getMethod(clazz$ServerPlayer, clazz$AttributeInstance, clazz$Attribute)
|
||||
);
|
||||
@@ -3271,7 +3271,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$ClientboundUpdateMobEffectPacket = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getConstructor(
|
||||
clazz$ClientboundUpdateMobEffectPacket, int.class, clazz$MobEffectInstance
|
||||
) :
|
||||
@@ -3287,7 +3287,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ClientboundUpdateMobEffectPacket$effect = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getInstanceDeclaredField(
|
||||
clazz$ClientboundUpdateMobEffectPacket, clazz$MobEffect, 0
|
||||
) :
|
||||
@@ -3297,7 +3297,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ClientboundUpdateMobEffectPacket$amplifier = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getInstanceDeclaredField(
|
||||
clazz$ClientboundUpdateMobEffectPacket, byte.class, 0
|
||||
) :
|
||||
@@ -3307,7 +3307,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ClientboundUpdateMobEffectPacket$duration = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getInstanceDeclaredField(
|
||||
clazz$ClientboundUpdateMobEffectPacket, int.class, 1
|
||||
) :
|
||||
@@ -3317,7 +3317,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ClientboundUpdateMobEffectPacket$flags = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getInstanceDeclaredField(
|
||||
clazz$ClientboundUpdateMobEffectPacket, byte.class, 1
|
||||
) :
|
||||
@@ -3327,7 +3327,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$ServerPlayer$getEffect = requireNonNull(
|
||||
!VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
!VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getMethod(
|
||||
clazz$ServerPlayer, clazz$MobEffectInstance, clazz$MobEffect
|
||||
) :
|
||||
@@ -3371,7 +3371,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ServerboundSetCreativeModeSlotPacket$slotNum = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ServerboundSetCreativeModeSlotPacket, short.class, 0
|
||||
) :
|
||||
@@ -3483,7 +3483,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$BlockBehaviour$updateShape = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_2() ?
|
||||
VersionHelper.isOrAbove1_21_2() ?
|
||||
ReflectionUtils.getDeclaredMethod(
|
||||
clazz$BlockBehaviour, clazz$BlockState, clazz$BlockState, clazz$LevelReader, clazz$ScheduledTickAccess, clazz$BlockPos, clazz$Direction, clazz$BlockPos, clazz$BlockState, clazz$RandomSource
|
||||
) :
|
||||
@@ -3742,7 +3742,7 @@ public class Reflections {
|
||||
// 1.20.2+
|
||||
public static final Field field$CommonPlayerSpawnInfo$dimension = Optional.ofNullable(clazz$CommonPlayerSpawnInfo)
|
||||
.map(it -> {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
return ReflectionUtils.getDeclaredField(it, clazz$ResourceKey, 0);
|
||||
} else {
|
||||
return ReflectionUtils.getDeclaredField(it, clazz$ResourceKey, 1);
|
||||
@@ -3791,7 +3791,7 @@ public class Reflections {
|
||||
instance$EntityType$SHULKER = Reflections.method$Registry$get.invoke(Reflections.instance$BuiltInRegistries$ENTITY_TYPE, shulker);
|
||||
Object armorStand = FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", "armor_stand");
|
||||
instance$EntityType$ARMOR_STAND = Reflections.method$Registry$get.invoke(Reflections.instance$BuiltInRegistries$ENTITY_TYPE, armorStand);
|
||||
Object oakBoat = VersionHelper.isVersionNewerThan1_21_2() ? FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", "oak_boat") : FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", "boat");
|
||||
Object oakBoat = VersionHelper.isOrAbove1_21_2() ? FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", "oak_boat") : FastNMS.INSTANCE.method$ResourceLocation$fromNamespaceAndPath("minecraft", "boat");
|
||||
instance$EntityType$OAK_BOAT = Reflections.method$Registry$get.invoke(Reflections.instance$BuiltInRegistries$ENTITY_TYPE, oakBoat);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
@@ -4077,7 +4077,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$CraftEventFactory$callBlockPlaceEvent = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5()
|
||||
VersionHelper.isOrAbove1_21_5()
|
||||
? ReflectionUtils.getStaticMethod(clazz$CraftEventFactory, BlockPlaceEvent.class, clazz$ServerLevel, clazz$Player, clazz$InteractionHand, BlockState.class, clazz$BlockPos)
|
||||
: ReflectionUtils.getStaticMethod(clazz$CraftEventFactory, BlockPlaceEvent.class, clazz$ServerLevel, clazz$Player, clazz$InteractionHand, BlockState.class, int.class, int.class, int.class)
|
||||
);
|
||||
@@ -4602,7 +4602,7 @@ public class Reflections {
|
||||
|
||||
static {
|
||||
Method method$RecipeManager$byKey0 = null;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
for (Method method : clazz$RecipeManager.getMethods()) {
|
||||
if (method.getParameterCount() == 1 && method.getParameterTypes()[0] == clazz$ResourceKey) {
|
||||
if (method.getReturnType() == Optional.class && method.getGenericReturnType() instanceof ParameterizedType type) {
|
||||
@@ -4613,7 +4613,7 @@ public class Reflections {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_2()) {
|
||||
} else if (VersionHelper.isOrAbove1_20_2()) {
|
||||
for (Method method : clazz$RecipeManager.getMethods()) {
|
||||
if (method.getParameterCount() == 1 && method.getParameterTypes()[0] == clazz$ResourceLocation) {
|
||||
if (method.getReturnType() == Optional.class && method.getGenericReturnType() instanceof ParameterizedType type) {
|
||||
@@ -4924,7 +4924,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$BonemealableBlock$isValidBonemealTarget = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_2() ?
|
||||
VersionHelper.isOrAbove1_20_2() ?
|
||||
ReflectionUtils.getMethod(
|
||||
clazz$BonemealableBlock, boolean.class, clazz$LevelReader, clazz$BlockPos, clazz$BlockState
|
||||
) :
|
||||
@@ -4977,7 +4977,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$ServerLevel$levelEvent = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5()
|
||||
VersionHelper.isOrAbove1_21_5()
|
||||
? ReflectionUtils.getMethod(clazz$ServerLevel, void.class, clazz$Entity, int.class, clazz$BlockPos, int.class)
|
||||
: ReflectionUtils.getMethod(clazz$ServerLevel, void.class, clazz$Player, int.class, clazz$BlockPos, int.class)
|
||||
);
|
||||
@@ -5110,11 +5110,11 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$ClientboundResourcePackPushPacket = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5() ?
|
||||
VersionHelper.isOrAbove1_20_5() ?
|
||||
ReflectionUtils.getConstructor(
|
||||
clazz$ClientboundResourcePackPushPacket, UUID.class, String.class, String.class, boolean.class, Optional.class
|
||||
) :
|
||||
VersionHelper.isVersionNewerThan1_20_3() ?
|
||||
VersionHelper.isOrAbove1_20_3() ?
|
||||
ReflectionUtils.getConstructor(
|
||||
clazz$ClientboundResourcePackPushPacket, UUID.class, String.class, String.class, boolean.class, clazz$Component
|
||||
) :
|
||||
@@ -5276,17 +5276,17 @@ public class Reflections {
|
||||
.orElse(null);
|
||||
|
||||
public static final Constructor<?> constructor$SmithingTransformRecipe = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5()
|
||||
VersionHelper.isOrAbove1_21_5()
|
||||
? ReflectionUtils.getConstructor(clazz$SmithingTransformRecipe, Optional.class, clazz$Ingredient, Optional.class, clazz$TransmuteResult)
|
||||
: VersionHelper.isVersionNewerThan1_21_2()
|
||||
: VersionHelper.isOrAbove1_21_2()
|
||||
? ReflectionUtils.getConstructor(clazz$SmithingTransformRecipe, Optional.class, Optional.class, Optional.class, clazz$ItemStack)
|
||||
: VersionHelper.isVersionNewerThan1_20_2()
|
||||
: VersionHelper.isOrAbove1_20_2()
|
||||
? ReflectionUtils.getConstructor(clazz$SmithingTransformRecipe, clazz$Ingredient, clazz$Ingredient, clazz$Ingredient, clazz$ItemStack)
|
||||
: ReflectionUtils.getConstructor(clazz$SmithingTransformRecipe, clazz$ResourceLocation, clazz$Ingredient, clazz$Ingredient, clazz$Ingredient, clazz$ItemStack)
|
||||
);
|
||||
|
||||
public static final Method method$RecipeManager$addRecipe = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_2() ?
|
||||
VersionHelper.isOrAbove1_20_2() ?
|
||||
ReflectionUtils.getMethod(clazz$RecipeManager, void.class, clazz$RecipeHolder) :
|
||||
ReflectionUtils.getMethod(clazz$RecipeManager, void.class, clazz$Recipe)
|
||||
);
|
||||
@@ -5588,9 +5588,9 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$SimpleWaterloggedBlock$canPlaceLiquid = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5()
|
||||
VersionHelper.isOrAbove1_21_5()
|
||||
? ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, boolean.class, clazz$LivingEntity, clazz$BlockGetter, clazz$BlockPos, clazz$BlockState, clazz$Fluid)
|
||||
: VersionHelper.isVersionNewerThan1_20_2()
|
||||
: VersionHelper.isOrAbove1_20_2()
|
||||
? ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, boolean.class, clazz$Player, clazz$BlockGetter, clazz$BlockPos, clazz$BlockState, clazz$Fluid)
|
||||
: ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, boolean.class, clazz$BlockGetter, clazz$BlockPos, clazz$BlockState, clazz$Fluid)
|
||||
);
|
||||
@@ -5602,9 +5602,9 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$SimpleWaterloggedBlock$pickupBlock = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5()
|
||||
VersionHelper.isOrAbove1_21_5()
|
||||
? ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, clazz$ItemStack, clazz$LivingEntity, clazz$LevelAccessor, clazz$BlockPos, clazz$BlockState)
|
||||
: VersionHelper.isVersionNewerThan1_20_2()
|
||||
: VersionHelper.isOrAbove1_20_2()
|
||||
? ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, clazz$ItemStack, clazz$Player, clazz$LevelAccessor, clazz$BlockPos, clazz$BlockState)
|
||||
: ReflectionUtils.getMethod(clazz$SimpleWaterloggedBlock, clazz$ItemStack, clazz$LevelAccessor, clazz$BlockPos, clazz$BlockState)
|
||||
);
|
||||
@@ -5797,7 +5797,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$BlockBehaviour$getDescriptionId = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_2()
|
||||
VersionHelper.isOrAbove1_21_2()
|
||||
? ReflectionUtils.getMethod(clazz$BlockBehaviour, String.class)
|
||||
: ReflectionUtils.getMethod(clazz$Block, String.class)
|
||||
);
|
||||
@@ -5869,7 +5869,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Method method$CraftEventFactory$handleBlockGrowEvent = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_21_5() ?
|
||||
VersionHelper.isOrAbove1_21_5() ?
|
||||
ReflectionUtils.getStaticMethod(
|
||||
clazz$CraftEventFactory, boolean.class, clazz$Level, clazz$BlockPos, clazz$BlockState, int.class
|
||||
) :
|
||||
@@ -5967,7 +5967,7 @@ public class Reflections {
|
||||
instance$Pose$SNIFFING = instance$Poses[12];
|
||||
instance$Pose$EMERGING = instance$Poses[13];
|
||||
instance$Pose$DIGGING = instance$Poses[14];
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
instance$Pose$SLIDING = instance$Poses[15];
|
||||
instance$Pose$SHOOTING = instance$Poses[16];
|
||||
instance$Pose$INHALING = instance$Poses[17];
|
||||
@@ -6019,13 +6019,13 @@ public class Reflections {
|
||||
// );
|
||||
|
||||
public static final Method method$Entity$canBeCollidedWith = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5()
|
||||
VersionHelper.isOrAbove1_20_5()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, boolean.class, new String[]{"canBeCollidedWith"})
|
||||
: VersionHelper.isVersionNewerThan1_20_3()
|
||||
: VersionHelper.isOrAbove1_20_3()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, boolean.class, new String[]{"bz"})
|
||||
: VersionHelper.isVersionNewerThan1_20_2()
|
||||
: VersionHelper.isOrAbove1_20_2()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, boolean.class, new String[]{"bx"})
|
||||
: VersionHelper.isVersionNewerThan1_20()
|
||||
: VersionHelper.isOrAbove1_20()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, boolean.class, new String[]{"bu"})
|
||||
: ReflectionUtils.getMethod(clazz$Entity, boolean.class, new String[]{"canBeCollidedWith", "bu", "bx", "bz"})
|
||||
);
|
||||
@@ -6039,13 +6039,13 @@ public class Reflections {
|
||||
|
||||
@Deprecated
|
||||
public static final Method method$Entity$getId = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_5()
|
||||
VersionHelper.isOrAbove1_20_5()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, int.class, new String[]{"getId"})
|
||||
: VersionHelper.isVersionNewerThan1_20_3()
|
||||
: VersionHelper.isOrAbove1_20_3()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, int.class, new String[]{"aj"})
|
||||
: VersionHelper.isVersionNewerThan1_20_2()
|
||||
: VersionHelper.isOrAbove1_20_2()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, int.class, new String[]{"ah"})
|
||||
: VersionHelper.isVersionNewerThan1_20()
|
||||
: VersionHelper.isOrAbove1_20()
|
||||
? ReflectionUtils.getMethod(clazz$Entity, int.class, new String[]{"af"})
|
||||
: ReflectionUtils.getMethod(clazz$Entity, int.class, new String[]{"getId", "aj", "ah", "af"})
|
||||
);
|
||||
@@ -6204,7 +6204,7 @@ public class Reflections {
|
||||
|
||||
public static final Method method$Level$moonrise$getEntityLookup = requireNonNull(
|
||||
ReflectionUtils.getMethod(
|
||||
VersionHelper.isVersionNewerThan1_21() ? clazz$Level : clazz$ServerLevel,
|
||||
VersionHelper.isOrAbove1_21() ? clazz$Level : clazz$ServerLevel,
|
||||
clazz$EntityLookup
|
||||
)
|
||||
);
|
||||
@@ -6329,7 +6329,7 @@ public class Reflections {
|
||||
// 1.21.2+
|
||||
static {
|
||||
try {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
Object[] values = (Object[]) method$ParticleStatus$values.invoke(null);
|
||||
instance$ParticleStatus$ALL = values[0];
|
||||
instance$ParticleStatus$DECREASED = values[1];
|
||||
@@ -6455,7 +6455,7 @@ public class Reflections {
|
||||
);
|
||||
|
||||
public static final Field field$ServerboundHelloPacket$uuid = requireNonNull(
|
||||
VersionHelper.isVersionNewerThan1_20_2() ?
|
||||
VersionHelper.isOrAbove1_20_2() ?
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ServerboundHelloPacket, UUID.class, 0
|
||||
) :
|
||||
@@ -6472,7 +6472,7 @@ public class Reflections {
|
||||
public static final Field field$ClientboundResourcePackPushPacket$prompt = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ClientboundResourcePackPushPacket,
|
||||
VersionHelper.isVersionNewerThan1_20_5() ? Optional.class : clazz$Component,
|
||||
VersionHelper.isOrAbove1_20_5() ? Optional.class : clazz$Component,
|
||||
0
|
||||
)
|
||||
);
|
||||
@@ -6515,7 +6515,7 @@ public class Reflections {
|
||||
instance$ServerboundResourcePackPacket$Action$DECLINED = values[1];
|
||||
instance$ServerboundResourcePackPacket$Action$FAILED_DOWNLOAD = values[2];
|
||||
instance$ServerboundResourcePackPacket$Action$ACCEPTED = values[3];
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) {
|
||||
if (VersionHelper.isOrAbove1_20_3()) {
|
||||
instance$ServerboundResourcePackPacket$Action$DOWNLOADED = values[4];
|
||||
instance$ServerboundResourcePackPacket$Action$INVALID_URL = values[5];
|
||||
instance$ServerboundResourcePackPacket$Action$FAILED_RELOAD = values[6];
|
||||
@@ -6552,7 +6552,7 @@ public class Reflections {
|
||||
|
||||
public static final Field field$ClientIntentionPacket$protocolVersion = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$ClientIntentionPacket, int.class, VersionHelper.isVersionNewerThan1_20_2() ? 0 : 1
|
||||
clazz$ClientIntentionPacket, int.class, VersionHelper.isOrAbove1_20_2() ? 0 : 1
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ public class BukkitWorld implements World {
|
||||
public void dropItemNaturally(Vec3d location, Item<?> item) {
|
||||
ItemStack itemStack = (ItemStack) item.load();
|
||||
if (ItemUtils.isEmpty(itemStack)) return;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
platformWorld().dropItemNaturally(new Location(null, location.x(), location.y(), location.z()), (ItemStack) item.getItem());
|
||||
} else {
|
||||
platformWorld().dropItemNaturally(new Location(null, location.x() - 0.5, location.y() - 0.5, location.z() - 0.5), (ItemStack) item.getItem());
|
||||
|
||||
@@ -229,7 +229,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
|
||||
String pattern = data.get("pattern").toString().toLowerCase(Locale.ENGLISH);
|
||||
return new TrimModifier<>(material, pattern);
|
||||
}, "trim");
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
registerDataFunction((obj) -> {
|
||||
Map<String, Object> data = MiscUtils.castToMap(obj, false);
|
||||
return new ComponentModifier<>(data);
|
||||
@@ -239,19 +239,19 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
|
||||
return new RemoveComponentModifier<>(data);
|
||||
}, "remove-components", "remove-component");
|
||||
}
|
||||
if (VersionHelper.isVersionNewerThan1_21()) {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
registerDataFunction((obj) -> {
|
||||
String song = obj.toString();
|
||||
return new JukeboxSongModifier<>(new JukeboxPlayable(song, true));
|
||||
}, "jukebox-playable");
|
||||
}
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
registerDataFunction((obj) -> {
|
||||
String id = obj.toString();
|
||||
return new TooltipStyleModifier<>(Key.of(id));
|
||||
}, "tooltip-style");
|
||||
}
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
registerDataFunction((obj) -> {
|
||||
Map<String, Object> data = MiscUtils.castToMap(obj, false);
|
||||
return new EquippableModifier<>(EquipmentData.fromMap(data));
|
||||
|
||||
@@ -104,7 +104,7 @@ public class EquipmentData {
|
||||
map.put("dispensable", this.dispensable);
|
||||
map.put("swappable", this.swappable);
|
||||
map.put("damage_on_hurt", this.damageOnHurt);
|
||||
if (VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
map.put("equip_on_interact", this.equipOnInteract);
|
||||
}
|
||||
if (this.cameraOverlay != null) {
|
||||
|
||||
@@ -25,7 +25,7 @@ public class ItemSettings {
|
||||
|
||||
public <I> List<ItemDataModifier<I>> modifiers() {
|
||||
ArrayList<ItemDataModifier<I>> modifiers = new ArrayList<>();
|
||||
if (VersionHelper.isVersionNewerThan1_21_2() && this.equipment != null && this.equipment.modernData() != null) modifiers.add(new EquippableModifier<>(this.equipment.modernData()));
|
||||
if (VersionHelper.isOrAbove1_21_2() && this.equipment != null && this.equipment.modernData() != null) modifiers.add(new EquippableModifier<>(this.equipment.modernData()));
|
||||
// TODO 1.20 leather armor
|
||||
return modifiers;
|
||||
}
|
||||
@@ -172,7 +172,7 @@ public class ItemSettings {
|
||||
registerFactory("equippable", (value -> {
|
||||
Map<String, Object> args = MiscUtils.castToMap(value, false);
|
||||
EquipmentData data;
|
||||
if (VersionHelper.isVersionNewerThan1_21_2() && args.containsKey("slot")) data = EquipmentData.fromMap(args);
|
||||
if (VersionHelper.isOrAbove1_21_2() && args.containsKey("slot")) data = EquipmentData.fromMap(args);
|
||||
else data = null;
|
||||
EquipmentGeneration equipment = new EquipmentGeneration(
|
||||
EquipmentGeneration.Layer.fromConfig(args.get("humanoid")),
|
||||
|
||||
@@ -40,9 +40,9 @@ public abstract class AbstractRecipeManager<T> implements RecipeManager<T> {
|
||||
}
|
||||
|
||||
private VanillaRecipeReader initVanillaRecipeReader() {
|
||||
if (VersionHelper.isVersionNewerThan1_21_2()) {
|
||||
if (VersionHelper.isOrAbove1_21_2()) {
|
||||
return new VanillaRecipeReader1_21_2();
|
||||
} else if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
} else if (VersionHelper.isOrAbove1_20_5()) {
|
||||
return new VanillaRecipeReader1_20_5();
|
||||
} else {
|
||||
return new VanillaRecipeReader1_20();
|
||||
|
||||
@@ -161,7 +161,7 @@ public class CustomSmithingTransformRecipe<T> implements Recipe<T> {
|
||||
public static final Key KEEP_TAGS = Key.of("craftengine:keep_tags");
|
||||
|
||||
static {
|
||||
if (VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
register(KEEP_COMPONENTS, KeepComponents.FACTORY);
|
||||
} else {
|
||||
register(KEEP_TAGS, KeepTags.FACTORY);
|
||||
|
||||
@@ -47,7 +47,7 @@ public abstract class AbstractSoundManager implements SoundManager {
|
||||
|
||||
@Override
|
||||
public void runDelayedSyncTasks() {
|
||||
if (!VersionHelper.isVersionNewerThan1_21()) return;
|
||||
if (!VersionHelper.isOrAbove1_21()) return;
|
||||
this.registerSongs(this.songs);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ public class AdventureHelper {
|
||||
this.miniMessageStrict = MiniMessage.builder().strict(true).build();
|
||||
this.miniMessageCustom = MiniMessage.builder().tags(TagResolver.empty()).build();
|
||||
GsonComponentSerializer.Builder builder = GsonComponentSerializer.builder();
|
||||
if (!VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
if (!VersionHelper.isOrAbove1_20_5()) {
|
||||
builder.legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.get());
|
||||
builder.editOptions((b) -> b.value(JSONOptions.EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY, false));
|
||||
}
|
||||
|
||||
@@ -6,12 +6,39 @@ public class VersionHelper {
|
||||
private static boolean folia;
|
||||
private static boolean paper;
|
||||
|
||||
private static boolean v1_20;
|
||||
private static boolean v1_20_1;
|
||||
private static boolean v1_20_2;
|
||||
private static boolean v1_20_3;
|
||||
private static boolean v1_20_4;
|
||||
private static boolean v1_20_5;
|
||||
private static boolean v1_20_6;
|
||||
private static boolean v1_21;
|
||||
private static boolean v1_21_1;
|
||||
private static boolean v1_21_2;
|
||||
private static boolean v1_21_3;
|
||||
private static boolean v1_21_4;
|
||||
private static boolean v1_21_5;
|
||||
|
||||
public static void init(String serverVersion) {
|
||||
String[] split = serverVersion.split("\\.");
|
||||
version = Float.parseFloat(split[1] + "." + (split.length == 3 ? split[2] : "0"));
|
||||
checkMojMap();
|
||||
checkFolia();
|
||||
checkPaper();
|
||||
v1_20 = version >= 20f;
|
||||
v1_20_1 = version >= 20.1f;
|
||||
v1_20_2 = version >= 20.2f;
|
||||
v1_20_3 = version >= 20.3f;
|
||||
v1_20_4 = version >= 20.4f;
|
||||
v1_20_5 = version >= 20.5f;
|
||||
v1_20_6 = version >= 20.6f;
|
||||
v1_21 = version >= 21f;
|
||||
v1_21_1 = version >= 21.1f;
|
||||
v1_21_2 = version >= 21.2f;
|
||||
v1_21_3 = version >= 21.3f;
|
||||
v1_21_4 = version >= 21.4f;
|
||||
v1_21_5 = version >= 21.5f;
|
||||
}
|
||||
|
||||
public static float version() {
|
||||
@@ -55,43 +82,55 @@ public class VersionHelper {
|
||||
return mojmap;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_20() {
|
||||
return version >= 20f;
|
||||
public static boolean isOrAbove1_20() {
|
||||
return v1_20;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_20_2() {
|
||||
return version >= 20.19f;
|
||||
public static boolean isOrAbove1_20_1() {
|
||||
return v1_20_1;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_20_3() {
|
||||
return version >= 20.29f;
|
||||
public static boolean isOrAbove1_20_2() {
|
||||
return v1_20_2;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_20_4() {
|
||||
return version >= 20.39f;
|
||||
public static boolean isOrAbove1_20_3() {
|
||||
return v1_20_3;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_20_5() {
|
||||
return version >= 20.49f;
|
||||
public static boolean isOrAbove1_20_4() {
|
||||
return v1_20_4;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_21() {
|
||||
return version >= 21f;
|
||||
public static boolean isOrAbove1_20_5() {
|
||||
return v1_20_5;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_21_2() {
|
||||
return version >= 21.19f;
|
||||
public static boolean isOrAbove1_20_6() {
|
||||
return v1_20_6;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_21_3() {
|
||||
return version >= 21.29f;
|
||||
public static boolean isOrAbove1_21() {
|
||||
return v1_21;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_21_4() {
|
||||
return version >= 21.39f;
|
||||
public static boolean isOrAbove1_21_1() {
|
||||
return v1_21_1;
|
||||
}
|
||||
|
||||
public static boolean isVersionNewerThan1_21_5() {
|
||||
return version >= 21.49f;
|
||||
public static boolean isOrAbove1_21_2() {
|
||||
return v1_21_2;
|
||||
}
|
||||
|
||||
public static boolean isOrAbove1_21_3() {
|
||||
return v1_21_3;
|
||||
}
|
||||
|
||||
public static boolean isOrAbove1_21_4() {
|
||||
return v1_21_4;
|
||||
}
|
||||
|
||||
public static boolean isOrAbove1_21_5() {
|
||||
return v1_21_5;
|
||||
}
|
||||
}
|
||||
@@ -23,9 +23,9 @@ import java.util.function.Predicate;
|
||||
import java.util.stream.LongStream;
|
||||
|
||||
public class PalettedContainer<T> implements PaletteResizeListener<T>, ReadableContainer<T> {
|
||||
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_WRITER = VersionHelper.isVersionNewerThan1_21_5() ?
|
||||
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_WRITER = VersionHelper.isOrAbove1_21_5() ?
|
||||
(FriendlyByteBuf::writeFixedSizeLongArray) : (FriendlyByteBuf::writeLongArray);
|
||||
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_READER = VersionHelper.isVersionNewerThan1_21_5() ?
|
||||
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_READER = VersionHelper.isOrAbove1_21_5() ?
|
||||
(FriendlyByteBuf::readFixedSizeLongArray) : (FriendlyByteBuf::readLongArray);
|
||||
private final PaletteResizeListener<T> dummyListener = (newSize, added) -> 0;
|
||||
private final IndexedIterable<T> idList;
|
||||
|
||||
Reference in New Issue
Block a user