From 49c8d97d9e989d5cc3d57f064ddb0a5bb17c3de2 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Fri, 4 Dec 2020 15:09:09 +0300 Subject: [PATCH] Fixes --- ...Geyser.java => BlockHydrothermalVent.java} | 12 +++- .../betterend/particle/InfusionParticle.java | 4 +- .../ru/betterend/particle/ParticleGeyser.java | 56 +++++++++++++++++++ .../java/ru/betterend/registry/EndBlocks.java | 4 +- .../ru/betterend/registry/EndParticles.java | 9 ++- .../blockstates/hydrothermal_vent.json | 10 ++++ .../blockstates/sulphuric_geyser.json | 10 ---- ...ric_geyser.json => hydrothermal_vent.json} | 0 .../models/item/hydrothermal_vent.json | 3 + .../models/item/sulphuric_geyser.json | 3 - .../betterend/particles/geyser_particle.json | 11 ++++ 11 files changed, 101 insertions(+), 21 deletions(-) rename src/main/java/ru/betterend/blocks/{BlockSulphuricGeyser.java => BlockHydrothermalVent.java} (88%) create mode 100644 src/main/java/ru/betterend/particle/ParticleGeyser.java create mode 100644 src/main/resources/assets/betterend/blockstates/hydrothermal_vent.json delete mode 100644 src/main/resources/assets/betterend/blockstates/sulphuric_geyser.json rename src/main/resources/assets/betterend/models/block/{sulphuric_geyser.json => hydrothermal_vent.json} (100%) create mode 100644 src/main/resources/assets/betterend/models/item/hydrothermal_vent.json delete mode 100644 src/main/resources/assets/betterend/models/item/sulphuric_geyser.json create mode 100644 src/main/resources/assets/betterend/particles/geyser_particle.json diff --git a/src/main/java/ru/betterend/blocks/BlockSulphuricGeyser.java b/src/main/java/ru/betterend/blocks/BlockHydrothermalVent.java similarity index 88% rename from src/main/java/ru/betterend/blocks/BlockSulphuricGeyser.java rename to src/main/java/ru/betterend/blocks/BlockHydrothermalVent.java index a8676666..bcdba01a 100644 --- a/src/main/java/ru/betterend/blocks/BlockSulphuricGeyser.java +++ b/src/main/java/ru/betterend/blocks/BlockHydrothermalVent.java @@ -31,12 +31,13 @@ import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; import ru.betterend.blocks.basis.BlockBaseNotFull; import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndParticles; -public class BlockSulphuricGeyser extends BlockBaseNotFull implements FluidFillable, Waterloggable { +public class BlockHydrothermalVent extends BlockBaseNotFull implements FluidFillable, Waterloggable { public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; private static final VoxelShape SHAPE = Block.createCuboidShape(1, 1, 1, 15, 16, 15); - public BlockSulphuricGeyser() { + public BlockHydrothermalVent() { super(FabricBlockSettings.of(Material.STONE) .breakByTool(FabricToolTags.PICKAXES) .sounds(BlockSoundGroup.STONE) @@ -99,6 +100,11 @@ public class BlockSulphuricGeyser extends BlockBaseNotFull implements FluidFilla double x = pos.getX() + random.nextDouble(); double y = pos.getY() + 0.9 + random.nextDouble() * 0.3; double z = pos.getZ() + random.nextDouble(); - world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, x, y, z, 0, 0, 0); + if (state.get(WATERLOGGED)) { + world.addParticle(EndParticles.GEYSER_PARTICLE, x, y, z, 0, 0, 0); + } + else { + world.addParticle(ParticleTypes.BUBBLE, x, y, z, 0, 0, 0); + } } } diff --git a/src/main/java/ru/betterend/particle/InfusionParticle.java b/src/main/java/ru/betterend/particle/InfusionParticle.java index 4055437e..3df16b65 100644 --- a/src/main/java/ru/betterend/particle/InfusionParticle.java +++ b/src/main/java/ru/betterend/particle/InfusionParticle.java @@ -48,10 +48,10 @@ public class InfusionParticle extends SpriteBillboardParticle { } @Environment(EnvType.CLIENT) - public static class DefaultFactory implements ParticleFactory { + public static class InfusionFactory implements ParticleFactory { private final SpriteProvider spriteProvider; - public DefaultFactory(SpriteProvider spriteProvider) { + public InfusionFactory(SpriteProvider spriteProvider) { this.spriteProvider = spriteProvider; } diff --git a/src/main/java/ru/betterend/particle/ParticleGeyser.java b/src/main/java/ru/betterend/particle/ParticleGeyser.java new file mode 100644 index 00000000..e63c8bcc --- /dev/null +++ b/src/main/java/ru/betterend/particle/ParticleGeyser.java @@ -0,0 +1,56 @@ +package ru.betterend.particle; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleFactory; +import net.minecraft.client.particle.ParticleTextureSheet; +import net.minecraft.client.particle.SpriteBillboardParticle; +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 ParticleGeyser extends SpriteBillboardParticle { + protected ParticleGeyser(ClientWorld world, double x, double y, double z, double vx, double vy, double vz, SpriteProvider sprites) { + super(world, x, y, z, vx, vy, vz); + setSprite(sprites); + this.maxAge = MHelper.randRange(600, 1200, random); + this.scale = MHelper.randRange(0.5F, 1.0F, random); + this.velocityX = vx; + this.velocityY = vy; + this.velocityY = vz; + } + + @Override + public void tick() { + if (this.age >= this.maxAge + 40) { + this.setColorAlpha((this.maxAge - this.age) / 40F); + } + this.velocityX = 0; + this.velocityZ = 0; + this.velocityY = 0.125; + super.tick(); + } + + @Override + public ParticleTextureSheet getType() { + return ParticleTextureSheet.PARTICLE_SHEET_TRANSLUCENT; + } + + @Environment(EnvType.CLIENT) + public static class FactoryGeyser implements ParticleFactory { + + private final SpriteProvider sprites; + + public FactoryGeyser(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 ParticleGeyser(world, x, y, z, 0, 0.125, 0, sprites); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 61a089c4..6659436a 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -39,7 +39,7 @@ import ru.betterend.blocks.BlockPythadendronSapling; import ru.betterend.blocks.BlockShadowBerry; import ru.betterend.blocks.BlockShadowGrass; import ru.betterend.blocks.BlockSulphurCrystal; -import ru.betterend.blocks.BlockSulphuricGeyser; +import ru.betterend.blocks.BlockHydrothermalVent; import ru.betterend.blocks.BlockTenaneaFlowers; import ru.betterend.blocks.BlockTenaneaSapling; import ru.betterend.blocks.BlockTerrain; @@ -112,7 +112,7 @@ public class EndBlocks { public static final Block QUARTZ_PEDESTAL = registerBlock("quartz_pedestal", new PedestalVanilla(Blocks.QUARTZ_BLOCK)); public static final Block PURPUR_PEDESTAL = registerBlock("purpur_pedestal", new PedestalVanilla(Blocks.PURPUR_BLOCK)); - public static final Block SULPHURIC_GEYSER = registerBlock("sulphuric_geyser", new BlockSulphuricGeyser()); + public static final Block HYDROTHERMAL_VENT = registerBlock("hydrothermal_vent", new BlockHydrothermalVent()); // Wooden Materials And Trees // public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling()); diff --git a/src/main/java/ru/betterend/registry/EndParticles.java b/src/main/java/ru/betterend/registry/EndParticles.java index 3ceffe0d..ee73fc2f 100644 --- a/src/main/java/ru/betterend/registry/EndParticles.java +++ b/src/main/java/ru/betterend/registry/EndParticles.java @@ -9,6 +9,7 @@ import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.particle.InfusionParticle; import ru.betterend.particle.InfusionParticleType; +import ru.betterend.particle.ParticleGeyser; import ru.betterend.particle.ParticleGlowingSphere; import ru.betterend.particle.ParticleSulphur; import ru.betterend.particle.PaticlePortalSphere; @@ -18,18 +19,24 @@ public class EndParticles { public static final DefaultParticleType PORTAL_SPHERE = register("portal_sphere"); public static final ParticleType INFUSION = register("infusion", FabricParticleTypes.complex(InfusionParticleType.PARAMETERS_FACTORY)); public static final DefaultParticleType SULPHUR_PARTICLE = register("sulphur_particle"); + public static final DefaultParticleType GEYSER_PARTICLE = registerFar("geyser_particle"); public static void register() { ParticleFactoryRegistry.getInstance().register(GLOWING_SPHERE, ParticleGlowingSphere.FactoryGlowingSphere::new); ParticleFactoryRegistry.getInstance().register(PORTAL_SPHERE, PaticlePortalSphere.FactoryPortalSphere::new); - ParticleFactoryRegistry.getInstance().register(INFUSION, InfusionParticle.DefaultFactory::new); + ParticleFactoryRegistry.getInstance().register(INFUSION, InfusionParticle.InfusionFactory::new); ParticleFactoryRegistry.getInstance().register(SULPHUR_PARTICLE, ParticleSulphur.FactorySulphur::new); + ParticleFactoryRegistry.getInstance().register(GEYSER_PARTICLE, ParticleGeyser.FactoryGeyser::new); } private static DefaultParticleType register(String name) { return Registry.register(Registry.PARTICLE_TYPE, BetterEnd.makeID(name), FabricParticleTypes.simple()); } + private static DefaultParticleType registerFar(String name) { + return Registry.register(Registry.PARTICLE_TYPE, BetterEnd.makeID(name), FabricParticleTypes.simple(true)); + } + private static ParticleType register(String name, ParticleType type) { return Registry.register(Registry.PARTICLE_TYPE, BetterEnd.makeID(name), type); } diff --git a/src/main/resources/assets/betterend/blockstates/hydrothermal_vent.json b/src/main/resources/assets/betterend/blockstates/hydrothermal_vent.json new file mode 100644 index 00000000..11787461 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/hydrothermal_vent.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "betterend:block/hydrothermal_vent" }, + { "model": "betterend:block/hydrothermal_vent", "y": 90 }, + { "model": "betterend:block/hydrothermal_vent", "y": 180 }, + { "model": "betterend:block/hydrothermal_vent", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/betterend/blockstates/sulphuric_geyser.json b/src/main/resources/assets/betterend/blockstates/sulphuric_geyser.json deleted file mode 100644 index fabfd5d9..00000000 --- a/src/main/resources/assets/betterend/blockstates/sulphuric_geyser.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "": [ - { "model": "betterend:block/sulphuric_geyser" }, - { "model": "betterend:block/sulphuric_geyser", "y": 90 }, - { "model": "betterend:block/sulphuric_geyser", "y": 180 }, - { "model": "betterend:block/sulphuric_geyser", "y": 270 } - ] - } -} diff --git a/src/main/resources/assets/betterend/models/block/sulphuric_geyser.json b/src/main/resources/assets/betterend/models/block/hydrothermal_vent.json similarity index 100% rename from src/main/resources/assets/betterend/models/block/sulphuric_geyser.json rename to src/main/resources/assets/betterend/models/block/hydrothermal_vent.json diff --git a/src/main/resources/assets/betterend/models/item/hydrothermal_vent.json b/src/main/resources/assets/betterend/models/item/hydrothermal_vent.json new file mode 100644 index 00000000..9af95063 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/hydrothermal_vent.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/hydrothermal_vent" +} diff --git a/src/main/resources/assets/betterend/models/item/sulphuric_geyser.json b/src/main/resources/assets/betterend/models/item/sulphuric_geyser.json deleted file mode 100644 index ba3c0280..00000000 --- a/src/main/resources/assets/betterend/models/item/sulphuric_geyser.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "betterend:block/sulphuric_geyser" -} diff --git a/src/main/resources/assets/betterend/particles/geyser_particle.json b/src/main/resources/assets/betterend/particles/geyser_particle.json new file mode 100644 index 00000000..a14c89a3 --- /dev/null +++ b/src/main/resources/assets/betterend/particles/geyser_particle.json @@ -0,0 +1,11 @@ +{ + "textures": [ + "minecraft:big_smoke_0", + "minecraft:big_smoke_1", + "minecraft:big_smoke_2", + "minecraft:big_smoke_3", + "minecraft:big_smoke_4", + "minecraft:big_smoke_5", + "minecraft:big_smoke_6" + ] +} \ No newline at end of file