diff --git a/psd/end_portal.psd b/psd/end_portal.psd new file mode 100644 index 00000000..23cd4145 Binary files /dev/null and b/psd/end_portal.psd differ 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 00000000..d47e9db8 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/end_portal.png differ 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