Added slime pustules

This commit is contained in:
Sollace 2023-10-15 20:39:43 +01:00
parent 17a5924fca
commit 9b94662f9b
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
44 changed files with 763 additions and 212 deletions

View file

@ -1,35 +0,0 @@
{
"textures": {
"0": "unicopia:hive_core",
"1": "unicopia:hive_activity",
"particle": "unicopia:hive_core"
},
"elements": [
{
"name": "core",
"from": [1, 1, 1],
"to": [15, 15, 15],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#0"},
"south": {"uv": [0, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"name": "activity",
"from": [0, 0, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [14, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 2, 16], "texture": "#1"},
"up": {"uv": [16, 2, 0, 0], "texture": "#1"},
"down": {"uv": [16, 14, 0, 16], "texture": "#1"}
}
}
]
}

View file

@ -1,32 +0,0 @@
{
"textures": {
"particle": "unicopia:block/mysterious_egg",
"all": "unicopia:block/mysterious_egg"
},
"elements": [
{
"from": [4, 1, 4],
"to": [12, 12, 12],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [3, 0, 3],
"to": [13, 13, 13],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
}
]
}

View file

@ -1,56 +0,0 @@
{
"textures": {
"particle": "unicopia:block/mysterious_egg",
"all": "unicopia:block/mysterious_egg"
},
"elements": [
{
"from": [2, 1, 5],
"to": [8, 12, 11],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [1, 0, 4],
"to": [9, 13, 12],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [9, 1, 9],
"to": [13, 7, 13],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [8, 0, 8],
"to": [14, 8, 14],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
}
]
}

View file

@ -1,80 +0,0 @@
{
"textures": {
"particle": "unicopia:block/mysterious_egg",
"all": "unicopia:block/mysterious_egg"
},
"elements": [
{
"from": [1, 1, 0],
"to": [7, 10, 6],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [0, 0, -1],
"to": [8, 11, 7],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [5, 1, 7],
"to": [13, 14, 15],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [4, 0, 6],
"to": [14, 15, 16],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [11, 1, 1],
"to": [15, 7, 5],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
},
{
"from": [10, 0, 0],
"to": [16, 8, 6],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
}
]
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

View file

@ -0,0 +1,46 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"from": [7, 14.9, 7],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [3, 15, 4],
"to": [9, 16, 10],
"faces": {
"north": {"uv": [0, 0, 6, 1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7, 10, 7],
"to": [9, 15, 9],
"faces": {
"north": {"uv": [1, 7, 5, 13], "texture": "#all"},
"east": {"uv": [1, 7, 5, 13], "texture": "#all"},
"south": {"uv": [1, 7, 5, 13], "texture": "#all"},
"west": {"uv": [1, 7, 5, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,137 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"name": "rope",
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"faces": {
"north": {"uv": [12, 0, 13, 16], "texture": "#all"},
"east": {"uv": [13, 0, 14, 16], "texture": "#all"},
"south": {"uv": [15, 0, 16, 16], "texture": "#all"},
"west": {"uv": [14, 0, 15, 16], "texture": "#all"},
"up": {"uv": [13, 0, 14, 1], "texture": "#all"},
"down": {"uv": [12, 0, 13, 1], "texture": "#all"}
}
},
{
"from": [7, 14.9, 7],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [3, 15, 4],
"to": [9, 16, 10],
"faces": {
"north": {"uv": [0, 0, 6, 1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7, 10, 7],
"to": [9, 15, 9],
"faces": {
"north": {"uv": [1, 7, 5, 13], "texture": "#all"},
"east": {"uv": [1, 7, 5, 13], "texture": "#all"},
"south": {"uv": [1, 7, 5, 13], "texture": "#all"},
"west": {"uv": [1, 7, 5, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7, 15, 7],
"to": [9, 20, 9],
"faces": {
"north": {"uv": [2, 7, 4, 13], "texture": "#all"},
"east": {"uv": [2, 7, 4, 13], "texture": "#all"},
"south": {"uv": [2, 7, 4, 13], "texture": "#all"},
"west": {"uv": [2, 7, 4, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
},
{
"name": "drop",
"from": [5, 10, 5],
"to": [11, 13, 11],
"faces": {
"north": {"uv": [0, 6, 6, 9], "texture": "#all"},
"east": {"uv": [0, 6, 6, 9], "texture": "#all"},
"south": {"uv": [0, 6, 6, 9], "texture": "#all"},
"west": {"uv": [0, 6, 6, 9], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [6, 13, 6],
"to": [10, 15, 10],
"faces": {
"north": {"uv": [0, 6, 6, 8], "texture": "#all"},
"east": {"uv": [0, 6, 6, 8], "texture": "#all"},
"south": {"uv": [0, 6, 6, 8], "texture": "#all"},
"west": {"uv": [0, 6, 6, 8], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [5, 0, 5],
"to": [11, 1, 11],
"faces": {
"north": {"uv": [0, 13, 6, 14], "texture": "#all"},
"east": {"uv": [0, 13, 6, 14], "texture": "#all"},
"south": {"uv": [0, 13, 6, 14], "texture": "#all"},
"west": {"uv": [0, 13, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [4, 1, 4],
"to": [12, 10, 12],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [5, 2, 5],
"to": [11, 9, 11],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"name": "rope",
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"faces": {
"north": {"uv": [12, 0, 13, 16], "texture": "#all"},
"east": {"uv": [13, 0, 14, 16], "texture": "#all"},
"south": {"uv": [15, 0, 16, 16], "texture": "#all"},
"west": {"uv": [14, 0, 15, 16], "texture": "#all"},
"up": {"uv": [13, 0, 14, 1], "texture": "#all"},
"down": {"uv": [12, 0, 13, 1], "texture": "#all"}
}
}
]
}

View file

@ -97,6 +97,7 @@ public interface USounds {
SoundEvent ITEM_MAGIC_AURA = register("item.magic.aura"); SoundEvent ITEM_MAGIC_AURA = register("item.magic.aura");
SoundEvent BLOCK_CHITIN_AMBIENCE = register("block.chitin.ambience"); SoundEvent BLOCK_CHITIN_AMBIENCE = register("block.chitin.ambience");
SoundEvent BLOCK_SLIME_PUSTULE_POP = register("block.slime_pustule.pop");
SoundEvent BLOCK_WEATHER_VANE_ROTATE = BLOCK_LANTERN_STEP; SoundEvent BLOCK_WEATHER_VANE_ROTATE = BLOCK_LANTERN_STEP;
SoundEvent BLOCK_PIE_SLICE = BLOCK_BEEHIVE_SHEAR; SoundEvent BLOCK_PIE_SLICE = BLOCK_BEEHIVE_SHEAR;

View file

@ -112,13 +112,6 @@ public class FruitBearingBlock extends LeavesBlock implements TintedBlock, Bucka
} }
} }
@Override
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) {
BlockState newState = super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos);
return newState;
}
@Override @Override
public List<ItemStack> onBucked(ServerWorld world, BlockState state, BlockPos pos) { public List<ItemStack> onBucked(ServerWorld world, BlockState state, BlockPos pos) {
world.setBlockState(pos, state.with(STAGE, Stage.IDLE).with(AGE, 0)); world.setBlockState(pos, state.with(STAGE, Stage.IDLE).with(AGE, 0));

View file

@ -0,0 +1,208 @@
package com.minelittlepony.unicopia.block;
import java.util.Locale;
import com.minelittlepony.unicopia.USounds;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.ShapeContext;
import net.minecraft.block.SideShapeType;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.SlimeEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemPlacementContext;
import net.minecraft.particle.BlockStateParticleEffect;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.sound.SoundCategory;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.EnumProperty;
import net.minecraft.util.StringIdentifiable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Direction.Axis;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;
import net.minecraft.world.WorldView;
public class SlimePustuleBlock extends Block {
static final EnumProperty<Shape> SHAPE = EnumProperty.of("shape", Shape.class);
static final VoxelShape SHAFT_SHAPE = Block.createCuboidShape(7.5, 0, 7.5, 8.5, 16, 8.5);
static final VoxelShape DRIP_SHAPE = VoxelShapes.union(
Block.createCuboidShape(7, 10, 7, 9, 16, 9),
Block.createCuboidShape(3, 15, 4, 9, 16, 10),
Block.createCuboidShape(7, 15, 7, 12, 16, 12)
);
static final VoxelShape BULB_SHAPE = VoxelShapes.union(
Block.createCuboidShape(4, 1, 4, 12, 10, 12),
Block.createCuboidShape(5, 10, 5, 11, 13, 11),
Block.createCuboidShape(6, 13, 6, 10, 15, 10),
Block.createCuboidShape(7, 13, 7, 9, 20, 9)
);
static final VoxelShape CAP_SHAPE = VoxelShapes.union(SHAFT_SHAPE, DRIP_SHAPE);
public SlimePustuleBlock(Settings settings) {
super(settings.ticksRandomly());
setDefaultState(getDefaultState().with(SHAPE, Shape.DRIP));
}
@Override
public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
return switch (state.get(SHAPE)) {
case POD -> BULB_SHAPE;
case DRIP -> DRIP_SHAPE;
case CAP -> CAP_SHAPE;
case STRING -> SHAFT_SHAPE;
};
}
@Override
public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) {
super.randomDisplayTick(state, world, pos, random);
if (random.nextInt(15) == 0) {
VoxelShape shape = state.getCullingShape(world, pos);
float x = (float)MathHelper.lerp(random.nextFloat(), shape.getMin(Axis.X), shape.getMax(Axis.X));
float z = (float)MathHelper.lerp(random.nextFloat(), shape.getMin(Axis.Z), shape.getMax(Axis.Z));
world.addParticle(ParticleTypes.DRIPPING_HONEY,
pos.getX() + x,
pos.getY() + random.nextDouble(),
pos.getZ() + z, 0, 0, 0);
}
}
@Deprecated
@Override
public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
if (state.get(SHAPE) == Shape.POD) {
SlimeEntity slime = EntityType.SLIME.create(world);
slime.setSize(1, true);
slime.setPosition(pos.toCenterPos());
world.spawnEntity(slime);
}
}
@Override
public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
if (state.get(SHAPE) == Shape.POD) {
world.getOtherEntities(null, new Box(pos).expand(1)).forEach(entity -> {
entity.damage(entity.getDamageSources().inFire(), 2);
entity.setFireTicks(3);
});
world.playSound(null, pos, USounds.BLOCK_SLIME_PUSTULE_POP, SoundCategory.BLOCKS, 5, 1);
for (int i = 0; i < 8; i++) {
world.addParticle(ParticleTypes.LAVA,
pos.getX() + 0.5,
pos.getY() + 0.5,
pos.getZ() + 0.5,
world.random.nextGaussian() * 1.5F,
0,
world.random.nextGaussian() * 1.5F
);
world.addParticle(ParticleTypes.CRIT,
pos.getX() + 0.5,
pos.getY() + 0.5,
pos.getZ() + 0.5,
world.random.nextGaussian() * 1.5F,
world.random.nextGaussian() * 1.5F,
world.random.nextGaussian() * 1.5F
);
world.addParticle(new BlockStateParticleEffect(ParticleTypes.BLOCK, state),
pos.getX() + 0.5,
pos.getY() + 0.5,
pos.getZ() + 0.5,
world.random.nextGaussian() * 1.5F,
world.random.nextGaussian() * 1.5F,
world.random.nextGaussian() * 1.5F
);
}
} else {
super.onBreak(world, pos, state, player);
}
}
@Override
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
builder.add(SHAPE);
}
@Deprecated
@Override
public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) {
pos = pos.up();
state = world.getBlockState(pos);
return state.isOf(this) || state.isSideSolid(world, pos, Direction.DOWN, SideShapeType.CENTER);
}
@Deprecated
@Override
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) {
if (!canPlaceAt(state, world, pos)) {
return Blocks.AIR.getDefaultState();
}
if (direction.getAxis() == Direction.Axis.Y) {
Shape currentShape = state.get(SHAPE);
if (direction == Direction.DOWN && (currentShape == Shape.CAP || currentShape == Shape.STRING)) {
return state;
}
Shape shape = determineShape(world, pos);
return state.with(SHAPE, shape);
}
return state;
}
@Override
public BlockState getPlacementState(ItemPlacementContext ctx) {
Shape shape = determineShape(ctx.getWorld(), ctx.getBlockPos());
return super.getPlacementState(ctx).with(SHAPE, shape == Shape.STRING ? Shape.POD : shape);
}
private Shape determineShape(WorldAccess world, BlockPos pos) {
BlockState above = world.getBlockState(pos.up());
BlockState below = world.getBlockState(pos.down());
boolean hasAbove = above.isOf(this);
boolean hasRoof = !hasAbove && above.isSideSolid(world, pos.up(), Direction.DOWN, SideShapeType.CENTER);
boolean hasBelow = below.isOf(this);
if (hasRoof && below.isAir()) {
return Shape.DRIP;
}
if (hasRoof && hasBelow) {
return Shape.CAP;
}
if ((hasRoof || hasAbove) && hasBelow) {
return Shape.STRING;
}
return Shape.POD;
}
public enum Shape implements StringIdentifiable {
DRIP,
CAP,
STRING,
POD;
private final String name = name().toLowerCase(Locale.ROOT);
@Override
public String asString() {
return name;
}
}
}

View file

@ -123,6 +123,7 @@ public interface UBlocks {
Block CHISELLED_CHITIN_HULL = register("chiselled_chitin_hull", new OrientedBlock(Settings.copy(CHISELLED_CHITIN)), ItemGroups.BUILDING_BLOCKS); Block CHISELLED_CHITIN_HULL = register("chiselled_chitin_hull", new OrientedBlock(Settings.copy(CHISELLED_CHITIN)), ItemGroups.BUILDING_BLOCKS);
Block HIVE = register("hive", new HiveBlock(Settings.create().mapColor(MapColor.PURPLE).hardness(6).ticksRandomly().sounds(BlockSoundGroup.CORAL)), ItemGroups.NATURAL); Block HIVE = register("hive", new HiveBlock(Settings.create().mapColor(MapColor.PURPLE).hardness(6).ticksRandomly().sounds(BlockSoundGroup.CORAL)), ItemGroups.NATURAL);
Block MYSTERIOUS_EGG = register("mysterious_egg", new PileBlock(Settings.copy(Blocks.SLIME_BLOCK), PileBlock.MYSTERIOUS_EGG_SHAPES), ItemGroups.NATURAL); Block MYSTERIOUS_EGG = register("mysterious_egg", new PileBlock(Settings.copy(Blocks.SLIME_BLOCK), PileBlock.MYSTERIOUS_EGG_SHAPES), ItemGroups.NATURAL);
Block SLIME_PUSTULE = register("slime_pustule", new SlimePustuleBlock(Settings.copy(Blocks.SLIME_BLOCK)), ItemGroups.NATURAL);
SegmentedCropBlock OATS = register("oats", SegmentedCropBlock.create(11, 5, AbstractBlock.Settings.copy(Blocks.WHEAT), () -> UItems.OAT_SEEDS, null, null)); SegmentedCropBlock OATS = register("oats", SegmentedCropBlock.create(11, 5, AbstractBlock.Settings.copy(Blocks.WHEAT), () -> UItems.OAT_SEEDS, null, null));
SegmentedCropBlock OATS_STEM = register("oats_stem", OATS.createNext(5)); SegmentedCropBlock OATS_STEM = register("oats_stem", OATS.createNext(5));

View file

@ -171,7 +171,7 @@ public interface URenderers {
}, TintedBlock.REGISTRY.stream().map(Block::asItem).filter(i -> i != Items.AIR).toArray(Item[]::new)); }, TintedBlock.REGISTRY.stream().map(Block::asItem).filter(i -> i != Items.AIR).toArray(Item[]::new));
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), UBlocks.TRANSLUCENT_BLOCKS.stream().toArray(Block[]::new)); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), UBlocks.TRANSLUCENT_BLOCKS.stream().toArray(Block[]::new));
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(), UBlocks.MYSTERIOUS_EGG); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(), UBlocks.MYSTERIOUS_EGG, UBlocks.SLIME_PUSTULE);
// for lava boats // for lava boats
BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), Fluids.LAVA, Fluids.FLOWING_LAVA); BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), Fluids.LAVA, Fluids.FLOWING_LAVA);

View file

@ -0,0 +1,8 @@
{
"variants": {
"shape=drip": { "model": "unicopia:block/slime_pustule_drip" },
"shape=cap": { "model": "unicopia:block/slime_pustule_cap" },
"shape=string": { "model": "unicopia:block/slime_pustule_rope" },
"shape=pod": { "model": "unicopia:block/slime_pustule_pod" }
}
}

View file

@ -209,6 +209,7 @@
"block.unicopia.surface_chitin": "Surface Chitin", "block.unicopia.surface_chitin": "Surface Chitin",
"block.unicopia.mysterious_egg": "Mysterious Egg", "block.unicopia.mysterious_egg": "Mysterious Egg",
"block.unicopia.hive": "Hive", "block.unicopia.hive": "Hive",
"block.unicopia.slime_pustule": "Slime Pustule",
"block.unicopia.chitin": "Chitin", "block.unicopia.chitin": "Chitin",
"block.unicopia.chitin_spikes": "Chitin Spikes", "block.unicopia.chitin_spikes": "Chitin Spikes",
"block.unicopia.chiselled_chitin": "Chiselled Chitin", "block.unicopia.chiselled_chitin": "Chiselled Chitin",
@ -893,6 +894,7 @@
"unicopia.subtitle.item.apple.rot": "Apple rots", "unicopia.subtitle.item.apple.rot": "Apple rots",
"unicopia.subtitle.item.bracelet.sign": "Bracelet signed", "unicopia.subtitle.item.bracelet.sign": "Bracelet signed",
"unicopia.subtitle.block.chitin.ambience": "Scuttering", "unicopia.subtitle.block.chitin.ambience": "Scuttering",
"unicopia.subtitle.block.slime_pustule.pop": "Slime Pustule Burts",
"unicopia.subtitle.spell.cast.fail": "Spellcast fails", "unicopia.subtitle.spell.cast.fail": "Spellcast fails",
"unicopia.subtitle.spell.cast.success": "Spell casts", "unicopia.subtitle.spell.cast.success": "Spell casts",
"unicopia.subtitle.spell.cast.shoot": "Unicorn shoots", "unicopia.subtitle.spell.cast.shoot": "Unicorn shoots",

View file

@ -0,0 +1,59 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"from": [7, 14.9, 7],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [3, 15, 4],
"to": [9, 16, 10],
"faces": {
"north": {"uv": [0, 0, 6, 1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7, 10, 7],
"to": [9, 15, 9],
"faces": {
"north": {"uv": [1, 7, 5, 13], "texture": "#all"},
"east": {"uv": [1, 7, 5, 13], "texture": "#all"},
"south": {"uv": [1, 7, 5, 13], "texture": "#all"},
"west": {"uv": [1, 7, 5, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"faces": {
"north": {"uv": [12, 0, 13, 16], "texture": "#all"},
"east": {"uv": [13, 0, 14, 16], "texture": "#all"},
"south": {"uv": [15, 0, 16, 16], "texture": "#all"},
"west": {"uv": [14, 0, 15, 16], "texture": "#all"},
"up": {"uv": [13, 0, 14, 1], "texture": "#all"},
"down": {"uv": [12, 0, 13, 1], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,46 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"from": [7, 14.9, 7],
"to": [12, 16, 12],
"faces": {
"north": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1.1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"from": [3, 15, 4],
"to": [9, 16, 10],
"faces": {
"north": {"uv": [0, 0, 6, 1], "texture": "#all"},
"east": {"uv": [0, 0, 6, 1], "texture": "#all"},
"south": {"uv": [0, 0, 6, 1], "texture": "#all"},
"west": {"uv": [0, 0, 6, 1], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "rope",
"from": [7, 10, 7],
"to": [9, 15, 9],
"faces": {
"north": {"uv": [1, 7, 5, 13], "texture": "#all"},
"east": {"uv": [1, 7, 5, 13], "texture": "#all"},
"south": {"uv": [1, 7, 5, 13], "texture": "#all"},
"west": {"uv": [1, 7, 5, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,74 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"particle": "unicopia:block/slime_pustule",
"all": "unicopia:block/slime_pustule"
},
"elements": [
{
"name": "rope",
"from": [7, 15, 7],
"to": [9, 20, 9],
"faces": {
"north": {"uv": [2, 7, 4, 13], "texture": "#all"},
"east": {"uv": [2, 7, 4, 13], "texture": "#all"},
"south": {"uv": [2, 7, 4, 13], "texture": "#all"},
"west": {"uv": [2, 7, 4, 13], "texture": "#all"},
"up": {"uv": [2, 2, 4, 4], "texture": "#all"},
"down": {"uv": [2, 2, 4, 4], "texture": "#all"}
}
},
{
"name": "drop",
"from": [5, 10, 5],
"to": [11, 13, 11],
"faces": {
"north": {"uv": [0, 6, 6, 9], "texture": "#all"},
"east": {"uv": [0, 6, 6, 9], "texture": "#all"},
"south": {"uv": [0, 6, 6, 9], "texture": "#all"},
"west": {"uv": [0, 6, 6, 9], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [6, 13, 6],
"to": [10, 15, 10],
"faces": {
"north": {"uv": [0, 6, 6, 8], "texture": "#all"},
"east": {"uv": [0, 6, 6, 8], "texture": "#all"},
"south": {"uv": [0, 6, 6, 8], "texture": "#all"},
"west": {"uv": [0, 6, 6, 8], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [4, 1, 4],
"to": [12, 10, 12],
"faces": {
"north": {"uv": [0, 6, 6, 14], "texture": "#all"},
"east": {"uv": [0, 6, 6, 14], "texture": "#all"},
"south": {"uv": [0, 6, 6, 14], "texture": "#all"},
"west": {"uv": [0, 6, 6, 14], "texture": "#all"},
"up": {"uv": [0, 0, 6, 6], "texture": "#all"},
"down": {"uv": [0, 0, 6, 6], "texture": "#all"}
}
},
{
"name": "drop",
"from": [5, 2, 5],
"to": [11, 9, 11],
"faces": {
"north": {"uv": [7, 7, 11, 13], "texture": "#all"},
"east": {"uv": [7, 7, 11, 13], "texture": "#all"},
"south": {"uv": [7, 7, 11, 13], "texture": "#all"},
"west": {"uv": [7, 7, 11, 13], "texture": "#all"},
"up": {"uv": [7, 1, 11, 5], "texture": "#all"},
"down": {"uv": [7, 1, 11, 5], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/slime_pustule",
"particle": "unicopia:block/slime_pustule"
},
"elements": [
{
"name": "rope",
"from": [7.5, 0, 7.5],
"to": [8.5, 16, 8.5],
"faces": {
"north": {"uv": [12, 0, 13, 16], "texture": "#all"},
"east": {"uv": [13, 0, 14, 16], "texture": "#all"},
"south": {"uv": [15, 0, 16, 16], "texture": "#all"},
"west": {"uv": [14, 0, 15, 16], "texture": "#all"},
"up": {"uv": [13, 0, 14, 1], "texture": "#all"},
"down": {"uv": [12, 0, 13, 1], "texture": "#all"}
}
}
]
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "unicopia:item/kirin_badge"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "unicopia:block/slime_pustule_pod"
}

View file

@ -431,6 +431,12 @@
], ],
"subtitle": "unicopia.subtitle.block.chitin.ambience" "subtitle": "unicopia.subtitle.block.chitin.ambience"
}, },
"block.slime_pustule.pop": {
"sounds": [
"unicopia:pustule/pop"
],
"subtitle": "unicopia.subtitle.block.slime_pustule.pop"
},
"spell.cast.fail": { "spell.cast.fail": {
"sounds": [ "sounds": [

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View file

@ -41,6 +41,17 @@
"projection": "rigid" "projection": "rigid"
}, },
"weight": 2 "weight": 2
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/chamber_decoration/slime",
"processors": {
"processors": []
},
"projection": "rigid"
},
"weight": 2
} }
], ],
"fallback": "minecraft:empty" "fallback": "minecraft:empty"

View file

@ -26,6 +26,24 @@
"projection": "rigid" "projection": "rigid"
}, },
"weight": 1 "weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/chamber1",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/chamber2",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
} }
], ],
"fallback": "unicopia:changeling_hive/hidden_entrance_terminations" "fallback": "unicopia:changeling_hive/hidden_entrance_terminations"

View file

@ -107,6 +107,60 @@
"projection": "rigid" "projection": "rigid"
}, },
"weight": 1 "weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/offshoot2",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 3
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/offshoot3",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 2
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/offshoot_elbow",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 2
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/offshoot_elbow2",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 2
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/chamber1",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/chamber2",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
} }
], ],
"fallback": "unicopia:changeling_hive/tunnel_terminations" "fallback": "unicopia:changeling_hive/tunnel_terminations"

View file

@ -7,7 +7,7 @@
"processors": "unicopia:changeling_hive_decay", "processors": "unicopia:changeling_hive_decay",
"projection": "rigid" "projection": "rigid"
}, },
"weight": 1 "weight": 3
}, },
{ {
"element": { "element": {
@ -16,6 +16,15 @@
"processors": "unicopia:changeling_hive_decay", "processors": "unicopia:changeling_hive_decay",
"projection": "rigid" "projection": "rigid"
}, },
"weight": 3
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/entrance",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1 "weight": 1
} }
], ],

View file

@ -35,6 +35,15 @@
"projection": "rigid" "projection": "rigid"
}, },
"weight": 1 "weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/termination/tunnel1",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
} }
], ],
"fallback": "minecraft:empty" "fallback": "minecraft:empty"

View file

@ -53,6 +53,24 @@
"projection": "rigid" "projection": "rigid"
}, },
"weight": 1 "weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/termination1",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 1
},
{
"element": {
"element_type": "minecraft:single_pool_element",
"location": "unicopia:changeling_hive/slimey/offshoot_transition",
"processors": "unicopia:changeling_hive_decay",
"projection": "rigid"
},
"weight": 2
} }
], ],
"fallback": "unicopia:changeling_hive/tunnel_terminations" "fallback": "unicopia:changeling_hive/tunnel_terminations"