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
+65 -37

No files matched your search

@@ -30,16 +30,15 @@ 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.OldUsersConverter;
import net.minecraft.server.players.PlayerList;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.function.Consumer;
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");
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 (!CarpetSettings.allowSpawningOfflinePlayers)
@@ -4,10 +4,12 @@ import carpet.CarpetSettings;
import carpet.fakes.PistonBlockEntityInterface;
import com.mojang.blaze3d.vertex.PoseStack;
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.BlockEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
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.piston.PistonMovingBlockEntity;
import net.minecraft.world.phys.Vec3;
@@ -27,10 +29,10 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
dispatcher = arguments.blockEntityRenderDispatcher();
}
@Inject(method = "render", 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",
@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;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))
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)
{
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)
private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci)
@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 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())
{
@@ -53,7 +56,7 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
pistonBlockEntity_1.getYOff(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.players.CachedUserNameToIdResolver;
import net.minecraft.server.players.NameAndId;
import net.minecraft.server.players.OldUsersConverter;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
@@ -43,6 +44,7 @@ import carpet.utils.Messenger;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@SuppressWarnings("EntityConstructor")
@@ -58,24 +60,21 @@ public class EntityPlayerMPFake extends ServerPlayer
{
//prolly half of that crap is not necessary, but it works
ServerLevel worldIn = server.getLevel(dimensionId);
server.nameToIdCache().resolveOfflineUsers(false);
server.services().nameToIdCache().resolveOfflineUsers(false);
GameProfile gameprofile;
try {
NameAndId res = server.nameToIdCache().get(username).orElseThrow(); //findByName .orElse(null)
gameprofile = new GameProfile(res.id(), res.name());
}
finally {
server.nameToIdCache().resolveOfflineUsers(server.isDedicatedServer() && server.usesAuthentication());
}
if (gameprofile == null)
{
if (!CarpetSettings.allowSpawningOfflinePlayers)
{
return false;
} else {
gameprofile = new GameProfile(UUIDUtil.createOfflinePlayerUUID(username), username);
UUID uuid = OldUsersConverter.convertMobOwnerIfNecessary(server, username);
//NameAndId res = server.services().nameToIdCache().get(username).orElseThrow(); //findByName .orElse(null)
if (uuid == null && CarpetSettings.allowSpawningOfflinePlayers) {
server.services().nameToIdCache().resolveOfflineUsers(server.isDedicatedServer() && server.usesAuthentication());
uuid = UUIDUtil.createOfflinePlayerUUID(username);
}
}
if (uuid == null) {
return false; // no uuid, no player
}
gameprofile = new GameProfile(uuid, username);
//GameProfile finalGP = gameprofile;
// 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();
spawning.add(name);
fetchGameProfile(name).whenCompleteAsync((p, t) -> {
fetchGameProfile(server, gameprofile.getId()).whenCompleteAsync((p, t) -> {
// Always remove the name, even if exception occurs
spawning.remove(name);
if (t != null)
@@ -92,7 +91,13 @@ public class EntityPlayerMPFake extends ServerPlayer
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);
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;
}
private static CompletableFuture<ResolvableProfile> fetchGameProfile(final String name) {
final ResolvableProfile resolvableProfile = new ResolvableProfile(Optional.of(name), Optional.empty(), new PropertyMap());
return resolvableProfile.resolve();
private static CompletableFuture<GameProfile> fetchGameProfile(MinecraftServer server, final UUID name) {
final ResolvableProfile resolvableProfile = ResolvableProfile.createUnresolved(name);
return resolvableProfile.resolveProfile(server.services().profileResolver());
}
public static EntityPlayerMPFake createShadow(MinecraftServer server, ServerPlayer player)
@@ -4,6 +4,7 @@ import carpet.script.CarpetScriptServer;
import carpet.script.external.Carpet;
import carpet.script.utils.shapes.ShapeDirection;
import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.BufferBuilder;
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.RenderType;
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.core.BlockPos;
import net.minecraft.core.Direction;
@@ -438,8 +441,8 @@ public class ShapesRenderer
BlockEntityRenderer<BlockEntity> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity);
if (blockEntityRenderer != null)
{
blockEntityRenderer.render(BlockEntity, partialTick,
matrices, immediate, light, OverlayTexture.NO_OVERLAY, camera1.getPosition());
blockEntityRenderer.submit(BlockEntity, partialTick,
matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
}
}
@@ -449,8 +452,13 @@ public class ShapesRenderer
if (shape.item != null)
{
// 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();