From 134d839625c6a146c3cf2441d169bf9ada4b5976 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 31 Jul 2025 01:57:08 +0200 Subject: [PATCH] 25w31a --- docs/scarpet/api/Auxiliary.md | 3 ++- gradle.properties | 2 +- .../java/carpet/commands/PlayerCommand.java | 9 ++++--- .../helpers/EntityPlayerActionPack.java | 2 +- .../ChunkMap_scarpetChunkCreationMixin.java | 8 +++--- .../mixins/LevelRenderer_fogOffMixin.java | 3 ++- .../LevelRenderer_scarpetRenderMixin.java | 5 ++-- .../PistonHeadRenderer_movableBEMixin.java | 2 +- .../mixins/PlayerList_fakePlayersMixin.java | 6 +++-- .../carpet/patches/EntityPlayerMPFake.java | 27 ++++++++++--------- .../java/carpet/script/api/Auxiliary.java | 3 ++- .../java/carpet/script/api/WorldAccess.java | 4 +-- .../script/command/CommandArgument.java | 7 ++--- .../carpet/script/utils/ShapesRenderer.java | 3 ++- .../script/utils/SnoopyCommandSource.java | 4 +-- .../java/carpet/script/utils/SystemInfo.java | 3 ++- .../java/carpet/script/utils/WorldTools.java | 1 - .../java/carpet/script/value/EntityValue.java | 8 +++--- 18 files changed, 56 insertions(+), 44 deletions(-) diff --git a/docs/scarpet/api/Auxiliary.md b/docs/scarpet/api/Auxiliary.md index 59d4cb12..b16c292f 100644 --- a/docs/scarpet/api/Auxiliary.md +++ b/docs/scarpet/api/Auxiliary.md @@ -778,7 +778,8 @@ system calls. In all circumstances, these are only provided as read-only. * `game_major_target` - major release target. For 1.12.2, that would be 12 * `game_minor_release` - minor release target. For 1.12.2, that would be 2 * `game_protocol` - protocol version number - * `game_pack_version` - datapack version number + * `game_pack_version` - datapack version number as a version string + * `game_pack_minor_version` - datapack format minor version number * `game_data_version` - data version of the game. Returns an integer, so it can be compared. * `game_stable` - indicating if its a production release or a snapshot diff --git a/gradle.properties b/gradle.properties index ac006952..936f8f08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check https://fabricmc.net/develop/ - minecraft_version=1.21.8 + minecraft_version=25w31a loader_version=0.16.14 jsr305_version=3.0.2 fabric_version=0.119.5+1.21.5 diff --git a/src/main/java/carpet/commands/PlayerCommand.java b/src/main/java/carpet/commands/PlayerCommand.java index fe7fa328..237a9ca5 100644 --- a/src/main/java/carpet/commands/PlayerCommand.java +++ b/src/main/java/carpet/commands/PlayerCommand.java @@ -29,6 +29,7 @@ import net.minecraft.core.UUIDUtil; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.players.NameAndId; import net.minecraft.server.players.PlayerList; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.GameType; @@ -164,7 +165,7 @@ public class PlayerCommand return false; } - if (!source.getServer().getPlayerList().isOp(sender.getGameProfile())) + if (!source.getServer().getPlayerList().isOp(sender.nameAndId())) { if (sender != player && !(player instanceof EntityPlayerMPFake)) { @@ -200,7 +201,7 @@ public class PlayerCommand Messenger.m(context.getSource(), "r Player ", "rb " + playerName, "r is already logged on"); return true; } - GameProfile profile = server.getProfileCache().get(playerName).orElse(null); + NameAndId profile = server.nameToIdCache().get(playerName).orElse(null); if (profile == null) { if (!CarpetSettings.allowSpawningOfflinePlayers) @@ -209,7 +210,7 @@ public class PlayerCommand "Banned players can only be summoned in Singleplayer and in servers in off-line mode."); return true; } else { - profile = new GameProfile(UUIDUtil.createOfflinePlayerUUID(playerName), playerName); + profile = new NameAndId(UUIDUtil.createOfflinePlayerUUID(playerName), playerName); } } if (manager.getBans().isBanned(profile)) @@ -337,7 +338,7 @@ public class PlayerCommand Messenger.m(context.getSource(), "r Cannot shadow fake players"); return 0; } - if (player.getServer().isSingleplayerOwner(player.getGameProfile())) { + if (player.getServer().isSingleplayerOwner(player.nameAndId())) { Messenger.m(context.getSource(), "r Cannot shadow single-player server owner"); return 0; } diff --git a/src/main/java/carpet/helpers/EntityPlayerActionPack.java b/src/main/java/carpet/helpers/EntityPlayerActionPack.java index dc73346f..019a33bd 100644 --- a/src/main/java/carpet/helpers/EntityPlayerActionPack.java +++ b/src/main/java/carpet/helpers/EntityPlayerActionPack.java @@ -201,7 +201,7 @@ public class EntityPlayerActionPack if (closest instanceof AbstractHorse && onlyRideables) ((AbstractHorse) closest).mobInteract(player, InteractionHand.MAIN_HAND); else - player.startRiding(closest,true); + player.startRiding(closest,true, true); return this; } public EntityPlayerActionPack dismount() diff --git a/src/main/java/carpet/mixins/ChunkMap_scarpetChunkCreationMixin.java b/src/main/java/carpet/mixins/ChunkMap_scarpetChunkCreationMixin.java index a66e8167..307351fa 100644 --- a/src/main/java/carpet/mixins/ChunkMap_scarpetChunkCreationMixin.java +++ b/src/main/java/carpet/mixins/ChunkMap_scarpetChunkCreationMixin.java @@ -27,7 +27,7 @@ import net.minecraft.server.level.ChunkResult; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ThreadedLevelLightEngine; import net.minecraft.server.level.TicketType; -import net.minecraft.server.level.progress.ChunkProgressListener; + import net.minecraft.util.thread.BlockableEventLoop; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; @@ -83,9 +83,9 @@ public abstract class ChunkMap_scarpetChunkCreationMixin implements ThreadedAnvi @Final private BlockableEventLoop mainThreadExecutor; - @Shadow - @Final - private ChunkProgressListener progressListener; + //@Shadow + //@Final + //private ChunkProgressListener progressListener; @Shadow @Final diff --git a/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java b/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java index d754a8e0..963cb918 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java @@ -2,13 +2,14 @@ package carpet.mixins; import carpet.CarpetSettings; import net.minecraft.client.renderer.DimensionSpecialEffects; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.LevelRenderer; //import net.minecraft.world.dimension.Dimension; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(value = LevelRenderer.class, priority = 69420) +@Mixin(value = GameRenderer.class, priority = 69420) public class LevelRenderer_fogOffMixin { @Redirect(method = "renderLevel", require = 0, expect = 0, at = @At( diff --git a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java index 2a63219a..b49775f4 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java @@ -7,12 +7,13 @@ import com.mojang.blaze3d.framegraph.FrameGraphBuilder; import com.mojang.blaze3d.framegraph.FramePass; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LevelRenderState; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelTargetBundle; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -26,7 +27,7 @@ public class LevelRenderer_scarpetRenderMixin @Shadow @Final private LevelTargetBundle targets; @Inject(method = "", at = @At("RETURN")) - private void addRenderers(Minecraft minecraft, EntityRenderDispatcher entityRenderDispatcher, BlockEntityRenderDispatcher blockEntityRenderDispatcher, RenderBuffers renderBuffers, CallbackInfo ci) + private void addRenderers(Minecraft minecraft, EntityRenderDispatcher entityRenderDispatcher, BlockEntityRenderDispatcher blockEntityRenderDispatcher, RenderBuffers renderBuffers, LevelRenderState levelRenderState, FeatureRenderDispatcher featureRenderDispatcher, CallbackInfo ci) { CarpetClient.shapes = new ShapesRenderer(minecraft); } diff --git a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java index 3a8b0e14..ec90780b 100644 --- a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java +++ b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java @@ -24,7 +24,7 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe @Inject(method = "", at = @At("TAIL")) private void onInitCM(BlockEntityRendererProvider.Context arguments, CallbackInfo ci) { - dispatcher = arguments.getBlockEntityRenderDispatcher(); + dispatcher = arguments.blockEntityRenderDispatcher(); } @Inject(method = "render", at = @At(value = "INVOKE", diff --git a/src/main/java/carpet/mixins/PlayerList_fakePlayersMixin.java b/src/main/java/carpet/mixins/PlayerList_fakePlayersMixin.java index 2d8dc9b5..8772ea3d 100644 --- a/src/main/java/carpet/mixins/PlayerList_fakePlayersMixin.java +++ b/src/main/java/carpet/mixins/PlayerList_fakePlayersMixin.java @@ -18,6 +18,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import carpet.patches.NetHandlerPlayServerFake; import carpet.patches.EntityPlayerMPFake; @@ -31,8 +32,9 @@ public abstract class PlayerList_fakePlayersMixin @Final private MinecraftServer server; - @Inject(method = "load", at = @At(value = "RETURN", shift = At.Shift.BEFORE)) - private void fixStartingPos(ServerPlayer serverPlayer, ProblemReporter problemReporter, CallbackInfoReturnable> cir) + // may need to be invoked in the configuration phase on prepareSpawn Task + @Inject(method = "placeNewPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;level()Lnet/minecraft/server/level/ServerLevel;")) + private void fixStartingPos(Connection connection, ServerPlayer serverPlayer, CommonListenerCookie commonListenerCookie, CallbackInfo ci) { if (serverPlayer instanceof EntityPlayerMPFake) { diff --git a/src/main/java/carpet/patches/EntityPlayerMPFake.java b/src/main/java/carpet/patches/EntityPlayerMPFake.java index 53a38d9b..06173201 100644 --- a/src/main/java/carpet/patches/EntityPlayerMPFake.java +++ b/src/main/java/carpet/patches/EntityPlayerMPFake.java @@ -2,8 +2,10 @@ package carpet.patches; import carpet.CarpetSettings; import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.PropertyMap; import net.minecraft.core.BlockPos; import net.minecraft.core.UUIDUtil; +import net.minecraft.core.component.DataComponents; import net.minecraft.network.DisconnectionDetails; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.contents.TranslatableContents; @@ -19,7 +21,8 @@ import net.minecraft.server.level.ClientInformation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.CommonListenerCookie; -import net.minecraft.server.players.GameProfileCache; +import net.minecraft.server.players.CachedUserNameToIdResolver; +import net.minecraft.server.players.NameAndId; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; @@ -27,6 +30,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.food.FoodData; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ResolvableProfile; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.SkullBlockEntity; @@ -54,13 +58,14 @@ public class EntityPlayerMPFake extends ServerPlayer { //prolly half of that crap is not necessary, but it works ServerLevel worldIn = server.getLevel(dimensionId); - GameProfileCache.setUsesAuthentication(false); + server.nameToIdCache().resolveOfflineUsers(false); GameProfile gameprofile; try { - gameprofile = server.getProfileCache().get(username).orElse(null); //findByName .orElse(null) + NameAndId res = server.nameToIdCache().get(username).orElseThrow(); //findByName .orElse(null) + gameprofile = new GameProfile(res.id(), res.name()); } finally { - GameProfileCache.setUsesAuthentication(server.isDedicatedServer() && server.usesAuthentication()); + server.nameToIdCache().resolveOfflineUsers(server.isDedicatedServer() && server.usesAuthentication()); } if (gameprofile == null) { @@ -71,7 +76,7 @@ public class EntityPlayerMPFake extends ServerPlayer gameprofile = new GameProfile(UUIDUtil.createOfflinePlayerUUID(username), username); } } - GameProfile finalGP = gameprofile; + //GameProfile finalGP = gameprofile; // We need to mark this player as spawning so that we do not // try to spawn another player with the name while the profile @@ -87,11 +92,8 @@ public class EntityPlayerMPFake extends ServerPlayer return; } - GameProfile current = finalGP; - if (p.isPresent()) - { - current = p.get(); - } + GameProfile current = p.gameProfile(); + EntityPlayerMPFake instance = new EntityPlayerMPFake(server, worldIn, current, ClientInformation.createDefault(), false); instance.fixStartingPosition = () -> instance.snapTo(pos.x, pos.y, pos.z, (float) yaw, (float) pitch); server.getPlayerList().placeNewPlayer(new FakeClientConnection(PacketFlow.SERVERBOUND), instance, new CommonListenerCookie(current, 0, instance.clientInformation(), false)); @@ -109,8 +111,9 @@ public class EntityPlayerMPFake extends ServerPlayer return true; } - private static CompletableFuture> fetchGameProfile(final String name) { - return SkullBlockEntity.fetchGameProfile(name); + private static CompletableFuture fetchGameProfile(final String name) { + final ResolvableProfile resolvableProfile = new ResolvableProfile(Optional.of(name), Optional.empty(), new PropertyMap()); + return resolvableProfile.resolve(); } public static EntityPlayerMPFake createShadow(MinecraftServer server, ServerPlayer player) diff --git a/src/main/java/carpet/script/api/Auxiliary.java b/src/main/java/carpet/script/api/Auxiliary.java index 108bc030..4a58c153 100644 --- a/src/main/java/carpet/script/api/Auxiliary.java +++ b/src/main/java/carpet/script/api/Auxiliary.java @@ -1195,7 +1195,8 @@ public class Auxiliary Path zipRoot = zipfs.getPath("/"); zipValueToJson(zipRoot.resolve("pack.mcmeta"), MapValue.wrap( Map.of(StringValue.of("pack"), MapValue.wrap(Map.of( - StringValue.of("pack_format"), new NumericValue(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA)), + StringValue.of("min_format"), new NumericValue(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA).major()), + StringValue.of("max_format"), new NumericValue(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA).major()), StringValue.of("description"), StringValue.of(name), StringValue.of("source"), StringValue.of("scarpet") ))) diff --git a/src/main/java/carpet/script/api/WorldAccess.java b/src/main/java/carpet/script/api/WorldAccess.java index 2794a875..080791d4 100644 --- a/src/main/java/carpet/script/api/WorldAccess.java +++ b/src/main/java/carpet/script/api/WorldAccess.java @@ -1744,7 +1744,7 @@ public class WorldAccess case "erosion" -> router.erosion(); case "depth" -> router.depth(); case "ridges" -> router.ridges(); - case "initial_density_without_jaggedness" -> router.initialDensityWithoutJaggedness(); + case "preliminary_surface_level" -> router.preliminarySurfaceLevel(); case "final_density" -> router.finalDensity(); case "vein_toggle" -> router.veinToggle(); case "vein_ridged" -> router.veinRidged(); @@ -1776,7 +1776,7 @@ public class WorldAccess case "erosion" -> router.erosion(); case "depth" -> router.depth(); case "ridges" -> router.ridges(); - case "initial_density_without_jaggedness" -> router.initialDensityWithoutJaggedness(); + case "preliminary_surface_level" -> router.preliminarySurfaceLevel(); case "final_density" -> router.finalDensity(); case "vein_toggle" -> router.veinToggle(); case "vein_ridged" -> router.veinRidged(); diff --git a/src/main/java/carpet/script/command/CommandArgument.java b/src/main/java/carpet/script/command/CommandArgument.java index 78310667..4f7da43e 100644 --- a/src/main/java/carpet/script/command/CommandArgument.java +++ b/src/main/java/carpet/script/command/CommandArgument.java @@ -102,6 +102,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.commands.BossBarCommands; import net.minecraft.server.commands.LootCommand; +import net.minecraft.server.players.NameAndId; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.phys.Vec2; @@ -718,10 +719,10 @@ public abstract class CommandArgument @Override protected Value getValueFromContext(CommandContext context, String param) throws CommandSyntaxException { - Collection profiles = GameProfileArgument.getGameProfiles(context, param); + Collection profiles = GameProfileArgument.getGameProfiles(context, param); if (!single) { - return ListValue.wrap(profiles.stream().map(p -> StringValue.of(p.getName()))); + return ListValue.wrap(profiles.stream().map(p -> StringValue.of(p.name()))); } int size = profiles.size(); if (size == 0) @@ -730,7 +731,7 @@ public abstract class CommandArgument } if (size == 1) { - return StringValue.of(profiles.iterator().next().getName()); + return StringValue.of(profiles.iterator().next().name()); } throw new SimpleCommandExceptionType(Component.literal("Multiple game profiles returned while only one was requested" + " for custom type " + suffix)).create(); } diff --git a/src/main/java/carpet/script/utils/ShapesRenderer.java b/src/main/java/carpet/script/utils/ShapesRenderer.java index 53892aab..d7c1d515 100644 --- a/src/main/java/carpet/script/utils/ShapesRenderer.java +++ b/src/main/java/carpet/script/utils/ShapesRenderer.java @@ -25,6 +25,7 @@ import java.util.function.BiFunction; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.components.debug.DebugScreenEntries; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.LightTexture; @@ -143,7 +144,7 @@ public class ShapesRenderer double cameraX = camera.getPosition().x; double cameraY = camera.getPosition().y; double cameraZ = camera.getPosition().z; - boolean entityBoxes = client.getEntityRenderDispatcher().shouldRenderHitBoxes(); + boolean entityBoxes = client.debugEntries.isCurrentlyEnabled(DebugScreenEntries.ENTITY_HITBOXES); if (!shapes.isEmpty()) { diff --git a/src/main/java/carpet/script/utils/SnoopyCommandSource.java b/src/main/java/carpet/script/utils/SnoopyCommandSource.java index 71e10508..d55552c9 100644 --- a/src/main/java/carpet/script/utils/SnoopyCommandSource.java +++ b/src/main/java/carpet/script/utils/SnoopyCommandSource.java @@ -70,12 +70,12 @@ public class SnoopyCommandSource extends CommandSourceStack { super(player.commandSource(), player.position(), player.getRotationVector(), player.level() instanceof final ServerLevel serverLevel ? serverLevel : null, - player.getServer().getProfilePermissions(player.getGameProfile()), player.getName().getString(), player.getDisplayName(), + player.getServer().getProfilePermissions(player.nameAndId()), player.getName().getString(), player.getDisplayName(), player.level().getServer(), player); this.output = player.commandSource(); this.position = player.position(); this.world = player.level() instanceof final ServerLevel serverLevel ? serverLevel : null; - this.level = player.getServer().getProfilePermissions(player.getGameProfile()); + this.level = player.getServer().getProfilePermissions(player.nameAndId()); this.simpleName = player.getName().getString(); this.name = player.getDisplayName(); this.server = player.level().getServer(); diff --git a/src/main/java/carpet/script/utils/SystemInfo.java b/src/main/java/carpet/script/utils/SystemInfo.java index d655f142..00e528c3 100644 --- a/src/main/java/carpet/script/utils/SystemInfo.java +++ b/src/main/java/carpet/script/utils/SystemInfo.java @@ -92,7 +92,8 @@ public class SystemInfo put("game_minor_target", c -> NumericValue.of(Vanilla.MinecraftServer_getReleaseTarget(c.server())[1])); put("game_stable", c -> BooleanValue.of(SharedConstants.getCurrentVersion().stable())); put("game_data_version", c -> NumericValue.of(SharedConstants.getCurrentVersion().dataVersion().version())); - put("game_pack_version", c -> NumericValue.of(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA))); + put("game_pack_version", c -> NumericValue.of(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA).major())); + put("game_pack_minor_version", c -> NumericValue.of(SharedConstants.getCurrentVersion().packVersion(PackType.SERVER_DATA).minor())); put("server_ip", c -> StringValue.of(c.server().getLocalIp())); put("server_whitelisted", c -> BooleanValue.of(c.server().isEnforceWhitelist())); diff --git a/src/main/java/carpet/script/utils/WorldTools.java b/src/main/java/carpet/script/utils/WorldTools.java index 15f23f77..5851b821 100644 --- a/src/main/java/carpet/script/utils/WorldTools.java +++ b/src/main/java/carpet/script/utils/WorldTools.java @@ -15,7 +15,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; diff --git a/src/main/java/carpet/script/value/EntityValue.java b/src/main/java/carpet/script/value/EntityValue.java index f6188f45..6b78a948 100644 --- a/src/main/java/carpet/script/value/EntityValue.java +++ b/src/main/java/carpet/script/value/EntityValue.java @@ -628,7 +628,7 @@ public class EntityValue extends Value { return new StringValue("singleplayer"); } - boolean isowner = server.isSingleplayerOwner(p.getGameProfile()); + boolean isowner = server.isSingleplayerOwner(p.nameAndId()); if (isowner) { return new StringValue("lan_host"); @@ -1217,7 +1217,7 @@ public class EntityValue extends Value put("mount", (e, v) -> { if (v instanceof EntityValue ev) { - e.startRiding(ev.getEntity(), true); + e.startRiding(ev.getEntity(), true, true); } if (e instanceof ServerPlayer sp) { @@ -1233,7 +1233,7 @@ public class EntityValue extends Value } if (v instanceof EntityValue ev) { - ev.getEntity().startRiding(e); + ev.getEntity().startRiding(e, true, true); } else if (v instanceof ListValue lv) { @@ -1241,7 +1241,7 @@ public class EntityValue extends Value { if (element instanceof EntityValue ev) { - ev.getEntity().startRiding(e); + ev.getEntity().startRiding(e, true, true); } } }