Fixed crash due to missing entity renderers/removed the rainbow spawner

This commit is contained in:
Sollace 2020-04-24 19:35:51 +02:00
parent 5874162852
commit 03944f6015
5 changed files with 23 additions and 51 deletions

View file

@ -22,6 +22,9 @@ import net.minecraft.client.render.entity.FlyingItemEntityRenderer;
public interface URenderers { public interface URenderers {
static void bootstrap() { static void bootstrap() {
EntityRendererRegistry.INSTANCE.register(UEntities.CLOUD, CloudEntityRenderer::new); EntityRendererRegistry.INSTANCE.register(UEntities.CLOUD, CloudEntityRenderer::new);
EntityRendererRegistry.INSTANCE.register(UEntities.WILD_CLOUD, CloudEntityRenderer::new);
EntityRendererRegistry.INSTANCE.register(UEntities.CONSTRUCTION_CLOUD, CloudEntityRenderer::new);
EntityRendererRegistry.INSTANCE.register(UEntities.RACING_CLOUD, CloudEntityRenderer::new);
EntityRendererRegistry.INSTANCE.register(UEntities.MAGIC_SPELL, SpellcastEntityRenderer::new); EntityRendererRegistry.INSTANCE.register(UEntities.MAGIC_SPELL, SpellcastEntityRenderer::new);
EntityRendererRegistry.INSTANCE.register(UEntities.THROWN_ITEM, (manager, context) -> new FlyingItemEntityRenderer<>(manager, context.getItemRenderer())); EntityRendererRegistry.INSTANCE.register(UEntities.THROWN_ITEM, (manager, context) -> new FlyingItemEntityRenderer<>(manager, context.getItemRenderer()));
EntityRendererRegistry.INSTANCE.register(UEntities.SPELLBOOK, SpellbookEntityRender::new); EntityRendererRegistry.INSTANCE.register(UEntities.SPELLBOOK, SpellbookEntityRender::new);

View file

@ -15,8 +15,8 @@ import com.minelittlepony.unicopia.util.WorldHelper;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
public class CloudEntityRenderer extends LivingEntityRenderer<CloudEntity, CloudEntityModel> { public class CloudEntityRenderer extends LivingEntityRenderer<CloudEntity, CloudEntityModel> {
private static final Identifier cloud = new Identifier("unicopia", "textures/entity/clouds.png"); private static final Identifier NORMAL = new Identifier("unicopia", "textures/entity/clouds.png");
private static final Identifier rainCloud = new Identifier("unicopia", "textures/entity/clouds_storm.png"); private static final Identifier RAINING = new Identifier("unicopia", "textures/entity/clouds_storm.png");
public CloudEntityRenderer(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) { public CloudEntityRenderer(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) {
super(manager, new CloudEntityModel(), 1f); super(manager, new CloudEntityModel(), 1f);
@ -58,9 +58,9 @@ public class CloudEntityRenderer extends LivingEntityRenderer<CloudEntity, Cloud
@Override @Override
public Identifier getTexture(CloudEntity entity) { public Identifier getTexture(CloudEntity entity) {
if (entity.getIsRaining() && entity.getIsThundering()) { if (entity.getIsRaining() && entity.getIsThundering()) {
return rainCloud; return RAINING;
} }
return cloud; return NORMAL;
} }
@Override @Override

View file

@ -18,13 +18,12 @@ import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public class RainbowEntityRenderer extends EntityRenderer<RainbowEntity> { public class RainbowEntityRenderer extends EntityRenderer<RainbowEntity> {
private static final Identifier TEXTURE = new Identifier("unicopia", "textures/environment/rainbow.png");
public RainbowEntityRenderer(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) { public RainbowEntityRenderer(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) {
super(manager); super(manager);
} }
private static final Identifier TEXTURE = new Identifier("unicopia", "textures/environment/rainbow.png");
@Override @Override
public Identifier getTexture(RainbowEntity entity) { public Identifier getTexture(RainbowEntity entity) {
return TEXTURE; return TEXTURE;

View file

@ -19,9 +19,9 @@ import net.minecraft.world.IWorld;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.biome.Biome.SpawnEntry; import net.minecraft.world.biome.Biome.SpawnEntry;
public class RainbowEntity extends Entity implements InAnimate { public class RainbowEntity extends MobEntity implements InAnimate {
public static final SpawnEntry SPAWN_ENTRY = new SpawnEntry(UEntities.RAINBOW_SPAWNER, 1, 1, 1); public static final SpawnEntry SPAWN_ENTRY = new SpawnEntry(UEntities.RAINBOW, 1, 1, 1);
private int ticksAlive; private int ticksAlive;
@ -98,7 +98,6 @@ public class RainbowEntity extends Entity implements InAnimate {
Box bounds = SPAWN_COLLISSION_RADIUS.offset(getPos()); Box bounds = SPAWN_COLLISSION_RADIUS.offset(getPos());
world.getEntities(RainbowEntity.class, bounds, null).forEach(this::attackCompetitor); world.getEntities(RainbowEntity.class, bounds, null).forEach(this::attackCompetitor);
world.getEntities(RainbowEntity.Spawner.class, bounds, null).forEach(this::attackCompetitor);
} }
} }
@ -108,38 +107,13 @@ public class RainbowEntity extends Entity implements InAnimate {
} }
} }
@Override
protected void initDataTracker() {
}
@Override
protected void readCustomDataFromTag(CompoundTag var1) {
}
@Override
protected void writeCustomDataToTag(CompoundTag var1) {
}
@Override
public Packet<?> createSpawnPacket() {
return Channel.SPAWN_RAINBOW.toPacket(new MsgSpawnRainbow(this));
}
public static class Spawner extends MobEntity {
public Spawner(EntityType<Spawner> type, World world) {
super(type, world);
this.setInvisible(true);
}
@Override @Override
public boolean canSpawn(IWorld world, SpawnType type) { public boolean canSpawn(IWorld world, SpawnType type) {
Box bounds = SPAWN_COLLISSION_RADIUS.offset(getPos()); Box bounds = SPAWN_COLLISSION_RADIUS.offset(getPos());
return super.canSpawn(world, type) return super.canSpawn(world, type)
&& world.getEntities(RainbowEntity.class, bounds, null).isEmpty() && world.getEntities(RainbowEntity.class, bounds, null).isEmpty();
&& world.getEntities(RainbowEntity.Spawner.class, bounds, null).isEmpty();
} }
@Override @Override
@ -148,18 +122,15 @@ public class RainbowEntity extends Entity implements InAnimate {
} }
@Override @Override
public void tick() { public void readCustomDataFromTag(CompoundTag var1) {
super.tick();
if (!this.dead) {
remove();
trySpawnRainbow();
}
} }
public void trySpawnRainbow() { @Override
RainbowEntity rainbow = UEntities.RAINBOW.create(world); public void writeCustomDataToTag(CompoundTag var1) {
rainbow.setPos(getX(), getY(), getZ());
world.spawnEntity(rainbow);
} }
@Override
public Packet<?> createSpawnPacket() {
return Channel.SPAWN_RAINBOW.toPacket(new MsgSpawnRainbow(this));
} }
} }

View file

@ -28,7 +28,6 @@ public interface UEntities {
EntityType<ConstructionCloudEntity> CONSTRUCTION_CLOUD = register("construction_cloud", FabricEntityTypeBuilder.create(EntityCategory.CREATURE, ConstructionCloudEntity::new)); EntityType<ConstructionCloudEntity> CONSTRUCTION_CLOUD = register("construction_cloud", FabricEntityTypeBuilder.create(EntityCategory.CREATURE, ConstructionCloudEntity::new));
EntityType<RainbowEntity> RAINBOW = register("rainbow", FabricEntityTypeBuilder.create(EntityCategory.AMBIENT, RainbowEntity::new)); EntityType<RainbowEntity> RAINBOW = register("rainbow", FabricEntityTypeBuilder.create(EntityCategory.AMBIENT, RainbowEntity::new));
EntityType<RainbowEntity.Spawner> RAINBOW_SPAWNER = register("rainbow_spawner", FabricEntityTypeBuilder.create(EntityCategory.MISC, RainbowEntity.Spawner::new));
EntityType<CuccoonEntity> CUCCOON = register("cuccoon", FabricEntityTypeBuilder.create(EntityCategory.MISC, CuccoonEntity::new).size(EntityDimensions.changing(1.5F, 1.6F))); EntityType<CuccoonEntity> CUCCOON = register("cuccoon", FabricEntityTypeBuilder.create(EntityCategory.MISC, CuccoonEntity::new).size(EntityDimensions.changing(1.5F, 1.6F)));