25w34b, broken item and be shapes rendered

This commit is contained in:
gnembon committed 2025-08-20 11:54:25 +02:00
1 parent efadc4dadf
commit 5269fee801
5 files changed
+64 -36

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties # Fabric Properties
# check https://fabricmc.net/develop/ # check https://fabricmc.net/develop/
minecraft_version=25w33a minecraft_version=25w34b
loader_version=0.16.14 loader_version=0.16.14
jsr305_version=3.0.2 jsr305_version=3.0.2
fabric_version=0.119.5+1.21.5 fabric_version=0.119.5+1.21.5
@@ -30,16 +30,15 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.NameAndId; import net.minecraft.server.players.NameAndId;
import net.minecraft.server.players.OldUsersConverter;
import net.minecraft.server.players.PlayerList; import net.minecraft.server.players.PlayerList;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.GameType; import net.minecraft.world.level.GameType;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import java.util.Collection;
import java.util.LinkedHashSet; import java.util.*;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
import static net.minecraft.commands.Commands.argument; import static net.minecraft.commands.Commands.argument;
@@ -201,7 +200,20 @@ public class PlayerCommand
Messenger.m(context.getSource(), "r Player ", "rb " + playerName, "r is already logged on"); Messenger.m(context.getSource(), "r Player ", "rb " + playerName, "r is already logged on");
return true; return true;
} }
NameAndId profile = server.nameToIdCache().get(playerName).orElse(null); UUID uuid = OldUsersConverter.convertMobOwnerIfNecessary(server, playerName);
if (uuid == null)
{
if (!CarpetSettings.allowSpawningOfflinePlayers)
{
Messenger.m(context.getSource(), "r Player "+playerName+" is either banned by Mojang, or auth servers are down. " +
"Banned players can only be summoned in Singleplayer and in servers in off-line mode.");
return true;
} else {
uuid = UUIDUtil.createOfflinePlayerUUID(playerName);
}
}
//GameProfile profile = new GameProfile(uuid, playerName);
NameAndId profile = server.services().nameToIdCache().get(uuid).orElse(null);
if (profile == null) if (profile == null)
{ {
if (!CarpetSettings.allowSpawningOfflinePlayers) if (!CarpetSettings.allowSpawningOfflinePlayers)
@@ -4,10 +4,12 @@ import carpet.CarpetSettings;
import carpet.fakes.PistonBlockEntityInterface; import carpet.fakes.PistonBlockEntityInterface;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.blockentity.PistonHeadRenderer; import net.minecraft.client.renderer.blockentity.PistonHeadRenderer;
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.piston.PistonMovingBlockEntity; import net.minecraft.world.level.block.piston.PistonMovingBlockEntity;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
@@ -27,10 +29,10 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
dispatcher = arguments.blockEntityRenderDispatcher(); dispatcher = arguments.blockEntityRenderDispatcher();
} }
@Inject(method = "render", at = @At(value = "INVOKE", @Inject(method = "submit(Lnet/minecraft/world/level/block/piston/PistonMovingBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;IILnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/blockentity/PistonHeadRenderer;renderBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/level/Level;ZI)V", target = "Lnet/minecraft/client/renderer/blockentity/PistonHeadRenderer;submitMovingBlock(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Holder;Lnet/minecraft/world/level/Level;)V",
ordinal = 3)) ordinal = 3))
private void updateRenderBool(PistonMovingBlockEntity pistonBlockEntity_1, float float_1, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int int_2, Vec3 cameraPos, CallbackInfo ci) private void updateRenderBool(PistonMovingBlockEntity pistonBlockEntity_1, float f, PoseStack poseStack, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
//private void updateRenderBool(PistonBlockEntity pistonBlockEntity_1, double double_1, double double_2, double double_3, float float_1, class_4587 class_4587_1, class_4597 class_4597_1, int int_1, CallbackInfo ci) //private void updateRenderBool(PistonBlockEntity pistonBlockEntity_1, double double_1, double double_2, double double_3, float float_1, class_4587 class_4587_1, class_4597 class_4597_1, int int_1, CallbackInfo ci)
{ {
if (!((PistonBlockEntityInterface) pistonBlockEntity_1).isRenderModeSet()) if (!((PistonBlockEntityInterface) pistonBlockEntity_1).isRenderModeSet())
@@ -38,8 +40,9 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
} }
@Inject(method = "render", at = @At("RETURN"), locals = LocalCapture.NO_CAPTURE) @Inject(method = "submit(Lnet/minecraft/world/level/block/piston/PistonMovingBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;IILnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", at = @At("RETURN"), locals = LocalCapture.NO_CAPTURE)
private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci) private void endMethod(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
//private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci)
{ {
if (((PistonBlockEntityInterface) pistonBlockEntity_1).getRenderCarriedBlockEntity()) if (((PistonBlockEntityInterface) pistonBlockEntity_1).getRenderCarriedBlockEntity())
{ {
@@ -53,7 +56,7 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
pistonBlockEntity_1.getYOff(partialTicks), pistonBlockEntity_1.getYOff(partialTicks),
pistonBlockEntity_1.getZOff(partialTicks) pistonBlockEntity_1.getZOff(partialTicks)
); );
dispatcher.render(carriedBlockEntity, partialTicks, matrixStack_1, layeredVertexConsumerStorage_1); dispatcher.submit(carriedBlockEntity, partialTicks, matrixStack_1, crumblingOverlay, submitNodeCollector);
} }
} }
@@ -23,6 +23,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.network.CommonListenerCookie; import net.minecraft.server.network.CommonListenerCookie;
import net.minecraft.server.players.CachedUserNameToIdResolver; import net.minecraft.server.players.CachedUserNameToIdResolver;
import net.minecraft.server.players.NameAndId; import net.minecraft.server.players.NameAndId;
import net.minecraft.server.players.OldUsersConverter;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot;
@@ -43,6 +44,7 @@ import carpet.utils.Messenger;
import java.util.HashSet; import java.util.HashSet;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@SuppressWarnings("EntityConstructor") @SuppressWarnings("EntityConstructor")
@@ -58,24 +60,21 @@ public class EntityPlayerMPFake extends ServerPlayer
{ {
//prolly half of that crap is not necessary, but it works //prolly half of that crap is not necessary, but it works
ServerLevel worldIn = server.getLevel(dimensionId); ServerLevel worldIn = server.getLevel(dimensionId);
server.nameToIdCache().resolveOfflineUsers(false); server.services().nameToIdCache().resolveOfflineUsers(false);
GameProfile gameprofile; GameProfile gameprofile;
try {
NameAndId res = server.nameToIdCache().get(username).orElseThrow(); //findByName .orElse(null) UUID uuid = OldUsersConverter.convertMobOwnerIfNecessary(server, username);
gameprofile = new GameProfile(res.id(), res.name()); //NameAndId res = server.services().nameToIdCache().get(username).orElseThrow(); //findByName .orElse(null)
} if (uuid == null && CarpetSettings.allowSpawningOfflinePlayers) {
finally { server.services().nameToIdCache().resolveOfflineUsers(server.isDedicatedServer() && server.usesAuthentication());
server.nameToIdCache().resolveOfflineUsers(server.isDedicatedServer() && server.usesAuthentication()); uuid = UUIDUtil.createOfflinePlayerUUID(username);
}
if (gameprofile == null)
{
if (!CarpetSettings.allowSpawningOfflinePlayers)
{
return false;
} else {
gameprofile = new GameProfile(UUIDUtil.createOfflinePlayerUUID(username), username);
} }
if (uuid == null) {
return false; // no uuid, no player
} }
gameprofile = new GameProfile(uuid, username);
//GameProfile finalGP = gameprofile; //GameProfile finalGP = gameprofile;
// We need to mark this player as spawning so that we do not // We need to mark this player as spawning so that we do not
@@ -84,7 +83,7 @@ public class EntityPlayerMPFake extends ServerPlayer
String name = gameprofile.getName(); String name = gameprofile.getName();
spawning.add(name); spawning.add(name);
fetchGameProfile(name).whenCompleteAsync((p, t) -> { fetchGameProfile(server, gameprofile.getId()).whenCompleteAsync((p, t) -> {
// Always remove the name, even if exception occurs // Always remove the name, even if exception occurs
spawning.remove(name); spawning.remove(name);
if (t != null) if (t != null)
@@ -92,7 +91,13 @@ public class EntityPlayerMPFake extends ServerPlayer
return; return;
} }
GameProfile current = p.gameProfile(); GameProfile current;
if (p.getName().isEmpty()) {
current = gameprofile;
}
else {
current = p;
}
EntityPlayerMPFake instance = new EntityPlayerMPFake(server, worldIn, current, ClientInformation.createDefault(), false); EntityPlayerMPFake instance = new EntityPlayerMPFake(server, worldIn, current, ClientInformation.createDefault(), false);
instance.fixStartingPosition = () -> instance.snapTo(pos.x, pos.y, pos.z, (float) yaw, (float) pitch); instance.fixStartingPosition = () -> instance.snapTo(pos.x, pos.y, pos.z, (float) yaw, (float) pitch);
@@ -111,9 +116,9 @@ public class EntityPlayerMPFake extends ServerPlayer
return true; return true;
} }
private static CompletableFuture<ResolvableProfile> fetchGameProfile(final String name) { private static CompletableFuture<GameProfile> fetchGameProfile(MinecraftServer server, final UUID name) {
final ResolvableProfile resolvableProfile = new ResolvableProfile(Optional.of(name), Optional.empty(), new PropertyMap()); final ResolvableProfile resolvableProfile = ResolvableProfile.createUnresolved(name);
return resolvableProfile.resolve(); return resolvableProfile.resolveProfile(server.services().profileResolver());
} }
public static EntityPlayerMPFake createShadow(MinecraftServer server, ServerPlayer player) public static EntityPlayerMPFake createShadow(MinecraftServer server, ServerPlayer player)
@@ -4,6 +4,7 @@ import carpet.script.CarpetScriptServer;
import carpet.script.external.Carpet; import carpet.script.external.Carpet;
import carpet.script.utils.shapes.ShapeDirection; import carpet.script.utils.shapes.ShapeDirection;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.ByteBufferBuilder; import com.mojang.blaze3d.vertex.ByteBufferBuilder;
@@ -32,6 +33,8 @@ import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.client.renderer.entity.state.EntityRenderState;
import net.minecraft.client.renderer.item.ItemStackRenderState;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
@@ -438,8 +441,8 @@ public class ShapesRenderer
BlockEntityRenderer<BlockEntity> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity); BlockEntityRenderer<BlockEntity> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity);
if (blockEntityRenderer != null) if (blockEntityRenderer != null)
{ {
blockEntityRenderer.render(BlockEntity, partialTick, blockEntityRenderer.submit(BlockEntity, partialTick,
matrices, immediate, light, OverlayTexture.NO_OVERLAY, camera1.getPosition()); matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
} }
} }
@@ -449,8 +452,13 @@ public class ShapesRenderer
if (shape.item != null) if (shape.item != null)
{ {
// draw the item // draw the item
client.getItemRenderer().renderStatic(shape.item, transformType, light,
OverlayTexture.NO_OVERLAY, matrices, immediate, client.level, (int) shape.key(client.level.registryAccess())); final ItemStackRenderState itemState = new ItemStackRenderState();
client.getItemModelResolver().updateForTopItem(itemState, shape.item, ItemDisplayContext.FIXED, client.level, null, 0);
itemState.submit(matrices, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE);
//client.getItemRenderer().renderStatic(shape.item, transformType, light,
// OverlayTexture.NO_OVERLAY, matrices, immediate, client.level, (int) shape.key(client.level.registryAccess()));
} }
} }
matrices.popPose(); matrices.popPose();