From 59a0d0df6cb9df9451d7ed8f8ee055bc4de1aa4f Mon Sep 17 00:00:00 2001 From: Aleksey Date: Tue, 20 Oct 2020 14:34:07 +0300 Subject: [PATCH] Portal block --- psd/end_portal.psd | Bin 0 -> 110418 bytes .../ru/betterend/blocks/EndPortalBlock.java | 70 +++ .../ru/betterend/blocks/RunedFlavolite.java | 4 +- .../particle/PaticlePortalSphere.java | 76 +++ .../ru/betterend/registry/BlockRegistry.java | 4 + .../betterend/registry/ParticleRegistry.java | 3 + .../blockstates/end_portal_block.json | 10 + .../blockstates/flavolite_runed_eternal.json | 446 ++++++++++++++++++ .../betterend/models/block/end_portal_ax.json | 16 + .../betterend/models/block/end_portal_az.json | 16 + .../block/flavolite_runed_active_1.json | 23 + .../block/flavolite_runed_active_2.json | 23 + .../block/flavolite_runed_active_3.json | 23 + .../models/item/end_portal_block.json | 6 + .../models/item/flavolite_runed_eternal.json | 3 + .../betterend/particles/portal_sphere.json | 38 ++ .../betterend/textures/block/end_portal.png | Bin 0 -> 18273 bytes .../textures/block/end_portal.png.mcmeta | 5 + 18 files changed, 765 insertions(+), 1 deletion(-) create mode 100644 psd/end_portal.psd create mode 100644 src/main/java/ru/betterend/blocks/EndPortalBlock.java create mode 100644 src/main/java/ru/betterend/particle/PaticlePortalSphere.java create mode 100644 src/main/resources/assets/betterend/blockstates/end_portal_block.json create mode 100644 src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json create mode 100644 src/main/resources/assets/betterend/models/block/end_portal_ax.json create mode 100644 src/main/resources/assets/betterend/models/block/end_portal_az.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json create mode 100644 src/main/resources/assets/betterend/models/item/end_portal_block.json create mode 100644 src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json create mode 100644 src/main/resources/assets/betterend/particles/portal_sphere.json create mode 100644 src/main/resources/assets/betterend/textures/block/end_portal.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_portal.png.mcmeta diff --git a/psd/end_portal.psd b/psd/end_portal.psd new file mode 100644 index 0000000000000000000000000000000000000000..23cd4145a2ff15a5a9dc93332e58808e3744c326 GIT binary patch literal 110418 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 KIq?5;4*b6tSa}No literal 0 HcmV?d00001 diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java new file mode 100644 index 00000000..4b8a35a7 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -0,0 +1,70 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.NetherPortalBlock; +import net.minecraft.entity.Entity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import ru.betterend.client.ERenderLayer; +import ru.betterend.client.IRenderTypeable; +import ru.betterend.registry.ParticleRegistry; + +public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable { + + public EndPortalBlock() { + super(FabricBlockSettings.copyOf(Blocks.NETHER_PORTAL)); + } + + @Override + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + if (random.nextInt(100) == 0) { + world.playSound(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, SoundEvents.BLOCK_PORTAL_AMBIENT, SoundCategory.BLOCKS, 0.5F, random.nextFloat() * 0.4F + 0.8F, false); + } + + double x = pos.getX() + random.nextDouble(); + double y = pos.getY() + random.nextDouble(); + double z = pos.getZ() + random.nextDouble(); + double vx = (random.nextDouble() - 0.5D) * 0.5D; + double vy = (random.nextDouble() - 0.5D) * 0.5D; + double vz = (random.nextDouble() - 0.5D) * 0.5D; + int k = random.nextInt(2) * 2 - 1; + if (!world.getBlockState(pos.west()).isOf(this) && !world.getBlockState(pos.east()).isOf(this)) { + x = pos.getX() + 0.5D + 0.25D * k; + vx = (random.nextDouble() * 2.0D * k); + } else { + z = pos.getZ() + 0.5D + 0.25D * k; + vz = (random.nextDouble() * 2.0D * k); + } + + world.addParticle(ParticleRegistry.PORTAL_SPHERE, x, y, z, vx, vy, vz); + } + + @Override + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {} + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { + return state; + } + + @Override + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.TRANSLUCENT; + } +} diff --git a/src/main/java/ru/betterend/blocks/RunedFlavolite.java b/src/main/java/ru/betterend/blocks/RunedFlavolite.java index 1366aff9..2debd147 100644 --- a/src/main/java/ru/betterend/blocks/RunedFlavolite.java +++ b/src/main/java/ru/betterend/blocks/RunedFlavolite.java @@ -12,7 +12,9 @@ public class RunedFlavolite extends BlockBase { public static final BooleanProperty ACTIVATED = BooleanProperty.of("active"); public RunedFlavolite() { - super(FabricBlockSettings.copyOf(BlockRegistry.FLAVOLITE.polished).lightLevel(6)); + super(FabricBlockSettings.copyOf(BlockRegistry.FLAVOLITE.polished).luminance(state -> { + return state.get(ACTIVATED) ? 8 : 0; + })); this.setDefaultState(stateManager.getDefaultState().with(ACTIVATED, false)); } diff --git a/src/main/java/ru/betterend/particle/PaticlePortalSphere.java b/src/main/java/ru/betterend/particle/PaticlePortalSphere.java new file mode 100644 index 00000000..c80fd158 --- /dev/null +++ b/src/main/java/ru/betterend/particle/PaticlePortalSphere.java @@ -0,0 +1,76 @@ +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 net.minecraft.util.math.MathHelper; +import ru.betterend.util.MHelper; + +public class PaticlePortalSphere extends AnimatedParticle { + private int ticks; + private double preVX; + private double preVY; + private double preVZ; + private double nextVX; + private double nextVY; + private double nextVZ; + + public PaticlePortalSphere(ClientWorld world, double x, double y, double z, SpriteProvider spriteProvider) { + super(world, x, y, z, spriteProvider, 0); + setSprite(spriteProvider.getSprite(random)); + this.maxAge = MHelper.randRange(20, 80, random); + this.scale = MHelper.randRange(0.05F, 0.15F, random); + this.setColor(0xFEBBD5); + this.setTargetColor(0xBBFEE4); + this.setSpriteForAge(spriteProvider); + + preVX = random.nextGaussian() * 0.02; + preVY = random.nextGaussian() * 0.02; + preVZ = random.nextGaussian() * 0.02; + + nextVX = random.nextGaussian() * 0.02; + nextVY = random.nextGaussian() * 0.02; + nextVZ = random.nextGaussian() * 0.02; + } + + @Override + public void tick() { + ticks++; + if (ticks > 30) { + preVX = nextVX; + preVY = nextVY; + preVZ = nextVZ; + nextVX = random.nextGaussian() * 0.02; + nextVY = random.nextGaussian() * 0.02; + nextVZ = random.nextGaussian() * 0.02; + ticks = 0; + } + double delta = (double) ticks / 30.0; + + this.velocityX = MathHelper.lerp(delta, preVX, nextVX); + this.velocityY = MathHelper.lerp(delta, preVY, nextVY); + this.velocityZ = MathHelper.lerp(delta, preVZ, nextVZ); + + super.tick(); + } + + @Environment(EnvType.CLIENT) + public static class FactoryPortalSphere implements ParticleFactory { + + private final SpriteProvider sprites; + + public FactoryPortalSphere(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 PaticlePortalSphere(world, x, y, z, sprites); + } + } +} diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index 0646be7d..9422f8ee 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -27,6 +27,7 @@ import ru.betterend.blocks.BlockPath; import ru.betterend.blocks.BlockTerrain; import ru.betterend.blocks.BlockUmbrellaMoss; import ru.betterend.blocks.BlockUmbrellaMossTall; +import ru.betterend.blocks.EndPortalBlock; import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.EternalRunedFlavolite; @@ -99,6 +100,9 @@ public class BlockRegistry { // Blocks With Entity // public static final Block END_STONE_SMELTER = registerBlock("end_stone_smelter", new EndStoneSmelter()); + //Technical + public static final Block END_PORTAL_BLOCK = registerBlock("end_portal_block", new EndPortalBlock()); + public static void register() {} public static Block registerBlock(String name, Block block) { diff --git a/src/main/java/ru/betterend/registry/ParticleRegistry.java b/src/main/java/ru/betterend/registry/ParticleRegistry.java index 01be0c64..20fcf6e8 100644 --- a/src/main/java/ru/betterend/registry/ParticleRegistry.java +++ b/src/main/java/ru/betterend/registry/ParticleRegistry.java @@ -6,12 +6,15 @@ import net.minecraft.particle.DefaultParticleType; import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.particle.ParticleGlowingSphere; +import ru.betterend.particle.PaticlePortalSphere; public class ParticleRegistry { public static final DefaultParticleType GLOWING_SPHERE = register("glowing_sphere"); + public static final DefaultParticleType PORTAL_SPHERE = register("portal_sphere"); public static void register() { ParticleFactoryRegistry.getInstance().register(GLOWING_SPHERE, ParticleGlowingSphere.FactoryGlowingSphere::new); + ParticleFactoryRegistry.getInstance().register(PORTAL_SPHERE, PaticlePortalSphere.FactoryPortalSphere::new); } private static DefaultParticleType register(String name) { diff --git a/src/main/resources/assets/betterend/blockstates/end_portal_block.json b/src/main/resources/assets/betterend/blockstates/end_portal_block.json new file mode 100644 index 00000000..c6443f19 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/end_portal_block.json @@ -0,0 +1,10 @@ +{ + "variants": { + "axis=x": { + "model": "betterend:block/end_portal_ax" + }, + "axis=z": { + "model": "betterend:block/end_portal_az" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json b/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json new file mode 100644 index 00000000..eb343bad --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json @@ -0,0 +1,446 @@ +{ + "variants": { + "active=false": [ + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ], + "active=true": [ + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_portal_ax.json b/src/main/resources/assets/betterend/models/block/end_portal_ax.json new file mode 100644 index 00000000..2d057060 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_portal_ax.json @@ -0,0 +1,16 @@ +{ + "textures": { + "particle": "betterend:block/end_portal", + "portal": "betterend:block/end_portal" + }, + "elements": [ + { + "from": [ 0, 0, 6 ], + "to": [ 16, 16, 10 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_portal_az.json b/src/main/resources/assets/betterend/models/block/end_portal_az.json new file mode 100644 index 00000000..93c3b6a8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_portal_az.json @@ -0,0 +1,16 @@ +{ + "textures": { + "particle": "betterend:block/end_portal", + "portal": "betterend:block/end_portal" + }, + "elements": [ + { + "from": [ 6, 0, 0 ], + "to": [ 10, 16, 16 ], + "faces": { + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json new file mode 100644 index 00000000..9ce2251a --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_1", + "rune_2": "betterend:block/flavolite_runed_active_2", + "rune_3": "betterend:block/flavolite_runed_active_3" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json new file mode 100644 index 00000000..cd2da68f --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_4", + "rune_2": "betterend:block/flavolite_runed_active_5", + "rune_3": "betterend:block/flavolite_runed_active_6" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json new file mode 100644 index 00000000..f275976e --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_7", + "rune_2": "betterend:block/flavolite_runed_active_8", + "rune_3": "betterend:block/flavolite_runed_active_9" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/end_portal_block.json b/src/main/resources/assets/betterend/models/item/end_portal_block.json new file mode 100644 index 00000000..71e153ae --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/end_portal_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:block/end_portal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json b/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json new file mode 100644 index 00000000..359977ad --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/flavolite_runed_1" +} diff --git a/src/main/resources/assets/betterend/particles/portal_sphere.json b/src/main/resources/assets/betterend/particles/portal_sphere.json new file mode 100644 index 00000000..e3e05d9e --- /dev/null +++ b/src/main/resources/assets/betterend/particles/portal_sphere.json @@ -0,0 +1,38 @@ +{ + "textures": [ + "betterend:glowing_sphere_0", + "betterend:glowing_sphere_1", + "betterend:glowing_sphere_2", + "betterend:glowing_sphere_3", + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_3", + "betterend:glowing_sphere_2", + "betterend:glowing_sphere_1", + "betterend:glowing_sphere_0" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/end_portal.png b/src/main/resources/assets/betterend/textures/block/end_portal.png new file mode 100644 index 0000000000000000000000000000000000000000..d47e9db87c19bb6c95e7f48838d6915a860d829d GIT binary patch literal 18273 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/end_portal.png.mcmeta b/src/main/resources/assets/betterend/textures/block/end_portal.png.mcmeta new file mode 100644 index 00000000..f6730e30 --- /dev/null +++ b/src/main/resources/assets/betterend/textures/block/end_portal.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 4 + } +} \ No newline at end of file