Fixed monolith spawning and monolith model

Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/DimensionalDoorsClientInitializer.java
	modified:   src/main/java/org/dimdev/dimdoors/client/CustomSkyProvider.java
	modified:   src/main/java/org/dimdev/dimdoors/client/MonolithModel.java
	modified:   src/main/java/org/dimdev/dimdoors/entity/ModEntityTypes.java
	modified:   src/main/java/org/dimdev/dimdoors/entity/MonolithEntity.java
	modified:   src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java
	modified:   src/main/resources/data/minecraft/dimension/dimdoors/limbo.json
	modified:   src/main/resources/dimdoors.mixins.json
This commit is contained in:
SD 2020-07-18 12:26:44 +05:30
parent 1a98f92a76
commit 1a00008cd3
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
8 changed files with 31 additions and 33 deletions

View file

@ -14,7 +14,6 @@ import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.SkyProperties;
import net.minecraft.client.texture.Sprite; import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluid;
@ -23,7 +22,6 @@ import net.minecraft.resource.ResourceManager;
import net.minecraft.resource.ResourceType; import net.minecraft.resource.ResourceType;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.Vec3i;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.BlockRenderView; import net.minecraft.world.BlockRenderView;

View file

@ -3,16 +3,17 @@ package org.dimdev.dimdoors.client;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import io.github.waterpicker.openworlds.renderer.SkyRenderer; import io.github.waterpicker.openworlds.renderer.SkyRenderer;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.*;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f; import net.minecraft.client.util.math.Vector3f;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.Matrix4f; import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.Vec3i;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public class CustomSkyProvider implements SkyRenderer { public class CustomSkyProvider implements SkyRenderer {
private final Identifier moon; private final Identifier moon;
private final Identifier sun; private final Identifier sun;

View file

@ -18,7 +18,7 @@ public class MonolithModel extends EntityModel<MonolithEntity> {
body = new ModelPart(this); body = new ModelPart(this);
body.setPivot(0.0F, 24.0F, 0.0F); 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 @Override

View file

@ -37,6 +37,6 @@ public class ModEntityTypes {
} }
private static <E extends Entity> EntityType<E> register(String id, EntityType.EntityFactory<E> factory, int width, int height) { private static <E extends Entity> EntityType<E> register(String id, EntityType.EntityFactory<E> 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());
} }
} }

View file

@ -19,6 +19,8 @@ import net.minecraft.util.math.Box;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;
import org.dimdev.dimdoors.entity.ai.MonolithTask; import org.dimdev.dimdoors.entity.ai.MonolithTask;
import org.dimdev.dimdoors.sound.ModSoundEvents; import org.dimdev.dimdoors.sound.ModSoundEvents;
import org.dimdev.dimdoors.world.ModDimensions; import org.dimdev.dimdoors.world.ModDimensions;
@ -28,7 +30,7 @@ import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.network.PacketContext; import net.fabricmc.fabric.api.network.PacketContext;
public class MonolithEntity extends MobEntity { 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; public static final int MAX_AGGRO = 250;
private static final int MAX_AGGRO_CAP = 100; private static final int MAX_AGGRO_CAP = 100;
@ -45,12 +47,16 @@ public class MonolithEntity extends MobEntity {
private int soundTime = 0; private int soundTime = 0;
private final int aggroCap; private final int aggroCap;
MonolithEntity(World world){
this(ModEntityTypes.MONOLITH, world);
}
public MonolithEntity(EntityType<? extends MonolithEntity> type, World world) { public MonolithEntity(EntityType<? extends MonolithEntity> type, World world) {
super(ModEntityTypes.MONOLITH, world); super(ModEntityTypes.MONOLITH, world);
random = this.getRandom(); random = this.getRandom();
noClip = true; noClip = true;
aggroCap = MathHelper.nextInt(getRandom(), MIN_AGGRO_CAP, MAX_AGGRO_CAP); aggroCap = MathHelper.nextInt(getRandom(), MIN_AGGRO_CAP, MAX_AGGRO_CAP);
setNoGravity(true); this.setNoGravity(true);
lookControl = new LookControl(this) { lookControl = new LookControl(this) {
@Override @Override
protected boolean shouldStayHorizontal() { protected boolean shouldStayHorizontal() {
@ -65,7 +71,6 @@ public class MonolithEntity extends MobEntity {
return DIMENSIONS; return DIMENSIONS;
} }
public boolean isDangerous() { public boolean isDangerous() {
return true; //return ModConfig.MONOLITHS.monolithTeleportation && (world.dimension instanceof LimboDimension || ModConfig.MONOLITHS.dangerousLimboMonoliths); return true; //return ModConfig.MONOLITHS.monolithTeleportation && (world.dimension instanceof LimboDimension || ModConfig.MONOLITHS.dangerousLimboMonoliths);
} }
@ -78,16 +83,6 @@ public class MonolithEntity extends MobEntity {
return false; return false;
} }
@Override
public LookControl getLookControl() {
return super.getLookControl();
}
@Override
public int getMaxAir() {
return super.getMaxAir();
}
@Override @Override
protected int getNextAirUnderwater(int i) { protected int getNextAirUnderwater(int i) {
return 10; return 10;
@ -110,7 +105,7 @@ public class MonolithEntity extends MobEntity {
@Override @Override
public boolean cannotDespawn() { public boolean cannotDespawn() {
return true; return false;
} }
@Override @Override
@ -118,11 +113,6 @@ public class MonolithEntity extends MobEntity {
return false; return false;
} }
@Override
public double getEyeY() {
return super.getEyeY();
}
@Override @Override
protected void initDataTracker() { protected void initDataTracker() {
super.initDataTracker(); super.initDataTracker();
@ -143,7 +133,7 @@ public class MonolithEntity extends MobEntity {
protected void mobTick() { protected void mobTick() {
// Remove this Monolith if it's not in Limbo or in a pocket dungeon // Remove this Monolith if it's not in Limbo or in a pocket dungeon
if (!(ModDimensions.isLimboDimension(world) || ModDimensions.isDimDoorsPocketDimension(world))) { if (!(ModDimensions.isLimboDimension(world) || ModDimensions.isDimDoorsPocketDimension(world))) {
remove(); this.remove();
super.mobTick(); super.mobTick();
return; return;
} }
@ -151,8 +141,6 @@ public class MonolithEntity extends MobEntity {
super.mobTick(); super.mobTick();
// Check for players and update aggro levels even if there are no players in range // Check for players and update aggro levels even if there are no players in range
/*
}*/
} }
public void updateAggroLevel(PlayerEntity player, boolean visibility) { 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.world.addParticle(ParticleTypes.PORTAL, player.getX() + (random.nextDouble() - 0.5D) * 3.0,
player.getY() + random.nextDouble() * player.getHeight() - 0.75D, player.getY() + random.nextDouble() * player.getHeight() - 0.75D,
player.getZ() + (random.nextDouble() - 0.5D) * player.getWidth(), 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); (random.nextDouble() - 0.5D) * 2.0D);
} }
}); });
@ -276,4 +264,15 @@ public class MonolithEntity extends MobEntity {
public void setAggro(int aggro) { public void setAggro(int aggro) {
dataTracker.set(AGGRO, 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;
}
} }

View file

@ -7,6 +7,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.block.BlockWithEntity; import net.minecraft.block.BlockWithEntity;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.resource.Resource; import net.minecraft.resource.Resource;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;

View file

@ -23,7 +23,7 @@
"bedrock_floor_position": 0, "bedrock_floor_position": 0,
"bedrock_roof_position": -1, "bedrock_roof_position": -1,
"disable_mob_generation": false, "disable_mob_generation": false,
"sea_level": 0, "sea_level": 32,
"structures": { "structures": {
"structures": {} "structures": {}
}, },

View file

@ -5,7 +5,6 @@
"mixins": [ "mixins": [
], ],
"client": [ "client": [
], ],
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1