From 3de7d611df99cfdfdadc2d52b1580adefc890375 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Tue, 29 Dec 2020 20:20:09 +0300 Subject: [PATCH] Jungle Spore particles --- .../particle/ParticleJungleSpore.java | 64 ++++++++++++++++++ .../ru/betterend/recipe/FurnaceRecipes.java | 2 + .../ru/betterend/registry/EndParticles.java | 3 + .../world/biome/BiomeUmbrellaJungle.java | 6 +- .../materialmaps/particle/jungle_spore.json | 3 + .../betterend/particles/jungle_spore.json | 19 ++++++ .../textures/particle/jungle_spore_0.png | Bin 0 -> 217 bytes .../textures/particle/jungle_spore_1.png | Bin 0 -> 236 bytes .../textures/particle/jungle_spore_2.png | Bin 0 -> 237 bytes 9 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/betterend/particle/ParticleJungleSpore.java create mode 100644 src/main/resources/assets/betterend/materialmaps/particle/jungle_spore.json create mode 100644 src/main/resources/assets/betterend/particles/jungle_spore.json create mode 100644 src/main/resources/assets/betterend/textures/particle/jungle_spore_0.png create mode 100644 src/main/resources/assets/betterend/textures/particle/jungle_spore_1.png create mode 100644 src/main/resources/assets/betterend/textures/particle/jungle_spore_2.png diff --git a/src/main/java/ru/betterend/particle/ParticleJungleSpore.java b/src/main/java/ru/betterend/particle/ParticleJungleSpore.java new file mode 100644 index 00000000..1a6494a3 --- /dev/null +++ b/src/main/java/ru/betterend/particle/ParticleJungleSpore.java @@ -0,0 +1,64 @@ +package ru.betterend.particle; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.particle.AnimatedParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleFactory; +import net.minecraft.client.particle.SpriteProvider; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.particle.DefaultParticleType; +import ru.betterend.util.MHelper; + +@Environment(EnvType.CLIENT) +public class ParticleJungleSpore extends AnimatedParticle { + + protected ParticleJungleSpore(ClientWorld world, double x, double y, double z, SpriteProvider sprites, double r, double g, double b) { + super(world, x, y, z, sprites, 0); + setSprite(sprites.getSprite(random)); + this.maxAge = MHelper.randRange(150, 300, random); + this.scale = MHelper.randRange(0.05F, 0.1F, random); + this.setTargetColor(15916745); + this.setSpriteForAge(spriteProvider); + this.setColorAlpha(0); + } + + @Override + public void tick() { + int ticks = this.age % 30; + if (ticks == 0) { + this.velocityX = random.nextGaussian() * 0.02; + this.velocityY = random.nextFloat() * 0.02 + 0.02; + this.velocityZ = random.nextGaussian() * 0.02; + ticks = 0; + } + if (this.age < 30) { + float delta = ticks / 30F; + this.setColorAlpha(delta); + } + else if (this.age > this.maxAge - 30) { + float delta = ticks / 30F; + this.setColorAlpha(1 - delta); + } + + this.velocityY -= 0.001F; + this.velocityX *= 0.99F; + this.velocityZ *= 0.99F; + + super.tick(); + } + + @Environment(EnvType.CLIENT) + public static class FactoryJungleSpore implements ParticleFactory { + private final SpriteProvider sprites; + + public FactoryJungleSpore(SpriteProvider sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle(DefaultParticleType type, ClientWorld world, double x, double y, double z, double vX, double vY, double vZ) { + return new ParticleJungleSpore(world, x, y, z, sprites, 1, 1, 1); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/betterend/recipe/FurnaceRecipes.java b/src/main/java/ru/betterend/recipe/FurnaceRecipes.java index 91bac180..3c664ec5 100644 --- a/src/main/java/ru/betterend/recipe/FurnaceRecipes.java +++ b/src/main/java/ru/betterend/recipe/FurnaceRecipes.java @@ -1,6 +1,7 @@ package ru.betterend.recipe; import net.minecraft.block.Blocks; +import net.minecraft.item.Items; import ru.betterend.recipe.builders.FurnaceRecipe; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; @@ -11,5 +12,6 @@ public class FurnaceRecipes { FurnaceRecipe.make("end_glass", EndBlocks.ENDSTONE_DUST, Blocks.GLASS).build(); FurnaceRecipe.make("end_berry", EndItems.SHADOW_BERRY_RAW, EndItems.SHADOW_BERRY_COOKED).build(); FurnaceRecipe.make("end_fish", EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED).build(); + FurnaceRecipe.make("slime_ball", EndBlocks.JELLYSHROOM_CAP_PURPLE, Items.SLIME_BALL).build(); } } diff --git a/src/main/java/ru/betterend/registry/EndParticles.java b/src/main/java/ru/betterend/registry/EndParticles.java index 50b08fe7..d273cb29 100644 --- a/src/main/java/ru/betterend/registry/EndParticles.java +++ b/src/main/java/ru/betterend/registry/EndParticles.java @@ -12,6 +12,7 @@ import ru.betterend.particle.InfusionParticleType; import ru.betterend.particle.ParticleBlackSpore; import ru.betterend.particle.ParticleGeyser; import ru.betterend.particle.ParticleGlowingSphere; +import ru.betterend.particle.ParticleJungleSpore; import ru.betterend.particle.ParticleSnowflake; import ru.betterend.particle.ParticleSulphur; import ru.betterend.particle.ParticleTenaneaPetal; @@ -27,6 +28,7 @@ public class EndParticles { public static final DefaultParticleType AMBER_SPHERE = register("amber_sphere"); public static final DefaultParticleType BLACK_SPORE = register("black_spore"); public static final DefaultParticleType TENANEA_PETAL = register("tenanea_petal"); + public static final DefaultParticleType JUNGLE_SPORE = register("jungle_spore"); public static void register() { ParticleFactoryRegistry.getInstance().register(GLOWING_SPHERE, ParticleGlowingSphere.FactoryGlowingSphere::new); @@ -38,6 +40,7 @@ public class EndParticles { ParticleFactoryRegistry.getInstance().register(AMBER_SPHERE, ParticleGlowingSphere.FactoryGlowingSphere::new); ParticleFactoryRegistry.getInstance().register(BLACK_SPORE, ParticleBlackSpore.FactoryBlackSpore::new); ParticleFactoryRegistry.getInstance().register(TENANEA_PETAL, ParticleTenaneaPetal.FactoryTenaneaPetal::new); + ParticleFactoryRegistry.getInstance().register(JUNGLE_SPORE, ParticleJungleSpore.FactoryJungleSpore::new); } private static DefaultParticleType register(String name) { diff --git a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java b/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java index 7017a173..5fc430e3 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java +++ b/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java @@ -1,7 +1,9 @@ package ru.betterend.world.biome; +import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; +import ru.betterend.registry.EndParticles; import ru.betterend.registry.EndSounds; public class BiomeUmbrellaJungle extends EndBiome { @@ -11,6 +13,7 @@ public class BiomeUmbrellaJungle extends EndBiome { .setWaterAndFogColor(119, 198, 253) .setFoliageColor(27, 183, 194) .setFogDensity(2.3F) + .setParticles(EndParticles.JUNGLE_SPORE, 0.0001F) .setMusic(EndSounds.MUSIC_FOREST) .setSurface(EndBlocks.JUNGLE_MOSS) .addFeature(EndFeatures.END_LAKE) @@ -29,6 +32,7 @@ public class BiomeUmbrellaJungle extends EndBiome { .addFeature(EndFeatures.CHARNIA_CYAN) .addFeature(EndFeatures.CHARNIA_GREEN) .addFeature(EndFeatures.CHARNIA_LIGHT_BLUE) - .addFeature(EndFeatures.CHARNIA_RED_RARE)); + .addFeature(EndFeatures.CHARNIA_RED_RARE) + .addMobSpawn(EntityType.ENDERMAN, 50, 1, 2)); } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/particle/jungle_spore.json b/src/main/resources/assets/betterend/materialmaps/particle/jungle_spore.json new file mode 100644 index 00000000..ab909d8e --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/particle/jungle_spore.json @@ -0,0 +1,3 @@ +{ + "material": "canvas:emissive_no_diffuse" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/particles/jungle_spore.json b/src/main/resources/assets/betterend/particles/jungle_spore.json new file mode 100644 index 00000000..6a26e388 --- /dev/null +++ b/src/main/resources/assets/betterend/particles/jungle_spore.json @@ -0,0 +1,19 @@ +{ + "textures": [ + "betterend:jungle_spore_0", + "betterend:jungle_spore_1", + "betterend:jungle_spore_2", + "betterend:jungle_spore_0", + "betterend:jungle_spore_1", + "betterend:jungle_spore_2", + "betterend:jungle_spore_0", + "betterend:jungle_spore_1", + "betterend:jungle_spore_2", + "betterend:jungle_spore_0", + "betterend:jungle_spore_1", + "betterend:jungle_spore_2", + "betterend:jungle_spore_0", + "betterend:jungle_spore_1", + "betterend:jungle_spore_2" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/particle/jungle_spore_0.png b/src/main/resources/assets/betterend/textures/particle/jungle_spore_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2e062e800f7b85a2a9b59a7ae4bcffe06cad64 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq3p`yMLnNjy?X~A>3XnN&@89FV z$<8dUILU89@aE#Xi>EDHu#lO>Pj)dg%iRUhdj#YTG8cObw8tMV&UkNK`}1FG{X!R( zhU0>r!s`3hehz!CSfDQ@>3f{zvp~bQp9|MpGdyJukvsFMuWZKK*L|mo@38MMRqwg# zvVMlAK;jxTU!(7vbP0l+XkK9d}V% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/particle/jungle_spore_1.png b/src/main/resources/assets/betterend/textures/particle/jungle_spore_1.png new file mode 100644 index 0000000000000000000000000000000000000000..584e97de1a4746fb8fabc24155c87ccbd738feb0 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqn>}3|LnNlQ_SNBZ zlHrMIIk5KX#;sxD?Ro-o3LP()dUNM4kY?e1H+SJt0TqEOCs_)Am_-Bz=U44vf6xD? zkx4*MFZ;+Q>y0O@@^=NlV0a#>xi?T=f+^s>+?Gn^hD(e>yvHh?|90hmZgY9P kpZ?4?)rO*+?~832?aVFsmoLh_0CYZsr>mdKI;Vst0Pql8JOBUy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/particle/jungle_spore_2.png b/src/main/resources/assets/betterend/textures/particle/jungle_spore_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c545a2009f6ce869304caa24325adc24d1f5574c GIT binary patch literal 237 zcmV4oRClx^vAqrVC1y7)xYnLo~0B@j+t9S!(*Bf{MU0gCd>F(q#w3<>3)KvZs zZHdqLzVJK&DJ9RB(rylnKR_H^hXFhdKhyf&2DU)^{;eC$5@G;NkhOE&*AMt@=bBj9 zVwLDEbfcN7&LW~uxOzKPG^J@fF`14T-h(x$>P(TBF7|I?dviyTm#RAJ6UPT