Add crafting recipes, add cloud anvil, add cloud door

This commit is contained in:
Sollace 2018-09-19 09:07:39 +02:00
parent 2465806794
commit bcb0ee9f75
33 changed files with 809 additions and 23 deletions

View file

@ -11,6 +11,11 @@ public final class Predicates {
public static final Predicate<EntityPlayer> INTERACT_WITH_CLOUDS = player -> {
return player != null && PlayerSpeciesList.instance().getPlayer(player).getPlayerSpecies().canInteractWithClouds();
};
public static final Predicate<EntityPlayer> MAGI = player -> {
return player != null && PlayerSpeciesList.instance().getPlayer(player).getPlayerSpecies().canCast();
};
public static final Predicate<EntityItem> ITEM_INTERACT_WITH_CLOUDS = item -> {
return item != null && PlayerSpeciesList.instance().getEntity(item).getPlayerSpecies().canInteractWithClouds();
};

View file

@ -1,8 +1,10 @@
package com.minelittlepony.unicopia;
import com.minelittlepony.unicopia.block.BlockCloud;
import com.minelittlepony.unicopia.block.BlockCloudAnvil;
import com.minelittlepony.unicopia.block.BlockCloudSlab;
import com.minelittlepony.unicopia.block.BlockCloudStairs;
import com.minelittlepony.unicopia.block.BlockCloudDoor;
import net.minecraft.block.Block;
import net.minecraftforge.registries.IForgeRegistry;
@ -15,7 +17,11 @@ public class UBlocks {
public static final BlockCloudSlab cloud_double_slab = new BlockCloudSlab(true, UMaterials.cloud, Unicopia.MODID, "cloud_double_slab");
public static final BlockCloudSlab cloud_slab = new BlockCloudSlab(false, UMaterials.cloud, Unicopia.MODID, "cloud_slab");
public static final BlockCloudDoor mist_door = new BlockCloudDoor(UMaterials.cloud, Unicopia.MODID, "mist_door");
public static final BlockCloudAnvil anvil = new BlockCloudAnvil(Unicopia.MODID, "anvil");
static void registerBlocks(IForgeRegistry<Block> registry) {
registry.registerAll(cloud, stairsCloud, cloud_double_slab, cloud_slab);
registry.registerAll(cloud, stairsCloud, cloud_double_slab, cloud_slab, mist_door, anvil);
}
}

View file

@ -2,6 +2,7 @@ package com.minelittlepony.unicopia;
import com.minelittlepony.unicopia.item.ItemApple;
import com.minelittlepony.unicopia.item.ItemCloud;
import com.minelittlepony.unicopia.item.ItemOfHolding;
import com.minelittlepony.unicopia.item.UItemBlock;
import com.minelittlepony.unicopia.item.UItemMultiTexture;
import com.minelittlepony.unicopia.item.UItemSlab;
@ -9,10 +10,16 @@ import com.minelittlepony.unicopia.item.UItemSlab;
import come.minelittlepony.unicopia.forgebullshit.RegistryLockSpinner;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Enchantments;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.registries.IForgeRegistry;
@ -38,16 +45,29 @@ public class UItems {
public static final Item cloud_block = new UItemMultiTexture(UBlocks.cloud, stack -> {
return CloudType.byMetadata(stack.getMetadata()).getTranslationKey();
}, INTERACT_WITH_CLOUDS).setRegistryName(Unicopia.MODID, "cloud_block");
}, INTERACT_WITH_CLOUDS)
.setRegistryName(Unicopia.MODID, "cloud_block");
public static final Item cloud_stairs = new UItemBlock(UBlocks.stairsCloud, INTERACT_WITH_CLOUDS)
.setTranslationKey("cloud_stairs")
.setRegistryName(Unicopia.MODID, "cloud_stairs");
public static final Item anvil = new UItemBlock(UBlocks.anvil, INTERACT_WITH_CLOUDS)
.setTranslationKey("cloud_anvil")
.setRegistryName(Unicopia.MODID, "anvil");
public static final Item mist_door = new ItemDoor(UBlocks.mist_door)
.setTranslationKey("mist_door")
.setRegistryName(Unicopia.MODID, "mist_door");
public static final Item cloud_slab = new UItemSlab(UBlocks.cloud_slab, UBlocks.cloud_slab, UBlocks.cloud_double_slab, INTERACT_WITH_CLOUDS)
.setTranslationKey("cloud_slab")
.setRegistryName(Unicopia.MODID, "cloud_slab");
public static final ItemOfHolding bag_of_holding = new ItemOfHolding(Unicopia.MODID, "bag_of_holding");
static void registerItems(IForgeRegistry<Item> registry) {
RegistryLockSpinner.unlock(Item.REGISTRY);
@ -55,7 +75,9 @@ public class UItems {
RegistryLockSpinner.lock(Item.REGISTRY);
registry.registerAll(cloud_spawner, dew_drop, cloud_matter, cloud_block, cloud_stairs, cloud_slab);
registry.registerAll(cloud_spawner, dew_drop, cloud_matter, cloud_block,
cloud_stairs, cloud_slab, mist_door, anvil,
bag_of_holding);
if (UClient.isClientSide()) {
registerAllVariants(apple, apple.getVariants());
@ -65,7 +87,12 @@ public class UItems {
registerAllVariants(cloud_stairs, "cloud_stairs");
registerAllVariants(cloud_slab, CloudType.getVariants("_cloud_slab"));
registerAllVariants(cloud_block, CloudType.getVariants("_cloud_block"));
registerAllVariants(mist_door, "mist_door");
registerAllVariants(anvil, "anvil");
registerAllVariants(bag_of_holding, "bag_of_holding");
}
registerFuels();
}
private static void registerAllVariants(Item item, String... variants) {
@ -80,4 +107,20 @@ public class UItems {
new ItemStack(UItems.apple, 1, zap),
new ItemStack(UItems.apple, 1, zap + 1), 0.1F);
}
static void registerRecipes(IForgeRegistry<IRecipe> registry) {
Ingredient dewdrop = Ingredient.fromItem(dew_drop);
Ingredient cloud = Ingredient.fromStacks(new ItemStack(cloud_block, 1, 0));
ItemStack bookStack = new ItemStack(Items.ENCHANTED_BOOK, 1);
bookStack.addEnchantment(Enchantments.FEATHER_FALLING, 1);
Ingredient book = Ingredient.fromStacks(bookStack);
registry.register(new ShapedRecipes("", 3, 3, NonNullList.from(Ingredient.EMPTY,
dewdrop, dewdrop, dewdrop,
cloud, book, cloud,
cloud, cloud, cloud
), new ItemStack(cloud_block, 1, 2)).setRegistryName(Unicopia.MODID, "id_dont_care_just_use_it"));
}
}

View file

@ -57,6 +57,11 @@ public class BlockCloud extends Block implements ICloudBlock {
return false;
}
@Override
public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos) {
return allowsFallingBlockToPass(state, world, pos);
}
@Override
public boolean isNormalCube(IBlockState state) {
return false;
@ -67,12 +72,6 @@ public class BlockCloud extends Block implements ICloudBlock {
return BlockRenderLayer.TRANSLUCENT;
}
@Deprecated
@Override
public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
return super.shouldSideBeRendered(blockState, blockAccess, pos, side);
}
@Override
public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face) {
@ -89,12 +88,6 @@ public class BlockCloud extends Block implements ICloudBlock {
return super.doesSideBlockRendering(state, world, pos, face);
}
//Can entities walk through?
@Override
public boolean isPassable(IBlockAccess w, BlockPos pos) {
return super.isPassable(w, pos);
}
@Override
public void onFallenUpon(World world, BlockPos pos, Entity entityIn, float fallDistance) {
if (entityIn.isSneaking()) {

View file

@ -0,0 +1,163 @@
package com.minelittlepony.unicopia.block;
import java.util.List;
import java.util.Random;
import javax.annotation.Nullable;
import com.minelittlepony.unicopia.CloudType;
import com.minelittlepony.util.WorldEvent;
import net.minecraft.block.BlockAnvil;
import net.minecraft.block.SoundType;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityFallingBlock;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class BlockCloudAnvil extends BlockAnvil implements ICloudBlock {
public BlockCloudAnvil(String domain, String name) {
super();
setSoundType(SoundType.CLOTH);
setHardness(0.025F);
setResistance(2000);
setRegistryName(domain, name);
setTranslationKey(name);
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.TRANSLUCENT;
}
@Override
public String getHarvestTool(IBlockState state) {
return "shovel";
}
@Override
public int getHarvestLevel(IBlockState state) {
return 0;
}
@Override
public void onFallenUpon(World world, BlockPos pos, Entity entityIn, float fallDistance) {
if (entityIn.isSneaking()) {
super.onFallenUpon(world, pos, entityIn, fallDistance);
} else {
entityIn.fall(fallDistance, 0);
}
}
@Override
public void onEndFalling(World world, BlockPos pos, IBlockState fallingState, IBlockState hitState) {
WorldEvent.ENTITY_TAKEOFF.play(world, pos, 0);
}
@Override
public void onBroken(World world, BlockPos pos) {
WorldEvent.ENTITY_TAKEOFF.play(world, pos, 0);
}
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
return false;
}
@Override
protected void onStartFalling(EntityFallingBlock fallingEntity) {
fallingEntity.setHurtEntities(true);
}
@Override
public void onLanded(World worldIn, Entity entity) {
if (entity.isSneaking()) {
super.onLanded(worldIn, entity);
} else if (entity.motionY < 0) {
if (Math.abs(entity.motionY) >= 0.25) {
entity.motionY = -entity.motionY * 2;
} else {
entity.motionY = 0;
}
}
}
@Override
public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos) {
return allowsFallingBlockToPass(state, world, pos);
}
@Override
public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) {
IBlockState below = world.getBlockState(pos.down());
if (below.getBlock() instanceof ICloudBlock) {
if (((ICloudBlock)below.getBlock()).isDense(below)) {
return;
}
}
super.updateTick(world, pos, state, rand);
}
@Override
public void onEntityCollision(World w, BlockPos pos, IBlockState state, Entity entity) {
if (getCanInteract(state, entity)) {
if (!entity.isSneaking() && Math.abs(entity.motionY) >= 0.25) {
entity.motionY += 0.0155 * (entity.fallDistance < 1 ? 1 : entity.fallDistance);
} else {
entity.motionY = 0;
}
super.onEntityCollision(w, pos, state, entity);
}
}
@Override
public boolean canHarvestBlock(IBlockAccess world, BlockPos pos, EntityPlayer player) {
return getCanInteract(world.getBlockState(pos), player);
}
@Override
public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) {
items.add(new ItemStack(this));
}
@Override
public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity) {
return getCanInteract(state, entity) && super.canEntityDestroy(state, world, pos, entity);
}
@Deprecated
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entity, boolean p_185477_7_) {
if (getCanInteract(state, entity)) {
super.addCollisionBoxToList(state, worldIn, pos, entityBox, collidingBoxes, entity, p_185477_7_);
}
}
@Deprecated
@Override
public float getPlayerRelativeBlockHardness(IBlockState state, EntityPlayer player, World worldIn, BlockPos pos) {
if (!CloudType.NORMAL.canInteract(player)) {
return -1;
}
return super.getPlayerRelativeBlockHardness(state, player, worldIn, pos);
}
@Override
public CloudType getCloudMaterialType(IBlockState blockState) {
return CloudType.NORMAL;
}
}

View file

@ -0,0 +1,117 @@
package com.minelittlepony.unicopia.block;
import java.util.Random;
import com.minelittlepony.unicopia.CloudType;
import com.minelittlepony.unicopia.UItems;
import net.minecraft.block.BlockDoor;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class BlockCloudDoor extends BlockDoor implements ICloudBlock {
public BlockCloudDoor(Material material, String domain, String name) {
super(material);
setTranslationKey(name);
setRegistryName(domain, name);
setSoundType(SoundType.CLOTH);
setHardness(1);
setResistance(200);
}
@Override
public MapColor getMapColor(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
return blockMapColor;
}
@Override
public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos) {
return super.isAir(state, world, pos);
}
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if (!getCanInteract(state, player)) {
return false;
}
setHardness(3);
setResistance(200);
return super.onBlockActivated(worldIn, pos, state, player, hand, facing, hitX, hitY, hitZ);
}
@Override
public String getHarvestTool(IBlockState state) {
return "shovel";
}
@Override
public int getHarvestLevel(IBlockState state) {
return 0;
}
@Deprecated
@Override
public float getBlockHardness(IBlockState blockState, World world, BlockPos pos) {
float hardness = super.getBlockHardness(blockState, world, pos);
return Math.max(hardness, Math.min(60, hardness + (pos.getY() - 100)));
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.TRANSLUCENT;
}
@Override
public void onEntityCollision(World w, BlockPos pos, IBlockState state, Entity entity) {
if (getCanInteract(state, entity)) {
if (!entity.isSneaking() && Math.abs(entity.motionY) >= 0.25) {
entity.motionY += 0.0155 * (entity.fallDistance < 1 ? 1 : entity.fallDistance);
} else {
entity.motionY = 0;
}
super.onEntityCollision(w, pos, state, entity);
}
}
@Override
public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity) {
return getCanInteract(state, entity) && super.canEntityDestroy(state, world, pos, entity);
}
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
return state.getValue(HALF) == BlockDoor.EnumDoorHalf.UPPER ? Items.AIR : UItems.mist_door;
}
@Deprecated
@Override
public float getPlayerRelativeBlockHardness(IBlockState state, EntityPlayer player, World worldIn, BlockPos pos) {
if (!CloudType.NORMAL.canInteract(player)) {
return -1;
}
return super.getPlayerRelativeBlockHardness(state, player, worldIn, pos);
}
@Override
public CloudType getCloudMaterialType(IBlockState blockState) {
return CloudType.NORMAL;
}
}

View file

@ -38,6 +38,7 @@ public class BlockCloudSlab extends BlockSlab implements ICloudBlock {
public BlockCloudSlab(boolean isDouble, Material material, String domain, String name) {
super(material);
setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
setHardness(0.5F);
setResistance(1.0F);
@ -54,6 +55,11 @@ public class BlockCloudSlab extends BlockSlab implements ICloudBlock {
return UBlocks.cloud.isTranslucent(state);
}
@Override
public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos) {
return allowsFallingBlockToPass(state, world, pos);
}
@Override
public boolean isOpaqueCube(IBlockState state) {
return isDouble() ? UBlocks.cloud.isOpaqueCube(state) : false;

View file

@ -62,6 +62,11 @@ public class BlockCloudStairs extends BlockStairs implements ICloudBlock {
theBlock.onFallenUpon(w, pos, entity, fallDistance);
}
@Override
public boolean isAir(IBlockState state, IBlockAccess world, BlockPos pos) {
return allowsFallingBlockToPass(state, world, pos);
}
@Override
public void onLanded(World w, Entity entity) {
theBlock.onLanded(w, entity);

View file

@ -2,8 +2,12 @@ package com.minelittlepony.unicopia.block;
import com.minelittlepony.unicopia.CloudType;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
public interface ICloudBlock {
@ -13,4 +17,16 @@ public interface ICloudBlock {
return getCloudMaterialType(state).canInteract(e);
}
default boolean isDense(IBlockState blockState) {
return getCloudMaterialType(blockState) != CloudType.NORMAL;
}
default boolean allowsFallingBlockToPass(IBlockState state, IBlockAccess world, BlockPos pos) {
if (isDense(state)) {
return false;
}
Block above = world.getBlockState(pos.up()).getBlock();
return !(above instanceof ICloudBlock) && above instanceof BlockFalling;
}
}

View file

@ -426,8 +426,6 @@ public class EntityCloud extends EntityFlying implements IAnimals {
return;
}
setStationary(true);
EnumFacing direction = trace.sideHit;
BlockPos blockPos = new BlockPos(trace.hitVec);
@ -447,7 +445,11 @@ public class EntityCloud extends EntityFlying implements IAnimals {
}
private boolean onAttackByPlayer(DamageSource source, float amount, EntityPlayer player) {
boolean canFly = PlayerSpeciesList.instance().getPlayer(player).getPlayerSpecies().canInteractWithClouds();
ItemStack stack = player.getHeldItemMainhand();
boolean canFly = EnchantmentHelper.getEnchantments(stack).containsKey(Enchantments.FEATHER_FALLING)
|| Predicates.INTERACT_WITH_CLOUDS.test(player);
boolean stat = getStationary();
if (stat || canFly) {
@ -457,7 +459,7 @@ public class EntityCloud extends EntityFlying implements IAnimals {
}
}
ItemStack stack = player.getHeldItemMainhand();
if (stack != null && stack.getItem() instanceof ItemSword) {
return super.attackEntityFrom(source, amount);
} else if (stack != null && stack.getItem() instanceof ItemSpade) {
@ -483,15 +485,39 @@ public class EntityCloud extends EntityFlying implements IAnimals {
setDead();
}
super.onDeath(s);
clearItemFloatingState();
}
@Override
public void setDead() {
super.setDead();
clearItemFloatingState();
}
protected void clearItemFloatingState() {
AxisAlignedBB bounds = getEntityBoundingBox().grow(1 / (1 + getCloudSize())).grow(5);
for (Entity i : world.getEntitiesInAABBexcluding(this, bounds, this::entityIsFloatingItem)) {
i.setNoGravity(false);
}
}
private boolean entityIsFloatingItem(Entity e) {
return e instanceof EntityItem
&& Predicates.ITEM_INTERACT_WITH_CLOUDS.test((EntityItem)e);
}
@Override
protected void dropFewItems(boolean hitByPlayer, int looting) {
if (hitByPlayer) {
Item item = getDropItem();
int amount = 2 + world.rand.nextInt(3 + looting);
for (int i = 0; i < amount; i++) {
dropItem(item, 1);
int amount = 2 + world.rand.nextInt(3);
dropItem(item, amount * (1 + looting));
if (world.rand.nextBoolean()) {
dropItem(UItems.dew_drop, 2 + looting);
}
}
}
@ -530,7 +556,7 @@ public class EntityCloud extends EntityFlying implements IAnimals {
spawnThunderbolt(getPosition());
}
if (entity instanceof EntityItem) {
if (getStationary() && entity instanceof EntityItem) {
entity.motionX /= 8;
entity.motionZ /= 8;
entity.motionY /= 16;

View file

@ -0,0 +1,16 @@
{
"variants": {
"damage=0,facing=south": { "model": "unicopia:anvil_undamaged" },
"damage=0,facing=west": { "model": "unicopia:anvil_undamaged", "y": 90 },
"damage=0,facing=north": { "model": "unicopia:anvil_undamaged", "y": 180 },
"damage=0,facing=east": { "model": "unicopia:anvil_undamaged", "y": 270 },
"damage=1,facing=south": { "model": "unicopia:anvil_undamaged" },
"damage=1,facing=west": { "model": "unicopia:anvil_undamaged", "y": 90 },
"damage=1,facing=north": { "model": "unicopia:anvil_undamaged", "y": 180 },
"damage=1,facing=east": { "model": "unicopia:anvil_undamaged", "y": 270 },
"damage=2,facing=south": { "model": "unicopia:anvil_undamaged" },
"damage=2,facing=west": { "model": "unicopia:anvil_undamaged", "y": 90 },
"damage=2,facing=north": { "model": "unicopia:anvil_undamaged", "y": 180 },
"damage=2,facing=east": { "model": "unicopia:anvil_undamaged", "y": 270 }
}
}

View file

@ -0,0 +1,68 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_bottom" },
"facing=south,half=lower,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_bottom", "y": 90 },
"facing=west,half=lower,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_bottom", "y": 180 },
"facing=north,half=lower,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_bottom", "y": 270 },
"facing=east,half=lower,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_bottom_rh" },
"facing=south,half=lower,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 90 },
"facing=west,half=lower,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 180 },
"facing=north,half=lower,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 270 },
"facing=east,half=lower,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 90 },
"facing=south,half=lower,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 180 },
"facing=west,half=lower,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_bottom_rh", "y": 270 },
"facing=north,half=lower,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_bottom_rh" },
"facing=east,half=lower,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_bottom", "y": 270 },
"facing=south,half=lower,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_bottom" },
"facing=west,half=lower,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_bottom", "y": 90 },
"facing=north,half=lower,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_bottom", "y": 180 },
"facing=east,half=upper,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_top" },
"facing=south,half=upper,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_top", "y": 90 },
"facing=west,half=upper,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_top", "y": 180 },
"facing=north,half=upper,hinge=left,open=false,powered=false": { "model": "unicopia:mist_door_top", "y": 270 },
"facing=east,half=upper,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_top_rh" },
"facing=south,half=upper,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 90 },
"facing=west,half=upper,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 180 },
"facing=north,half=upper,hinge=right,open=false,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 270 },
"facing=east,half=upper,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 90 },
"facing=south,half=upper,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 180 },
"facing=west,half=upper,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_top_rh", "y": 270 },
"facing=north,half=upper,hinge=left,open=true,powered=false": { "model": "unicopia:mist_door_top_rh" },
"facing=east,half=upper,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_top", "y": 270 },
"facing=south,half=upper,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_top" },
"facing=west,half=upper,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_top", "y": 90 },
"facing=north,half=upper,hinge=right,open=true,powered=false": { "model": "unicopia:mist_door_top", "y": 180 },
"facing=east,half=lower,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_bottom" },
"facing=south,half=lower,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_bottom", "y": 90 },
"facing=west,half=lower,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_bottom", "y": 180 },
"facing=north,half=lower,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_bottom", "y": 270 },
"facing=east,half=lower,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_bottom_rh" },
"facing=south,half=lower,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 90 },
"facing=west,half=lower,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 180 },
"facing=north,half=lower,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 270 },
"facing=east,half=lower,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 90 },
"facing=south,half=lower,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 180 },
"facing=west,half=lower,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_bottom_rh", "y": 270 },
"facing=north,half=lower,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_bottom_rh" },
"facing=east,half=lower,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_bottom", "y": 270 },
"facing=south,half=lower,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_bottom" },
"facing=west,half=lower,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_bottom", "y": 90 },
"facing=north,half=lower,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_bottom", "y": 180 },
"facing=east,half=upper,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_top" },
"facing=south,half=upper,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_top", "y": 90 },
"facing=west,half=upper,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_top", "y": 180 },
"facing=north,half=upper,hinge=left,open=false,powered=true": { "model": "unicopia:mist_door_top", "y": 270 },
"facing=east,half=upper,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_top_rh" },
"facing=south,half=upper,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 90 },
"facing=west,half=upper,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 180 },
"facing=north,half=upper,hinge=right,open=false,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 270 },
"facing=east,half=upper,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 90 },
"facing=south,half=upper,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 180 },
"facing=west,half=upper,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_top_rh", "y": 270 },
"facing=north,half=upper,hinge=left,open=true,powered=true": { "model": "unicopia:mist_door_top_rh" },
"facing=east,half=upper,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_top", "y": 270 },
"facing=south,half=upper,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_top" },
"facing=west,half=upper,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_top", "y": 90 },
"facing=north,half=upper,hinge=right,open=true,powered=true": { "model": "unicopia:mist_door_top", "y": 180 }
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/anvil",
"textures": {
"particle": "unicopia:blocks/cloud_normal",
"body": "unicopia:blocks/cloud_normal",
"top": "unicopia:blocks/cloud_normal"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom",
"textures": {
"bottom": "unicopia:blocks/door_mist_lower",
"top": "unicopia:blocks/door_mist_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_bottom_rh",
"textures": {
"bottom": "unicopia:blocks/door_mist_lower",
"top": "unicopia:blocks/door_mist_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_top",
"textures": {
"bottom": "unicopia:blocks/door_mist_lower",
"top": "unicopia:blocks/door_mist_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_top_rh",
"textures": {
"bottom": "unicopia:blocks/door_mist_lower",
"top": "unicopia:blocks/door_mist_upper"
}
}

View file

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

View file

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

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud_stairs",
"count": 4
}
}

View file

@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"***",
"*#*",
"***"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
],
"*": [
{
"item": "unicopia:cloud_matter",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud",
"data": 1,
"count": 1
}
}

View file

@ -0,0 +1,64 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"$$$",
"#*#",
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
],
"$": [
{
"item": "unicopia:dew_drop"
}
],
"*": [
{
"item": "minecraft:enchanted_book",
"data": 2,
"nbt": {
"StoredEnchantments": [
{ "id": 2, "level": 1 }
]
}
},
{
"item": "minecraft:enchanted_book",
"data": 2,
"nbt": {
"StoredEnchantments": [
{ "id": 2, "level": 2 }
]
}
},
{
"item": "minecraft:enchanted_book",
"data": 2,
"nbt": {
"StoredEnchantments": [
{ "id": 2, "level": 3 }
]
}
},
{
"item": "minecraft:enchanted_book",
"data": 2,
"nbt": {
"StoredEnchantments": [
{ "id": 2, "level": 4 }
]
}
}
]
},
"result": {
"item": "unicopia:cloud_block",
"data": 2,
"count": 4
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 2
}
]
},
"result": {
"item": "unicopia:cloud_slab",
"data": 2,
"count": 6
}
}

View file

@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" ##",
" ##",
" ##"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
]
},
"result": {
"item": "unicopia:mist_door",
"data": 0,
"count": 1
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###",
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_matter"
}
]
},
"result": {
"item": "unicopia:cloud_block",
"data": 0,
"count": 1
}
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud_slab",
"data": 0,
"count": 6
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" ##",
" ##"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud_block",
"data": 1,
"count": 1
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0,
"data": 1
}
]
},
"result": {
"item": "unicopia:cloud_slab",
"data": 1,
"count": 6
}
}

View file

@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"***",
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
],
"*": [
{
"item": "unicopia:cloud_matter",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud",
"data": 0,
"count": 1
}
}

View file

@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"###",
"###"
],
"key": {
"#": [
{
"item": "unicopia:cloud_block",
"data": 0
}
]
},
"result": {
"item": "unicopia:cloud",
"data": 2,
"count": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B