diff --git a/src/main/java/org/dimdev/dimdoors/DimensionalDoorsClientInitializer.java b/src/main/java/org/dimdev/dimdoors/DimensionalDoorsClientInitializer.java index 90739d29..66010836 100644 --- a/src/main/java/org/dimdev/dimdoors/DimensionalDoorsClientInitializer.java +++ b/src/main/java/org/dimdev/dimdoors/DimensionalDoorsClientInitializer.java @@ -14,7 +14,6 @@ import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; import net.minecraft.block.Block; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.SkyProperties; import net.minecraft.client.texture.Sprite; import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.fluid.Fluid; @@ -23,7 +22,6 @@ import net.minecraft.resource.ResourceManager; import net.minecraft.resource.ResourceType; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; import net.minecraft.util.registry.Registry; import net.minecraft.world.BlockRenderView; diff --git a/src/main/java/org/dimdev/dimdoors/client/CustomSkyProvider.java b/src/main/java/org/dimdev/dimdoors/client/CustomSkyProvider.java index 4188db5d..32624439 100644 --- a/src/main/java/org/dimdev/dimdoors/client/CustomSkyProvider.java +++ b/src/main/java/org/dimdev/dimdoors/client/CustomSkyProvider.java @@ -3,16 +3,17 @@ package org.dimdev.dimdoors.client; import com.mojang.blaze3d.systems.RenderSystem; import io.github.waterpicker.openworlds.renderer.SkyRenderer; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.BufferRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormats; +import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.Vector3f; import net.minecraft.util.Identifier; import net.minecraft.util.math.Matrix4f; import net.minecraft.util.math.Vec3i; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class CustomSkyProvider implements SkyRenderer { private final Identifier moon; private final Identifier sun; diff --git a/src/main/java/org/dimdev/dimdoors/client/MonolithModel.java b/src/main/java/org/dimdev/dimdoors/client/MonolithModel.java index 92e6120a..4153a7e1 100644 --- a/src/main/java/org/dimdev/dimdoors/client/MonolithModel.java +++ b/src/main/java/org/dimdev/dimdoors/client/MonolithModel.java @@ -18,7 +18,7 @@ public class MonolithModel extends EntityModel { body = new ModelPart(this); body.setPivot(0.0F, 24.0F, 0.0F); - body.setTextureOffset(0, 0).addCuboid(-24.0F, -54.0F, -6.0F, 48.0F, 108.0F, 12.0F, 0.0F, false); + body.setTextureOffset(0, 0).addCuboid(-24.0F, -108.0F, -6.0F, 48.0F, 108.0F, 12.0F, 0.0F, false); } @Override diff --git a/src/main/java/org/dimdev/dimdoors/entity/ModEntityTypes.java b/src/main/java/org/dimdev/dimdoors/entity/ModEntityTypes.java index 1b7dd4dd..b7579e31 100644 --- a/src/main/java/org/dimdev/dimdoors/entity/ModEntityTypes.java +++ b/src/main/java/org/dimdev/dimdoors/entity/ModEntityTypes.java @@ -37,6 +37,6 @@ public class ModEntityTypes { } private static EntityType register(String id, EntityType.EntityFactory factory, int width, int height) { - return Registry.register(Registry.ENTITY_TYPE, id, FabricEntityTypeBuilder.create(SpawnGroup.MONSTER, factory).dimensions(EntityDimensions.fixed(width, height)).fireImmune().build()); + return Registry.register(Registry.ENTITY_TYPE, id, FabricEntityTypeBuilder.create(SpawnGroup.MONSTER, factory).dimensions(EntityDimensions.fixed(width, height)).spawnableFarFromPlayer().fireImmune().build()); } } diff --git a/src/main/java/org/dimdev/dimdoors/entity/MonolithEntity.java b/src/main/java/org/dimdev/dimdoors/entity/MonolithEntity.java index 799cd933..104dff50 100644 --- a/src/main/java/org/dimdev/dimdoors/entity/MonolithEntity.java +++ b/src/main/java/org/dimdev/dimdoors/entity/MonolithEntity.java @@ -19,6 +19,8 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; + import org.dimdev.dimdoors.entity.ai.MonolithTask; import org.dimdev.dimdoors.sound.ModSoundEvents; import org.dimdev.dimdoors.world.ModDimensions; @@ -28,7 +30,7 @@ import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.network.PacketContext; public class MonolithEntity extends MobEntity { - public final EntityDimensions DIMENSIONS = EntityDimensions.fixed(3f, 3f); + public final EntityDimensions DIMENSIONS = EntityDimensions.fixed(3f, 6f); public static final int MAX_AGGRO = 250; private static final int MAX_AGGRO_CAP = 100; @@ -45,12 +47,16 @@ public class MonolithEntity extends MobEntity { private int soundTime = 0; private final int aggroCap; + MonolithEntity(World world){ + this(ModEntityTypes.MONOLITH, world); + } + public MonolithEntity(EntityType type, World world) { super(ModEntityTypes.MONOLITH, world); random = this.getRandom(); noClip = true; aggroCap = MathHelper.nextInt(getRandom(), MIN_AGGRO_CAP, MAX_AGGRO_CAP); - setNoGravity(true); + this.setNoGravity(true); lookControl = new LookControl(this) { @Override protected boolean shouldStayHorizontal() { @@ -65,7 +71,6 @@ public class MonolithEntity extends MobEntity { return DIMENSIONS; } - public boolean isDangerous() { return true; //return ModConfig.MONOLITHS.monolithTeleportation && (world.dimension instanceof LimboDimension || ModConfig.MONOLITHS.dangerousLimboMonoliths); } @@ -78,16 +83,6 @@ public class MonolithEntity extends MobEntity { return false; } - @Override - public LookControl getLookControl() { - return super.getLookControl(); - } - - @Override - public int getMaxAir() { - return super.getMaxAir(); - } - @Override protected int getNextAirUnderwater(int i) { return 10; @@ -110,7 +105,7 @@ public class MonolithEntity extends MobEntity { @Override public boolean cannotDespawn() { - return true; + return false; } @Override @@ -118,11 +113,6 @@ public class MonolithEntity extends MobEntity { return false; } - @Override - public double getEyeY() { - return super.getEyeY(); - } - @Override protected void initDataTracker() { super.initDataTracker(); @@ -143,7 +133,7 @@ public class MonolithEntity extends MobEntity { protected void mobTick() { // Remove this Monolith if it's not in Limbo or in a pocket dungeon if (!(ModDimensions.isLimboDimension(world) || ModDimensions.isDimDoorsPocketDimension(world))) { - remove(); + this.remove(); super.mobTick(); return; } @@ -151,8 +141,6 @@ public class MonolithEntity extends MobEntity { super.mobTick(); // Check for players and update aggro levels even if there are no players in range - /* - }*/ } public void updateAggroLevel(PlayerEntity player, boolean visibility) { @@ -236,7 +224,7 @@ public class MonolithEntity extends MobEntity { player.world.addParticle(ParticleTypes.PORTAL, player.getX() + (random.nextDouble() - 0.5D) * 3.0, player.getY() + random.nextDouble() * player.getHeight() - 0.75D, player.getZ() + (random.nextDouble() - 0.5D) * player.getWidth(), - (random.nextDouble() - 0.5D) * 2.0D, -random.nextDouble(), + (random.nextDouble() - 0.5D) * 2.0D, - random.nextDouble(), (random.nextDouble() - 0.5D) * 2.0D); } }); @@ -276,4 +264,15 @@ public class MonolithEntity extends MobEntity { public void setAggro(int aggro) { dataTracker.set(AGGRO, aggro); } + + @Override + public boolean canSpawn(WorldAccess world, SpawnReason spawnReason) { + if(spawnReason == SpawnReason.CHUNK_GENERATION) { + return super.canSpawn(world, spawnReason); + } + if(spawnReason == SpawnReason.NATURAL) { + return this.getRandom().nextInt(32) == 2; + } + return false; + } } diff --git a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java index 1c80d1c3..1662fcda 100644 --- a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java +++ b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java @@ -7,6 +7,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.BlockWithEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.resource.Resource; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; diff --git a/src/main/resources/data/minecraft/dimension/dimdoors/limbo.json b/src/main/resources/data/minecraft/dimension/dimdoors/limbo.json index e73a716a..b61c7e76 100644 --- a/src/main/resources/data/minecraft/dimension/dimdoors/limbo.json +++ b/src/main/resources/data/minecraft/dimension/dimdoors/limbo.json @@ -23,7 +23,7 @@ "bedrock_floor_position": 0, "bedrock_roof_position": -1, "disable_mob_generation": false, - "sea_level": 0, + "sea_level": 32, "structures": { "structures": {} }, diff --git a/src/main/resources/dimdoors.mixins.json b/src/main/resources/dimdoors.mixins.json index cd2804e4..916fe607 100644 --- a/src/main/resources/dimdoors.mixins.json +++ b/src/main/resources/dimdoors.mixins.json @@ -5,7 +5,6 @@ "mixins": [ ], "client": [ - ], "injectors": { "defaultRequire": 1