26.2-snap-3

This commit is contained in:
gnembon committed 2026-04-16 22:55:16 +02:00
1 parent 8335a91409
commit 29b3836ed9
22 files changed
+93 -80

No files matched your search

+1 -1
View File
@@ -7,7 +7,7 @@ org.gradle.configuration-cache=false
# Fabric Properties # Fabric Properties
# check https://fabricmc.net/develop/ # check https://fabricmc.net/develop/
minecraft_version=26.2-snapshot-1 minecraft_version=26.2-snapshot-3
loader_version=0.18.6 loader_version=0.18.6
loom_version=1.15-SNAPSHOT loom_version=1.15-SNAPSHOT
@@ -352,7 +352,7 @@ public class HopperCounter
entry(Items.PHANTOM_MEMBRANE, Blocks.BONE_BLOCK), entry(Items.PHANTOM_MEMBRANE, Blocks.BONE_BLOCK),
entry(Items.EGG, Blocks.BONE_BLOCK), entry(Items.EGG, Blocks.BONE_BLOCK),
//entry(Items.,Blocks.), //entry(Items.,Blocks.),
entry(Items.COPPER_INGOT, Blocks.COPPER_BLOCK.unaffected()), entry(Items.COPPER_INGOT, Blocks.COPPER_BLOCK.weathering().unaffected()),
entry(Items.AMETHYST_SHARD, Blocks.AMETHYST_BLOCK)); entry(Items.AMETHYST_SHARD, Blocks.AMETHYST_BLOCK));
/** /**
@@ -4,6 +4,7 @@ import carpet.CarpetSettings;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.LightningBolt;
import net.minecraft.world.entity.monster.ElderGuardian; import net.minecraft.world.entity.monster.ElderGuardian;
import net.minecraft.world.entity.monster.Guardian; import net.minecraft.world.entity.monster.Guardian;
@@ -24,7 +25,7 @@ public abstract class Guardian_renewableSpongesMixin extends Monster
{ // isRemoved() { // isRemoved()
if (!this.level().isClientSide() && !this.isRemoved() && CarpetSettings.renewableSponges && !((Object)this instanceof ElderGuardian)) if (!this.level().isClientSide() && !this.isRemoved() && CarpetSettings.renewableSponges && !((Object)this instanceof ElderGuardian))
{ {
ElderGuardian elderGuardian = new ElderGuardian(EntityType.ELDER_GUARDIAN ,this.level()); ElderGuardian elderGuardian = new ElderGuardian(EntityTypes.ELDER_GUARDIAN ,this.level());
elderGuardian.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); elderGuardian.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
elderGuardian.finalizeSpawn(serverWorld ,serverWorld.getCurrentDifficultyAt(elderGuardian.blockPosition()), EntitySpawnReason.CONVERSION, null); elderGuardian.finalizeSpawn(serverWorld ,serverWorld.getCurrentDifficultyAt(elderGuardian.blockPosition()), EntitySpawnReason.CONVERSION, null);
elderGuardian.setNoAi(this.isNoAi()); elderGuardian.setNoAi(this.isNoAi());
@@ -1,16 +1,16 @@
package carpet.mixins; package carpet.mixins;
import carpet.CarpetSettings; import carpet.CarpetSettings;
import net.minecraft.client.Camera;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.LevelRenderer;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(LevelRenderer.class) @Mixin(Camera.class)
public class LevelRenderer_creativeNoClipMixin public class LevelRenderer_creativeNoClipMixin
{ {
@Redirect(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z")) @Redirect(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z"))
private boolean canSeeWorld(LocalPlayer clientPlayerEntity) private boolean canSeeWorld(LocalPlayer clientPlayerEntity)
{ {
return clientPlayerEntity.isSpectator() || (CarpetSettings.creativeNoClip && clientPlayerEntity.isCreative()); return clientPlayerEntity.isSpectator() || (CarpetSettings.creativeNoClip && clientPlayerEntity.isCreative());
@@ -9,9 +9,11 @@ import com.mojang.blaze3d.framegraph.FramePass;
import com.mojang.blaze3d.resource.GraphicsResourceAllocator; import com.mojang.blaze3d.resource.GraphicsResourceAllocator;
import net.minecraft.client.DeltaTracker; import net.minecraft.client.DeltaTracker;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.LevelTargetBundle; import net.minecraft.client.renderer.LevelTargetBundle;
import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.client.renderer.RenderBuffers;
import net.minecraft.client.renderer.ShaderManager;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher;
import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; import net.minecraft.client.renderer.chunk.ChunkSectionsToRender;
import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
@@ -19,6 +21,9 @@ import net.minecraft.client.renderer.feature.FeatureRenderDispatcher;
import net.minecraft.client.renderer.state.GameRenderState; import net.minecraft.client.renderer.state.GameRenderState;
import net.minecraft.client.renderer.state.level.CameraRenderState; import net.minecraft.client.renderer.state.level.CameraRenderState;
import net.minecraft.client.renderer.state.level.LevelRenderState; import net.minecraft.client.renderer.state.level.LevelRenderState;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.client.resources.model.sprite.AtlasManager;
import org.joml.Matrix4fc; import org.joml.Matrix4fc;
import org.joml.Vector4f; import org.joml.Vector4f;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;
@@ -40,17 +45,17 @@ public class LevelRenderer_scarpetRenderMixin
@Shadow @Final private LevelRenderState levelRenderState; @Shadow @Final private LevelRenderState levelRenderState;
@Inject(method = "<init>", at = @At("RETURN")) @Inject(method = "<init>", at = @At("RETURN"))
private void addRenderers(Minecraft minecraft, EntityRenderDispatcher entityRenderDispatcher, BlockEntityRenderDispatcher blockEntityRenderDispatcher, RenderBuffers renderBuffers, GameRenderState gameRenderState, FeatureRenderDispatcher featureRenderDispatcher, CallbackInfo ci) private void addRenderers(EntityRenderDispatcher entityRenderDispatcher, BlockEntityRenderDispatcher blockEntityRenderDispatcher, ModelManager modelManager, TextureManager textureManager, AtlasManager atlasManager, ShaderManager shaderManager, GameRenderer gameRenderer, int width, int height, CallbackInfo ci)
{ {
CarpetClient.shapes = new ShapesRenderer(minecraft); CarpetClient.shapes = new ShapesRenderer(Minecraft.getInstance());
} }
@Inject(method = "renderLevel", at = @At( @Inject(method = "render", at = @At(
value = "INVOKE", value = "INVOKE",
target = "Lnet/minecraft/client/renderer/LevelRenderer;addLateDebugPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/state/level/CameraRenderState;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lorg/joml/Matrix4fc;)V", target = "Lnet/minecraft/client/renderer/LevelRenderer;addLateDebugPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/state/level/CameraRenderState;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lorg/joml/Matrix4fc;)V",
shift = At.Shift.AFTER shift = At.Shift.AFTER
)) ))
private void renderScarpetThinsLate(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderOutline, CameraRenderState cameraState, Matrix4fc modelViewMatrix, GpuBufferSlice terrainFog, Vector4f fogColor, boolean shouldRenderSky, ChunkSectionsToRender chunkSectionsToRender, CallbackInfo ci, @Local FrameGraphBuilder frameGraphBuilder) private void renderScarpetThinsLate(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderOutline, CameraRenderState cameraState, Matrix4fc modelViewMatrix, GpuBufferSlice terrainFog, Vector4f fogColor, boolean shouldRenderSky, CallbackInfo ci, @Local FrameGraphBuilder frameGraphBuilder)
{ {
// in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff. // in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff.
// we might actually not need to play with render hooks here. // we might actually not need to play with render hooks here.
@@ -62,7 +67,7 @@ public class LevelRenderer_scarpetRenderMixin
targets.main = pass.readsAndWrites(targets.main); targets.main = pass.readsAndWrites(targets.main);
pass.executes(() -> CarpetClient.shapes.render(renderBuffers, levelRenderState, modelViewMatrix, deltaPartialTick)); pass.executes(() -> CarpetClient.shapes.render(renderBuffers, levelRenderState, modelViewMatrix, deltaPartialTick));
featureRenderDispatcher.renderAllFeatures(); featureRenderDispatcher.renderAllFeatures();
renderBuffers.bufferSource().endLastBatch(); renderBuffers.bufferSource().uploadAndDraw();
} }
} }
} }
@@ -7,6 +7,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
@@ -23,6 +24,6 @@ public class Monster_templesMixin
EntityType<? extends Mob> entityType, ServerLevelAccessor serverLevelAccessor, EntitySpawnReason entitySpawnReason, BlockPos blockPos, RandomSource randomSource) EntityType<? extends Mob> entityType, ServerLevelAccessor serverLevelAccessor, EntitySpawnReason entitySpawnReason, BlockPos blockPos, RandomSource randomSource)
{ {
return serverWorldAccess.canSeeSky(pos) || return serverWorldAccess.canSeeSky(pos) ||
(CarpetSettings.huskSpawningInTemples && entityType == EntityType.HUSK && SpawnOverrides.isStructureAtPosition((ServerLevel)serverWorldAccess, BuiltinStructures.DESERT_PYRAMID, pos)); (CarpetSettings.huskSpawningInTemples && entityType == EntityTypes.HUSK && SpawnOverrides.isStructureAtPosition((ServerLevel)serverWorldAccess, BuiltinStructures.DESERT_PYRAMID, pos));
} }
} }
@@ -2,6 +2,7 @@ package carpet.mixins;
import carpet.CarpetSettings; import carpet.CarpetSettings;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.SpawnPlacementType; import net.minecraft.world.entity.SpawnPlacementType;
import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.entity.SpawnPlacementTypes;
import net.minecraft.world.entity.SpawnPlacements; import net.minecraft.world.entity.SpawnPlacements;
@@ -14,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class PiglinBrute_getPlacementTypeMixin { public class PiglinBrute_getPlacementTypeMixin {
@Inject(method = "getPlacementType", at = @At("HEAD"), cancellable = true) @Inject(method = "getPlacementType", at = @At("HEAD"), cancellable = true)
private static void getPlacementType(final EntityType<?> entityType, final CallbackInfoReturnable<SpawnPlacementType> cir) { private static void getPlacementType(final EntityType<?> entityType, final CallbackInfoReturnable<SpawnPlacementType> cir) {
if (CarpetSettings.piglinsSpawningInBastions && entityType == EntityType.PIGLIN_BRUTE) { if (CarpetSettings.piglinsSpawningInBastions && entityType == EntityTypes.PIGLIN_BRUTE) {
cir.setReturnValue(SpawnPlacementTypes.ON_GROUND); cir.setReturnValue(SpawnPlacementTypes.ON_GROUND);
} }
} }
@@ -43,7 +43,7 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe
float progress = pistonMovingBlockEntity.getProgress(f); float progress = pistonMovingBlockEntity.getProgress(f);
//System.out.println("progress: " + progress); //System.out.println("progress: " + progress);
//if (progress != 0) { //if (progress != 0) {
BlockEntityRenderState res = dispatcher.tryExtractRenderState(be, f, crumblingOverlay); BlockEntityRenderState res = dispatcher.tryExtractRenderState(be, f, crumblingOverlay, true);
if (res != null) { if (res != null) {
((PistonHeadRenderStateInterface) pistonHeadRenderState).setMovedBERenderState(res); ((PistonHeadRenderStateInterface) pistonHeadRenderState).setMovedBERenderState(res);
} }
@@ -54,7 +54,7 @@ public class ServerPlayerGameMode_scarpetEventsMixin implements ServerPlayerInte
@Inject(method = "useItemOn", at = @At( @Inject(method = "useItemOn", at = @At(
value = "INVOKE", value = "INVOKE",
target = "Lnet/minecraft/advancements/criterion/ItemUsedOnLocationTrigger;trigger(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/item/ItemInstance;)V", target = "Lnet/minecraft/advancements/triggers/ItemUsedOnLocationTrigger;trigger(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/item/ItemInstance;)V",
shift = At.Shift.BEFORE shift = At.Shift.BEFORE
)) ))
private void onBlockActivated(ServerPlayer serverPlayerEntity, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable<InteractionResult> cir) private void onBlockActivated(ServerPlayer serverPlayerEntity, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable<InteractionResult> cir)
@@ -7,7 +7,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.DifficultyInstance; import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.LightningBolt;
import net.minecraft.world.entity.animal.equine.SkeletonHorse; import net.minecraft.world.entity.animal.equine.SkeletonHorse;
import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.gamerules.GameRules;
@@ -32,7 +32,7 @@ public class SummonCommand_lightningMixin
DifficultyInstance localDifficulty_1 = world.getCurrentDifficultyAt(at); DifficultyInstance localDifficulty_1 = world.getCurrentDifficultyAt(at);
boolean boolean_2 = world.getGameRules().get(GameRules.SPAWN_MOBS) && world.getRandom().nextDouble() < (double)localDifficulty_1.getEffectiveDifficulty() * 0.01D; boolean boolean_2 = world.getGameRules().get(GameRules.SPAWN_MOBS) && world.getRandom().nextDouble() < (double)localDifficulty_1.getEffectiveDifficulty() * 0.01D;
if (boolean_2) { if (boolean_2) {
SkeletonHorse skeletonHorseEntity_1 = EntityType.SKELETON_HORSE.create(world, EntitySpawnReason.EVENT); SkeletonHorse skeletonHorseEntity_1 = EntityTypes.SKELETON_HORSE.create(world, EntitySpawnReason.EVENT);
skeletonHorseEntity_1.setTrap(true); skeletonHorseEntity_1.setTrap(true);
skeletonHorseEntity_1.setAge(0); skeletonHorseEntity_1.setAge(0);
skeletonHorseEntity_1.setPos(entity.getX(), entity.getY(), entity.getZ()); skeletonHorseEntity_1.setPos(entity.getX(), entity.getY(), entity.getZ());
@@ -38,7 +38,7 @@ import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityTypes;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable;
@@ -961,7 +961,7 @@ public class CarpetScriptHost extends ScriptHost
String markerName = Auxiliary.MARKER_STRING + "_" + ((getName() == null) ? "" : getName()); String markerName = Auxiliary.MARKER_STRING + "_" + ((getName() == null) ? "" : getName());
for (ServerLevel world : scriptServer().server.getAllLevels()) for (ServerLevel world : scriptServer().server.getAllLevels())
{ {
for (Entity e : world.getEntities(EntityType.ARMOR_STAND, (as) -> as.entityTags().contains(markerName))) for (Entity e : world.getEntities(EntityTypes.ARMOR_STAND, (as) -> as.entityTags().contains(markerName)))
{ {
e.discard(); e.discard();
} }
@@ -66,11 +66,10 @@ import net.minecraft.stats.Stat;
import net.minecraft.stats.StatType; import net.minecraft.stats.StatType;
import net.minecraft.world.clock.WorldClocks; import net.minecraft.world.clock.WorldClocks;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.decoration.ArmorStand;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.storage.CommandStorage; import net.minecraft.world.level.storage.CommandStorage;
@@ -382,7 +381,7 @@ public class Auxiliary
throw new InternalExpressionException("'create_marker' requires a name and three coordinates, with optional direction, and optional block on its head"); throw new InternalExpressionException("'create_marker' requires a name and three coordinates, with optional direction, and optional block on its head");
} }
Level level = cc.level(); Level level = cc.level();
ArmorStand armorstand = new ArmorStand(EntityType.ARMOR_STAND, level); ArmorStand armorstand = new ArmorStand(EntityTypes.ARMOR_STAND, level);
double yoffset; double yoffset;
if (targetBlock == null && name == null) if (targetBlock == null && name == null)
{ {
@@ -435,7 +434,7 @@ public class Auxiliary
CarpetContext cc = (CarpetContext) c; CarpetContext cc = (CarpetContext) c;
int total = 0; int total = 0;
String markerName = MARKER_STRING + "_" + ((cc.host.getName() == null) ? "" : cc.host.getName()); String markerName = MARKER_STRING + "_" + ((cc.host.getName() == null) ? "" : cc.host.getName());
for (Entity e : cc.level().getEntities(EntityType.ARMOR_STAND, as -> as.entityTags().contains(markerName))) for (Entity e : cc.level().getEntities(EntityTypes.ARMOR_STAND, as -> as.entityTags().contains(markerName)))
{ {
total++; total++;
e.discard(); e.discard();
@@ -56,6 +56,7 @@ import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey; import net.minecraft.tags.TagKey;
import net.minecraft.util.ProblemReporter; import net.minecraft.util.ProblemReporter;
import net.minecraft.util.random.WeightedList; import net.minecraft.util.random.WeightedList;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.level.ServerExplosion; import net.minecraft.world.level.ServerExplosion;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.chunk.PalettedContainer; import net.minecraft.world.level.chunk.PalettedContainer;
@@ -946,7 +947,7 @@ public class WorldAccess
} }
if (DUMMY_ENTITY == null) if (DUMMY_ENTITY == null)
{ {
DUMMY_ENTITY = new FallingBlockEntity(EntityType.FALLING_BLOCK, null); DUMMY_ENTITY = new FallingBlockEntity(EntityTypes.FALLING_BLOCK, null);
} }
Block.dropResources(state, world, where, be, DUMMY_ENTITY, tool); Block.dropResources(state, world, where, be, DUMMY_ENTITY, tool);
} }
@@ -55,7 +55,7 @@ import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.advancements.criterion.MinMaxBounds; import net.minecraft.advancements.predicates.MinMaxBounds;
import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.SharedSuggestionProvider;
@@ -119,7 +119,7 @@ public class ShapesRenderer
// posestack is not needed anymore - left as TODO to cleanup later // posestack is not needed anymore - left as TODO to cleanup later
PoseStack matrices = new PoseStack(); PoseStack matrices = new PoseStack();
Camera camera = this.client.gameRenderer.getMainCamera(); Camera camera = this.client.gameRenderer.mainCamera();
ClientLevel iWorld = this.client.level; ClientLevel iWorld = this.client.level;
ResourceKey<Level> dimensionType = iWorld.dimension(); ResourceKey<Level> dimensionType = iWorld.dimension();
if ((shapes.get(dimensionType) == null || shapes.get(dimensionType).isEmpty()) && if ((shapes.get(dimensionType) == null || shapes.get(dimensionType).isEmpty()) &&
@@ -194,20 +194,20 @@ public class ShapesRenderer
}); });
} }
MultiBufferSource.BufferSource bufferSource = renderBuffers.bufferSource(); MultiBufferSource.BufferSource bufferSource = renderBuffers.bufferSource();
bufferSource.endLastBatch(); bufferSource.uploadAndDraw();
normal.render(matrices, bufferSource, cameraa.cameraRenderState, matrix4f); normal.render(matrices, bufferSource, cameraa.cameraRenderState, matrix4f);
bufferSource.endLastBatch(); bufferSource.uploadAndDraw();
if (false) { if (false) {
final RenderTarget mainRenderTarget = Minecraft.getInstance().getMainRenderTarget(); final RenderTarget mainRenderTarget = Minecraft.getInstance().gameRenderer.mainRenderTarget();
RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mainRenderTarget.getDepthTexture(), 1.0); RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mainRenderTarget.getDepthTexture(), 1.0);
onTop.render(matrices, bufferSource, cameraa.cameraRenderState, matrix4f); onTop.render(matrices, bufferSource, cameraa.cameraRenderState, matrix4f);
bufferSource.endLastBatch(); bufferSource.uploadAndDraw();
RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(Minecraft.getInstance().getMainRenderTarget().getDepthTexture(), 1.0); RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(Minecraft.getInstance().gameRenderer.mainRenderTarget().getDepthTexture(), 1.0);
} }
@@ -366,7 +366,7 @@ public class ShapesRenderer
} }
Vec3 v1 = shape.relativiseRender(client.level, shape.pos, partialTick); Vec3 v1 = shape.relativiseRender(client.level, shape.pos, partialTick);
Camera camera1 = client.gameRenderer.getMainCamera(); Camera camera1 = client.gameRenderer.mainCamera();
matrices.pushPose(); matrices.pushPose();
if (!isitem)// blocks should use its center as the origin if (!isitem)// blocks should use its center as the origin
@@ -415,7 +415,7 @@ public class ShapesRenderer
blockState = shape.blockState; blockState = shape.blockState;
MultiBufferSource.BufferSource immediate = client.renderBuffers().bufferSource(); MultiBufferSource.BufferSource immediate = client.gameRenderer.renderBuffers().bufferSource();
if (!isitem) if (!isitem)
{ {
// draw the block itself // draw the block itself
@@ -431,7 +431,7 @@ public class ShapesRenderer
//renderState.model = state; //renderState.model = state;
//renderState.block = blockState.getBlock(); //renderState.block = blockState.getBlock();
renderState.submit(matrices, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE); renderState.submit(matrices, client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE);
//client.getBlockRenderer().renderSingleBlock(blockState, matrices, immediate, light, OverlayTexture.NO_OVERLAY); //client.getBlockRenderer().renderSingleBlock(blockState, matrices, immediate, light, OverlayTexture.NO_OVERLAY);
@@ -458,7 +458,7 @@ public class ShapesRenderer
if (BlockEntity != null) if (BlockEntity != null)
{ {
BlockEntityRenderer<BlockEntity, BlockEntityRenderState> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity); BlockEntityRenderer<BlockEntity, BlockEntityRenderState> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity);
BlockEntityRenderState state = client.getBlockEntityRenderDispatcher().tryExtractRenderState(BlockEntity, partialTick, null); BlockEntityRenderState state = client.getBlockEntityRenderDispatcher().tryExtractRenderState(BlockEntity, partialTick, null, true);
// levelRenderer;;submitBlockEntities does a weird transpose // levelRenderer;;submitBlockEntities does a weird transpose
@@ -474,7 +474,7 @@ public class ShapesRenderer
//matrices.mulPose(levelRenderState.cameraRenderState.); //matrices.mulPose(levelRenderState.cameraRenderState.);
blockEntityRenderer.submit(state, matrices,client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage(), levelRenderState.cameraRenderState); blockEntityRenderer.submit(state, matrices,client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), levelRenderState.cameraRenderState);
//blockEntityRenderer.submit(BlockEntity, partialTick, //blockEntityRenderer.submit(BlockEntity, partialTick,
// matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage()); // matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
@@ -490,14 +490,14 @@ public class ShapesRenderer
final ItemStackRenderState itemState = new ItemStackRenderState(); final ItemStackRenderState itemState = new ItemStackRenderState();
client.getItemModelResolver().updateForTopItem(itemState, shape.item, ItemDisplayContext.FIXED, client.level, null, 0); 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); itemState.submit(matrices, client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE);
//client.getItemRenderer().renderStatic(shape.item, transformType, light, //client.getItemRenderer().renderStatic(shape.item, transformType, light,
// OverlayTexture.NO_OVERLAY, matrices, immediate, client.level, (int) shape.key(client.level.registryAccess())); // OverlayTexture.NO_OVERLAY, matrices, immediate, client.level, (int) shape.key(client.level.registryAccess()));
} }
} }
matrices.popPose(); matrices.popPose();
immediate.endBatch(); immediate.uploadAndDraw();
////RenderSystem.disableCull(); ////RenderSystem.disableCull();
////RenderSystem.disableDepthTest(); ////RenderSystem.disableDepthTest();
////RenderSystem.depthMask(false); ////RenderSystem.depthMask(false);
@@ -528,7 +528,7 @@ public class ShapesRenderer
return; return;
} }
Vec3 v1 = shape.relativiseRender(client.level, shape.pos, partialTick); Vec3 v1 = shape.relativiseRender(client.level, shape.pos, partialTick);
Camera camera1 = client.gameRenderer.getMainCamera(); Camera camera1 = client.gameRenderer.mainCamera();
Font textRenderer = client.font; Font textRenderer = client.font;
if (shape.doublesided) if (shape.doublesided)
{ {
@@ -571,14 +571,15 @@ public class ShapesRenderer
{ {
text_x = (float) (-textRenderer.width(shape.value.getString())); text_x = (float) (-textRenderer.width(shape.value.getString()));
} }
try (ByteBufferBuilder bbb = new ByteBufferBuilder(RenderType.TRANSIENT_BUFFER_SIZE)) //try (ByteBufferBuilder bbb = new ByteBufferBuilder(RenderType.TRANSIENT_BUFFER_SIZE))
{ //{
MultiBufferSource.BufferSource immediate = MultiBufferSource.immediate(bbb); MultiBufferSource.BufferSource immediate = Minecraft.getInstance().gameRenderer.renderBuffers().bufferSource();
// text doesn't appear if backgroud is set // text doesn't appear if backgroud is set
///script run draw_shape('label', 100, 'pos', [200, 100, 200], 'text', 'Hewwo World!', 'color', 0xffffffff, 'fill', 0x33333333) ///script run draw_shape('label', 100, 'pos', [200, 100, 200], 'text', 'Hewwo World!', 'color', 0xffffffff, 'fill', 0x33333333)
textRenderer.drawInBatch(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.last().pose(), immediate, Font.DisplayMode.SEE_THROUGH, shape.textbck, 15728880); textRenderer.drawInBatch(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.last().pose(), immediate, Font.DisplayMode.SEE_THROUGH, shape.textbck, 15728880);
immediate.endBatch(); immediate.uploadAndDraw();
} //}
matrices.popPose(); matrices.popPose();
////RenderSystem.enableCull(); ////RenderSystem.enableCull();
} }
@@ -47,6 +47,7 @@ import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.AgeableMob;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
@@ -303,44 +304,44 @@ public class EntityValue extends Value
// nonliving types // nonliving types
Set<EntityType<?>> projectiles = Set.of( Set<EntityType<?>> projectiles = Set.of(
EntityType.ARROW, EntityType.DRAGON_FIREBALL, EntityType.FIREWORK_ROCKET, EntityTypes.ARROW, EntityTypes.DRAGON_FIREBALL, EntityTypes.FIREWORK_ROCKET,
EntityType.FIREBALL, EntityType.LLAMA_SPIT, EntityType.SMALL_FIREBALL, EntityTypes.FIREBALL, EntityTypes.LLAMA_SPIT, EntityTypes.SMALL_FIREBALL,
EntityType.SNOWBALL, EntityType.SPECTRAL_ARROW, EntityType.EGG, EntityTypes.SNOWBALL, EntityTypes.SPECTRAL_ARROW, EntityTypes.EGG,
EntityType.ENDER_PEARL, EntityType.EXPERIENCE_BOTTLE, EntityType.SPLASH_POTION, EntityType.LINGERING_POTION, EntityTypes.ENDER_PEARL, EntityTypes.EXPERIENCE_BOTTLE, EntityTypes.SPLASH_POTION, EntityTypes.LINGERING_POTION,
EntityType.TRIDENT, EntityType.WITHER_SKULL, EntityType.FISHING_BOBBER, EntityType.SHULKER_BULLET EntityTypes.TRIDENT, EntityTypes.WITHER_SKULL, EntityTypes.FISHING_BOBBER, EntityTypes.SHULKER_BULLET
); );
Set<EntityType<?>> deads = Set.of( Set<EntityType<?>> deads = Set.of(
EntityType.AREA_EFFECT_CLOUD, EntityType.MARKER, EntityType.END_CRYSTAL, EntityTypes.AREA_EFFECT_CLOUD, EntityTypes.MARKER, EntityTypes.END_CRYSTAL,
EntityType.EVOKER_FANGS, EntityType.EXPERIENCE_ORB, EntityType.EYE_OF_ENDER, EntityTypes.EVOKER_FANGS, EntityTypes.EXPERIENCE_ORB, EntityTypes.EYE_OF_ENDER,
EntityType.FALLING_BLOCK, EntityType.ITEM, EntityType.ITEM_FRAME, EntityType.GLOW_ITEM_FRAME, EntityTypes.FALLING_BLOCK, EntityTypes.ITEM, EntityTypes.ITEM_FRAME, EntityTypes.GLOW_ITEM_FRAME,
EntityType.LEASH_KNOT, EntityType.LIGHTNING_BOLT, EntityType.PAINTING, EntityTypes.LEASH_KNOT, EntityTypes.LIGHTNING_BOLT, EntityTypes.PAINTING,
EntityType.TNT, EntityType.ARMOR_STAND EntityTypes.TNT, EntityTypes.ARMOR_STAND
); );
Set<EntityType<?>> minecarts = Set.of( Set<EntityType<?>> minecarts = Set.of(
EntityType.MINECART, EntityType.CHEST_MINECART, EntityType.COMMAND_BLOCK_MINECART, EntityTypes.MINECART, EntityTypes.CHEST_MINECART, EntityTypes.COMMAND_BLOCK_MINECART,
EntityType.FURNACE_MINECART, EntityType.HOPPER_MINECART, EntityTypes.FURNACE_MINECART, EntityTypes.HOPPER_MINECART,
EntityType.SPAWNER_MINECART, EntityType.TNT_MINECART EntityTypes.SPAWNER_MINECART, EntityTypes.TNT_MINECART
); );
// living mob groups - non-defeault // living mob groups - non-defeault
Set<EntityType<?>> undeads = Set.of( Set<EntityType<?>> undeads = Set.of(
EntityType.STRAY, EntityType.SKELETON, EntityType.WITHER_SKELETON, EntityTypes.STRAY, EntityTypes.SKELETON, EntityTypes.WITHER_SKELETON,
EntityType.ZOMBIE, EntityType.DROWNED, EntityType.ZOMBIE_VILLAGER, EntityTypes.ZOMBIE, EntityTypes.DROWNED, EntityTypes.ZOMBIE_VILLAGER,
EntityType.ZOMBIE_HORSE, EntityType.SKELETON_HORSE, EntityType.PHANTOM, EntityTypes.ZOMBIE_HORSE, EntityTypes.SKELETON_HORSE, EntityTypes.PHANTOM,
EntityType.WITHER, EntityType.ZOGLIN, EntityType.HUSK, EntityType.ZOMBIFIED_PIGLIN EntityTypes.WITHER, EntityTypes.ZOGLIN, EntityTypes.HUSK, EntityTypes.ZOMBIFIED_PIGLIN
); );
Set<EntityType<?>> arthropods = Set.of( Set<EntityType<?>> arthropods = Set.of(
EntityType.BEE, EntityType.ENDERMITE, EntityType.SILVERFISH, EntityType.SPIDER, EntityTypes.BEE, EntityTypes.ENDERMITE, EntityTypes.SILVERFISH, EntityTypes.SPIDER,
EntityType.CAVE_SPIDER EntityTypes.CAVE_SPIDER
); );
Set<EntityType<?>> aquatique = Set.of( Set<EntityType<?>> aquatique = Set.of(
EntityType.GUARDIAN, EntityType.TURTLE, EntityType.COD, EntityType.DOLPHIN, EntityType.PUFFERFISH, EntityTypes.GUARDIAN, EntityTypes.TURTLE, EntityTypes.COD, EntityTypes.DOLPHIN, EntityTypes.PUFFERFISH,
EntityType.SALMON, EntityType.SQUID, EntityType.TROPICAL_FISH EntityTypes.SALMON, EntityTypes.SQUID, EntityTypes.TROPICAL_FISH
); );
Set<EntityType<?>> illagers = Set.of( Set<EntityType<?>> illagers = Set.of(
EntityType.PILLAGER, EntityType.ILLUSIONER, EntityType.VINDICATOR, EntityType.EVOKER, EntityTypes.PILLAGER, EntityTypes.ILLUSIONER, EntityTypes.VINDICATOR, EntityTypes.EVOKER,
EntityType.RAVAGER, EntityType.WITCH EntityTypes.RAVAGER, EntityTypes.WITCH
); );
Set<EntityType<?>> living = allTypes.stream().filter(et -> Set<EntityType<?>> living = allTypes.stream().filter(et ->
@@ -7,7 +7,7 @@ import carpet.script.external.Vanilla;
import carpet.script.utils.Colors; import carpet.script.utils.Colors;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import net.minecraft.advancements.criterion.MinMaxBounds; import net.minecraft.advancements.predicates.MinMaxBounds;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.GlobalPos; import net.minecraft.core.GlobalPos;
import net.minecraft.core.HolderSet; import net.minecraft.core.HolderSet;
+2 -2
View File
@@ -10,7 +10,7 @@ import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.PathfinderMob;
import net.minecraft.world.entity.ai.goal.RandomStrollGoal; import net.minecraft.world.entity.ai.goal.RandomStrollGoal;
import net.minecraft.world.entity.ai.util.DefaultRandomPos; import net.minecraft.world.entity.ai.util.DefaultRandomPos;
@@ -74,7 +74,7 @@ public class BlockInfo
private static Component wander_chances(BlockPos pos, ServerLevel worldIn) private static Component wander_chances(BlockPos pos, ServerLevel worldIn)
{ {
PathfinderMob creature = new ZombifiedPiglin(EntityType.ZOMBIFIED_PIGLIN, worldIn); PathfinderMob creature = new ZombifiedPiglin(EntityTypes.ZOMBIFIED_PIGLIN, worldIn);
creature.finalizeSpawn(worldIn, worldIn.getCurrentDifficultyAt(pos), EntitySpawnReason.NATURAL, null); creature.finalizeSpawn(worldIn, worldIn.getCurrentDifficultyAt(pos), EntitySpawnReason.NATURAL, null);
creature.snapTo(pos, 0.0F, 0.0F); creature.snapTo(pos, 0.0F, 0.0F);
RandomStrollGoal wander = new RandomStrollGoal(creature, 0.8D); RandomStrollGoal wander = new RandomStrollGoal(creature, 0.8D);
+3 -2
View File
@@ -17,6 +17,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
public class MobAI public class MobAI
@@ -78,8 +79,8 @@ public class MobAI
public enum TrackingType public enum TrackingType
{ {
IRON_GOLEM_SPAWNING(Set.of(EntityType.VILLAGER)), IRON_GOLEM_SPAWNING(Set.of(EntityTypes.VILLAGER)),
BREEDING(Set.of(EntityType.VILLAGER)); BREEDING(Set.of(EntityTypes.VILLAGER));
public final Set<EntityType<?>> types; public final Set<EntityType<?>> types;
TrackingType(Set<EntityType<?>> applicableTypes) TrackingType(Set<EntityType<?>> applicableTypes)
{ {
@@ -9,6 +9,7 @@ import net.minecraft.util.random.Weighted;
import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.AgeableMob;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.SpawnPlacements; import net.minecraft.world.entity.SpawnPlacements;
@@ -86,7 +87,7 @@ public class PerimeterDiagnostics
} }
} }
PerimeterDiagnostics diagnostic = new PerimeterDiagnostics(worldserver,ctype,el); PerimeterDiagnostics diagnostic = new PerimeterDiagnostics(worldserver,ctype,el);
EntityType<?> type = EntityType.ZOMBIE; EntityType<?> type = EntityTypes.ZOMBIE;
if (el != null) type = el.getType(); if (el != null) type = el.getType();
int minY = worldserver.getMinY(); int minY = worldserver.getMinY();
int maxY = worldserver.getMaxY(); int maxY = worldserver.getMaxY();
@@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.random.WeightedList; import net.minecraft.util.random.WeightedList;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.level.StructureManager; import net.minecraft.world.level.StructureManager;
import net.minecraft.world.level.biome.MobSpawnSettings; import net.minecraft.world.level.biome.MobSpawnSettings;
@@ -32,16 +32,16 @@ public class SpawnOverrides {
static { static {
addOverride(() -> CarpetSettings.huskSpawningInTemples, MobCategory.MONSTER, BuiltinStructures.DESERT_PYRAMID, StructureSpawnOverride.BoundingBoxType.STRUCTURE, addOverride(() -> CarpetSettings.huskSpawningInTemples, MobCategory.MONSTER, BuiltinStructures.DESERT_PYRAMID, StructureSpawnOverride.BoundingBoxType.STRUCTURE,
WeightedList.of(new MobSpawnSettings.SpawnerData(EntityType.HUSK, 1, 1)) WeightedList.of(new MobSpawnSettings.SpawnerData(EntityTypes.HUSK, 1, 1))
); );
addOverride(() -> CarpetSettings.shulkerSpawningInEndCities, MobCategory.MONSTER, BuiltinStructures.END_CITY, StructureSpawnOverride.BoundingBoxType.PIECE, addOverride(() -> CarpetSettings.shulkerSpawningInEndCities, MobCategory.MONSTER, BuiltinStructures.END_CITY, StructureSpawnOverride.BoundingBoxType.PIECE,
WeightedList.of(new MobSpawnSettings.SpawnerData(EntityType.SHULKER, 4, 4)) WeightedList.of(new MobSpawnSettings.SpawnerData(EntityTypes.SHULKER, 4, 4))
); );
addOverride(() -> CarpetSettings.piglinsSpawningInBastions, MobCategory.MONSTER, BuiltinStructures.BASTION_REMNANT, StructureSpawnOverride.BoundingBoxType.PIECE, addOverride(() -> CarpetSettings.piglinsSpawningInBastions, MobCategory.MONSTER, BuiltinStructures.BASTION_REMNANT, StructureSpawnOverride.BoundingBoxType.PIECE,
WeightedList.<MobSpawnSettings.SpawnerData>builder() WeightedList.<MobSpawnSettings.SpawnerData>builder()
.add(new MobSpawnSettings.SpawnerData(EntityType.PIGLIN_BRUTE,1, 2), 5) .add(new MobSpawnSettings.SpawnerData(EntityTypes.PIGLIN_BRUTE,1, 2), 5)
.add(new MobSpawnSettings.SpawnerData(EntityType.PIGLIN, 2, 4), 10) .add(new MobSpawnSettings.SpawnerData(EntityTypes.PIGLIN, 2, 4), 10)
.add(new MobSpawnSettings.SpawnerData(EntityType.HOGLIN, 1, 2), 2) .add(new MobSpawnSettings.SpawnerData(EntityTypes.HOGLIN, 1, 2), 2)
.build() .build()
); );
@@ -18,6 +18,7 @@ import net.minecraft.util.random.WeightedList;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntitySpawnReason;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.SpawnPlacements; import net.minecraft.world.entity.SpawnPlacements;
@@ -456,7 +457,7 @@ public class SpawnReporter
// && mob.canSpawn(worldIn) // entity collisions // mostly - except ocelots // && mob.canSpawn(worldIn) // entity collisions // mostly - except ocelots
) )
{ {
if (etype == EntityType.OCELOT) if (etype == EntityTypes.OCELOT)
{ {
BlockState blockState = worldIn.getBlockState(pos.below()); BlockState blockState = worldIn.getBlockState(pos.below());
if ((pos.getY() < worldIn.getSeaLevel()) || !(blockState.is(Blocks.GRASS_BLOCK) || blockState.is(BlockTags.LEAVES))) { if ((pos.getY() < worldIn.getSeaLevel()) || !(blockState.is(Blocks.GRASS_BLOCK) || blockState.is(BlockTags.LEAVES))) {