mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-21 12:24:22 +01:00
Added rainbows
This commit is contained in:
parent
307e83770c
commit
1f259a7e22
6 changed files with 353 additions and 12 deletions
128
rainbow.svg
Normal file
128
rainbow.svg
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="241.44592mm"
|
||||||
|
height="241.44592mm"
|
||||||
|
viewBox="0 0 241.44592 241.44592"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
sodipodi:docname="rainbow.svg"
|
||||||
|
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<mask
|
||||||
|
maskUnits="userSpaceOnUse"
|
||||||
|
id="mask891">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M -3.7233945,214.15447 C 45.480637,96.633673 161.83001,111.85648 220.14571,211.36193"
|
||||||
|
id="path893"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</mask>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath927">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M -4.2783609,209.45815 C 27.595941,225.58204 39.492563,194.31934 40.808982,191.6865 42.1254,189.05366 66.479153,155.81408 104.9844,160.09245 c 38.50525,4.27836 79.31422,47.39107 81.94706,53.64406 2.63284,6.25299 17.44255,5.59478 33.56868,-5.59478 C 236.62627,196.95217 196.9884,109.17656 107.94634,104.47375 18.904283,99.770936 -36.152661,193.33426 -4.2783609,209.45815 Z"
|
||||||
|
id="path929"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="zzzzzzz" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.56847767"
|
||||||
|
inkscape:cx="446.57708"
|
||||||
|
inkscape:cy="401.19458"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
objecttolerance="1"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="837"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(16.892626,19.317423)">
|
||||||
|
<g
|
||||||
|
id="g889"
|
||||||
|
mask="url(#mask891)"
|
||||||
|
clip-path="url(#clipPath927)">
|
||||||
|
<g
|
||||||
|
id="g937">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ff5a5a;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M -3.7233944,214.15447 C 45.480638,96.63367 161.83001,111.85648 220.14571,211.36193"
|
||||||
|
id="path823-5"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ff9e5a;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M -0.7614527,220.40746 C 56.341093,103.87397 159.19717,123.04604 217.51287,222.55149"
|
||||||
|
id="path823-5-1"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffbe80;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 1.5789981,231.68901 C 58.681549,115.15552 152.6518,129.72013 210.9675,229.22558"
|
||||||
|
id="path823-5-1-5"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#f7ff80;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 9.1484066,236.95589 C 66.250956,120.4224 152.32269,142.88552 210.63839,242.39096"
|
||||||
|
id="path823-5-1-5-4"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#80c9ff;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 15.401395,246.03534 C 72.503944,129.50186 146.72791,151.63588 205.04361,251.14131"
|
||||||
|
id="path823-5-1-5-4-8"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#be80ff;stroke-width:52.91666794;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 22.806252,250.84622 C 75.30134,134.64185 142.6141,162.04155 200.9298,261.54697"
|
||||||
|
id="path823-5-1-5-4-8-3"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
|
@ -1,23 +1,23 @@
|
||||||
package com.minelittlepony.unicopia;
|
package com.minelittlepony.unicopia;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.entity.EntityCloud;
|
import com.minelittlepony.unicopia.entity.EntityCloud;
|
||||||
import com.minelittlepony.unicopia.entity.EntityConstructionCloud;
|
import com.minelittlepony.unicopia.entity.EntityConstructionCloud;
|
||||||
import com.minelittlepony.unicopia.entity.EntityRacingCloud;
|
import com.minelittlepony.unicopia.entity.EntityRacingCloud;
|
||||||
|
import com.minelittlepony.unicopia.entity.EntityRainbow;
|
||||||
import com.minelittlepony.unicopia.entity.EntitySpell;
|
import com.minelittlepony.unicopia.entity.EntitySpell;
|
||||||
import com.minelittlepony.unicopia.entity.EntitySpellbook;
|
import com.minelittlepony.unicopia.entity.EntitySpellbook;
|
||||||
import com.minelittlepony.unicopia.entity.EntityProjectile;
|
import com.minelittlepony.unicopia.entity.EntityProjectile;
|
||||||
import com.minelittlepony.unicopia.entity.EntityWildCloud;
|
import com.minelittlepony.unicopia.entity.EntityWildCloud;
|
||||||
|
import com.minelittlepony.unicopia.forgebullshit.BiomeBS;
|
||||||
import com.minelittlepony.unicopia.forgebullshit.EntityType;
|
import com.minelittlepony.unicopia.forgebullshit.EntityType;
|
||||||
import com.minelittlepony.unicopia.render.RenderCloud;
|
import com.minelittlepony.unicopia.render.RenderCloud;
|
||||||
import com.minelittlepony.unicopia.render.RenderGem;
|
import com.minelittlepony.unicopia.render.RenderGem;
|
||||||
import com.minelittlepony.unicopia.render.RenderProjectile;
|
import com.minelittlepony.unicopia.render.RenderProjectile;
|
||||||
|
import com.minelittlepony.unicopia.render.RenderRainbow;
|
||||||
import com.minelittlepony.unicopia.render.RenderSpellbook;
|
import com.minelittlepony.unicopia.render.RenderSpellbook;
|
||||||
|
|
||||||
import net.minecraft.entity.EnumCreatureType;
|
import net.minecraft.entity.EnumCreatureType;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.Biome.SpawnListEntry;
|
|
||||||
import net.minecraft.world.biome.BiomeEnd;
|
import net.minecraft.world.biome.BiomeEnd;
|
||||||
import net.minecraft.world.biome.BiomeHell;
|
import net.minecraft.world.biome.BiomeHell;
|
||||||
import net.minecraftforge.common.BiomeManager;
|
import net.minecraftforge.common.BiomeManager;
|
||||||
|
@ -38,6 +38,8 @@ public class UEntities {
|
||||||
builder.creature(EntityConstructionCloud.class, "construction_cloud"),
|
builder.creature(EntityConstructionCloud.class, "construction_cloud"),
|
||||||
builder.creature(EntitySpell.class, "magic_spell"),
|
builder.creature(EntitySpell.class, "magic_spell"),
|
||||||
builder.creature(EntitySpellbook.class, "spellbook"),
|
builder.creature(EntitySpellbook.class, "spellbook"),
|
||||||
|
builder.creature(EntityRainbow.Spawner.class, "rainbow_spawner"),
|
||||||
|
builder.projectile(EntityRainbow.class, "rainbow", 500, 5),
|
||||||
builder.projectile(EntityProjectile.class, "thrown_item", 10, 5)
|
builder.projectile(EntityProjectile.class, "thrown_item", 10, 5)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -47,19 +49,18 @@ public class UEntities {
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntitySpell.class, RenderGem::new);
|
RenderingRegistry.registerEntityRenderingHandler(EntitySpell.class, RenderGem::new);
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityProjectile.class, RenderProjectile::new);
|
RenderingRegistry.registerEntityRenderingHandler(EntityProjectile.class, RenderProjectile::new);
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntitySpellbook.class, RenderSpellbook::new);
|
RenderingRegistry.registerEntityRenderingHandler(EntitySpellbook.class, RenderSpellbook::new);
|
||||||
|
RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, RenderRainbow::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void registerSpawnEntries(Biome biome) {
|
static void registerSpawnEntries(Biome biome) {
|
||||||
|
|
||||||
if (!(biome instanceof BiomeHell || biome instanceof BiomeEnd)) {
|
if (!(biome instanceof BiomeHell || biome instanceof BiomeEnd)) {
|
||||||
List<SpawnListEntry> entries = biome.getSpawnableList(EnumCreatureType.AMBIENT);
|
|
||||||
entries.stream().filter(p -> p.entityClass == EntityWildCloud.class).findFirst().orElseGet(() -> {
|
BiomeBS.addSpawnEntry(biome, EnumCreatureType.AMBIENT, EntityWildCloud.class, b ->
|
||||||
entries.add(
|
BiomeManager.oceanBiomes.contains(b) ? EntityWildCloud.SPAWN_ENTRY_LAND : EntityWildCloud.SPAWN_ENTRY_OCEAN
|
||||||
BiomeManager.oceanBiomes.contains(biome) ?
|
|
||||||
EntityWildCloud.SPAWN_ENTRY_LAND : EntityWildCloud.SPAWN_ENTRY_OCEAN
|
|
||||||
);
|
);
|
||||||
return null;
|
BiomeBS.addSpawnEntry(biome, EnumCreatureType.CREATURE, EntityRainbow.Spawner.class, b -> EntityRainbow.SPAWN_ENTRY);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,128 @@
|
||||||
|
package com.minelittlepony.unicopia.entity;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityLiving;
|
||||||
|
import net.minecraft.entity.effect.EntityWeatherEffect;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.SoundCategory;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.biome.Biome.SpawnListEntry;
|
||||||
|
|
||||||
|
public class EntityRainbow extends EntityWeatherEffect {
|
||||||
|
|
||||||
|
public static final SpawnListEntry SPAWN_ENTRY = new SpawnListEntry(EntityRainbow.Spawner.class, 1, 1, 1);
|
||||||
|
|
||||||
|
private int ticksAlive;
|
||||||
|
|
||||||
|
private double radius;
|
||||||
|
|
||||||
|
public static final int RAINBOW_MAX_SIZE = 180;
|
||||||
|
public static final int RAINBOW_MIN_SIZE = 50;
|
||||||
|
|
||||||
|
public EntityRainbow(World world) {
|
||||||
|
this(world, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityRainbow(World world, double x, double y, double z) {
|
||||||
|
super(world);
|
||||||
|
|
||||||
|
float yaw = (int)MathHelper.nextDouble((world == null ? rand : world.rand), 0, 360);
|
||||||
|
|
||||||
|
setLocationAndAngles(x, y, z, yaw, 0);
|
||||||
|
|
||||||
|
radius = MathHelper.nextDouble(world == null ? rand : world.rand, RAINBOW_MIN_SIZE, RAINBOW_MAX_SIZE);
|
||||||
|
ticksAlive = 10000;
|
||||||
|
|
||||||
|
ignoreFrustumCheck = true;
|
||||||
|
|
||||||
|
width = (float)radius;
|
||||||
|
height = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPosition(double x, double y, double z) {
|
||||||
|
posX = x;
|
||||||
|
posY = y;
|
||||||
|
posZ = z;
|
||||||
|
|
||||||
|
setEntityBoundingBox(new AxisAlignedBB(
|
||||||
|
x - width, y - radius/2, z,
|
||||||
|
x + width, y + radius/2, z
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getRenderBoundingBox() {
|
||||||
|
return super.getRenderBoundingBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundCategory getSoundCategory() {
|
||||||
|
return SoundCategory.WEATHER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isInRangeToRenderDist(double distance) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getRadius() {
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
super.onUpdate();
|
||||||
|
|
||||||
|
if (ticksAlive-- <= 0) {
|
||||||
|
setDead();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void entityInit() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void readEntityFromNBT(NBTTagCompound compound) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void writeEntityToNBT(NBTTagCompound compound) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Spawner extends EntityLiving {
|
||||||
|
|
||||||
|
public static final AxisAlignedBB SPAWN_COLLISSION_RADIUS = new AxisAlignedBB(0, 0, 0, RAINBOW_MAX_SIZE, RAINBOW_MAX_SIZE, RAINBOW_MAX_SIZE);
|
||||||
|
|
||||||
|
public Spawner(World worldIn) {
|
||||||
|
super(worldIn);
|
||||||
|
this.setInvisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getCanSpawnHere() {
|
||||||
|
if (super.getCanSpawnHere()) {
|
||||||
|
return world.getEntitiesWithinAABB(EntityRainbow.class, SPAWN_COLLISSION_RADIUS.offset(getPosition())).size() == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxSpawnedInChunk() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
super.onUpdate();
|
||||||
|
setDead();
|
||||||
|
|
||||||
|
EntityRainbow rainbow = new EntityRainbow(world);
|
||||||
|
rainbow.setPosition(posX, posY, posZ);
|
||||||
|
world.spawnEntity(rainbow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,10 +1,15 @@
|
||||||
package com.minelittlepony.unicopia.forgebullshit;
|
package com.minelittlepony.unicopia.forgebullshit;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.EnumCreatureType;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.biome.Biome.SpawnListEntry;
|
||||||
import net.minecraftforge.common.BiomeManager;
|
import net.minecraftforge.common.BiomeManager;
|
||||||
import net.minecraftforge.common.BiomeManager.BiomeType;
|
import net.minecraftforge.common.BiomeManager.BiomeType;
|
||||||
|
|
||||||
|
@ -24,4 +29,16 @@ public class BiomeBS {
|
||||||
.isPresent()
|
.isPresent()
|
||||||
).findFirst();
|
).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a spawn entry for the specified entity if one does not already exist.
|
||||||
|
*/
|
||||||
|
public static void addSpawnEntry(Biome biome, EnumCreatureType list, Class<? extends EntityLivingBase> type, Function<Biome, SpawnListEntry> func) {
|
||||||
|
List<SpawnListEntry> entries = biome.getSpawnableList(list);
|
||||||
|
|
||||||
|
entries.stream().filter(p -> p.entityClass == type).findFirst().orElseGet(() -> {
|
||||||
|
entries.add(func.apply(biome));
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
package com.minelittlepony.unicopia.render;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.minelittlepony.unicopia.entity.EntityRainbow;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.BufferBuilder;
|
||||||
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
public class RenderRainbow extends Render<EntityRainbow> {
|
||||||
|
|
||||||
|
public RenderRainbow(RenderManager renderManager) {
|
||||||
|
super(renderManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ResourceLocation TEXTURE = new ResourceLocation("unicopia", "textures/environment/rainbow.png");
|
||||||
|
|
||||||
|
public void doRender(EntityRainbow entity, double x, double y, double z, float entityYaw, float partialTicks) {
|
||||||
|
bindEntityTexture(entity);
|
||||||
|
|
||||||
|
GlStateManager.pushMatrix();
|
||||||
|
GlStateManager.disableLighting();
|
||||||
|
GlStateManager.disableCull();
|
||||||
|
GlStateManager.enableBlend();
|
||||||
|
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
|
GlStateManager.translate(x, y, z);
|
||||||
|
GlStateManager.rotate(entityYaw, 0, 1, 0);
|
||||||
|
|
||||||
|
float distance = Minecraft.getMinecraft().getRenderViewEntity().getDistance(entity);
|
||||||
|
|
||||||
|
|
||||||
|
float maxDistance = 16 * Minecraft.getMinecraft().gameSettings.renderDistanceChunks;
|
||||||
|
|
||||||
|
GlStateManager.color(1, 1, 1, ((maxDistance - distance) / maxDistance) * 0.9f);
|
||||||
|
|
||||||
|
Tessellator tessellator = Tessellator.getInstance();
|
||||||
|
BufferBuilder bufferbuilder = tessellator.getBuffer();
|
||||||
|
|
||||||
|
double r = entity.getRadius();
|
||||||
|
|
||||||
|
bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||||
|
bufferbuilder.pos(-r, r, 0).tex(1, 0).endVertex();
|
||||||
|
bufferbuilder.pos( r, r, 0).tex(0, 0).endVertex();
|
||||||
|
bufferbuilder.pos( r, 0, 0).tex(0, 1).endVertex();
|
||||||
|
bufferbuilder.pos(-r, 0, 0).tex(1, 1).endVertex();
|
||||||
|
|
||||||
|
tessellator.draw();
|
||||||
|
|
||||||
|
GlStateManager.disableBlend();
|
||||||
|
GlStateManager.enableCull();
|
||||||
|
GlStateManager.enableLighting();
|
||||||
|
GlStateManager.popMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ResourceLocation getEntityTexture(EntityRainbow entity) {
|
||||||
|
return TEXTURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Loading…
Reference in a new issue