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.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;

View file

@ -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;

View file

@ -18,7 +18,7 @@ public class MonolithModel extends EntityModel<MonolithEntity> {
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

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) {
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.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<? extends MonolithEntity> 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;
}
}

View file

@ -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;

View file

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

View file

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