Fixed AI path issue #116. Dark Shingle Roof added (experimental).
This commit is contained in:
parent
6876063b70
commit
267233d994
64 changed files with 1045 additions and 40 deletions
|
@ -2,7 +2,7 @@
|
|||
org.gradle.daemon=false
|
||||
org.gradle.jvmargs=-Xmx8G
|
||||
version_minecraft=1.16.1
|
||||
version_forge_minecraft=1.16.1-32.0.98
|
||||
version_forge_minecraft=1.16.1-32.0.106
|
||||
version_fml_mappings=20200514-1.16
|
||||
version_jei=1.16.1:7.0.0.6
|
||||
version_engineersdecor=1.1.1-b6
|
||||
version_engineersdecor=1.1.1-b7
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.16.1": {
|
||||
"1.1.1-b7": "[F] Fixed AI-open-path bug (issue #116, ty KrAzYGEEK32, desht).\n[F] Conditional recipes extended to additional vanilla ingredients in case of oredict tag issues.\n[M] Lang file update zh_cn (PR#117, Moonisky).",
|
||||
"1.1.1-b6": "[F] Iron Hatch rendering fixed (issue #113, ty KrAzYGEEK32).\n[F] Hotfix of UI tooltip crash for versions Forge < 32.0.97 mapping issue.",
|
||||
"1.1.1-b5": "[M] Transmuted the \"Treated Wood Crafting Table\" to a \"Metal Crafting Table\" to de-duplicate the new Immersive Engineering \"Engineer's Crafting Table\".\n[F] Fixed metal pole culling (issue #109, thx Alsett).",
|
||||
"1.1.1-b4": "[F] Fixed Fluid Barrel tooltip text duplicate.\n[F] Fixed IE hard-dependency opt-out.\n[M] Side Table model and shape refined.\n[A] Dense Grit Dirt added.\n[M] Wood textures slightly darker, obsolete textures removed.",
|
||||
|
@ -10,7 +11,7 @@
|
|||
"1.1.1-a1": "[A] Initial port."
|
||||
},
|
||||
"promos": {
|
||||
"1.16.1-recommended": "1.1.1-b6",
|
||||
"1.16.1-latest": "1.1.1-b6"
|
||||
"1.16.1-recommended": "1.1.1-b7",
|
||||
"1.16.1-latest": "1.1.1-b7"
|
||||
}
|
||||
}
|
|
@ -11,6 +11,10 @@ Mod sources for Minecraft version 1.15.1.
|
|||
|
||||
## Version history
|
||||
|
||||
- v1.1.1-b7 [F] Fixed AI-open-path bug (issue #116, ty KrAzYGEEK32, desht).
|
||||
[F] Conditional recipes extended to additional vanilla ingredients in case of oredict tag issues.
|
||||
[M] Lang file update zh_cn (PR#117, Moonisky).
|
||||
|
||||
- v1.1.1-b6 [F] Iron Hatch rendering fixed (issue #113, ty KrAzYGEEK32).
|
||||
[F] Hotfix of UI tooltip crash for versions Forge < 32.0.97 mapping issue.
|
||||
|
||||
|
|
|
@ -521,6 +521,8 @@ public class ModConfig
|
|||
// Cache
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@Deprecated
|
||||
private static String const_exclude_patterns = "dark_shingle_*"; // experimental
|
||||
private static final CompoundNBT server_config_ = new CompoundNBT();
|
||||
private static HashSet<String> optouts_ = new HashSet<>();
|
||||
private static boolean with_experimental_features_ = false;
|
||||
|
@ -551,6 +553,7 @@ public class ModConfig
|
|||
{
|
||||
String exc = SERVER.pattern_excludes.get().toLowerCase().replaceAll(MODID+":", "").replaceAll("[^*_,a-z0-9]", "");
|
||||
if(!exc.isEmpty()) LOGGER.info("Config pattern excludes: '" + exc + "'");
|
||||
if(!const_exclude_patterns.isEmpty()) exc += "," + const_exclude_patterns;
|
||||
String[] excl = exc.split(",");
|
||||
excludes_.clear();
|
||||
for(int i=0; i< excl.length; ++i) {
|
||||
|
|
|
@ -211,6 +211,28 @@ public class ModContent
|
|||
|
||||
// -------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final EdRoofBlock DARK_CERAMIC_SHINGLE_ROOF = (EdRoofBlock)(new EdRoofBlock(
|
||||
DecorBlock.CFG_DEFAULT,
|
||||
Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof"));
|
||||
|
||||
public static final DecorBlock.Normal DARK_CERAMIC_SHINGLE_ROOF_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal(
|
||||
DecorBlock.CFG_DEFAULT,
|
||||
Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_block"));
|
||||
|
||||
public static final EdSlabBlock DARK_CERAMIC_SHINGLE_ROOF_SLAB = (EdSlabBlock)(new EdSlabBlock(
|
||||
DecorBlock.CFG_DEFAULT,
|
||||
Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_slab"));
|
||||
|
||||
public static final EdSlabSliceBlock HALFSLAB_DARK_CERAMIC_SHINGLE_ROOF = (EdSlabSliceBlock)(new EdSlabSliceBlock(
|
||||
DecorBlock.CFG_CUTOUT,
|
||||
Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_slabslice"));
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final EdGroundBlock DENSE_GRIT_SAND = (EdGroundBlock)(new EdGroundBlock(
|
||||
DecorBlock.CFG_DEFAULT,
|
||||
Block.Properties.create(Material.EARTH, MaterialColor.DIRT).hardnessAndResistance(0.5f, 3f).sound(SoundType.GROUND).harvestTool(ToolType.SHOVEL)
|
||||
|
@ -281,7 +303,7 @@ public class ModContent
|
|||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_side_table"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable TREATED_WOOD_WINDOWSILL = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_FACING_PLACEMENT,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_windowsill"));
|
||||
|
@ -295,19 +317,19 @@ public class ModContent
|
|||
// -------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable INSET_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_235838_a_((state)->15).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(5.2,5.2,0, 10.8,10.8,0.3)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_inset_light"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable FLOOR_EDGE_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_235838_a_((state)->15).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(5,0,0, 11,2,0.5)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_floor_edge_light"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable CEILING_EDGE_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_235838_a_((state)->15).notSolid(),
|
||||
new AxisAlignedBB[]{
|
||||
Auxiliaries.getPixeledAABB( 0,15.5,0, 16,16,2.0),
|
||||
|
@ -318,7 +340,7 @@ public class ModContent
|
|||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_ceiling_edge_light"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable BULB_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_235838_a_((state)->15).notSolid(),
|
||||
new AxisAlignedBB[]{
|
||||
Auxiliaries.getPixeledAABB(6.5,6.5,1, 9.5,9.5,4),
|
||||
|
@ -407,37 +429,37 @@ public class ModContent
|
|||
// -------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_MODLOGO = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1000f).sound(SoundType.WOOD).func_235838_a_((state)->1).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(0,0,15.6, 16,16,16.0)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_decor"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_HOTWIRE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_hotwire"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_DANGER = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_danger"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_DEFENSE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_defense"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_FACTORY_AREA = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_factoryarea"));
|
||||
|
||||
public static final DecorBlock.DirectedWaterLoggable SIGN_EXIT = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
|
||||
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE,
|
||||
Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(),
|
||||
Auxiliaries.getPixeledAABB(3,7,15.6, 13,13,16)
|
||||
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_exit"));
|
||||
|
@ -793,6 +815,10 @@ public class ModContent
|
|||
CONCRETE_WALL,
|
||||
PANZERGLASS_BLOCK,
|
||||
PANZERGLASS_SLAB,
|
||||
DARK_CERAMIC_SHINGLE_ROOF,
|
||||
DARK_CERAMIC_SHINGLE_ROOF_BLOCK,
|
||||
DARK_CERAMIC_SHINGLE_ROOF_SLAB,
|
||||
HALFSLAB_DARK_CERAMIC_SHINGLE_ROOF,
|
||||
METAL_RUNG_LADDER,
|
||||
METAL_RUNG_STEPS,
|
||||
TREATED_WOOD_LADDER,
|
||||
|
|
|
@ -37,6 +37,7 @@ public class DecorBlock
|
|||
public static final long CFG_FLIP_PLACEMENT_IF_SAME = StandardBlocks.CFG_FLIP_PLACEMENT_IF_SAME;
|
||||
public static final long CFG_FLIP_PLACEMENT_SHIFTCLICK = StandardBlocks.CFG_FLIP_PLACEMENT_SHIFTCLICK;
|
||||
public static final long CFG_STRICT_CONNECTIONS = StandardBlocks.CFG_STRICT_CONNECTIONS;
|
||||
public static final long CFG_AI_PASSABLE = StandardBlocks.CFG_AI_PASSABLE;
|
||||
public static final long CFG_HARD_IE_DEPENDENT = 0x8000000000000000L;
|
||||
|
||||
public static class Normal extends StandardBlocks.BaseBlock implements IDecorBlock
|
||||
|
|
|
@ -62,7 +62,7 @@ public class EdHatchBlock extends DecorBlock.HorizontalWaterLoggable implements
|
|||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean allowsMovement(BlockState state, IBlockReader world, BlockPos pos, PathType type)
|
||||
{ return state.get(OPEN); }
|
||||
{ return !state.get(OPEN); }
|
||||
|
||||
@Override
|
||||
public boolean isLadder(BlockState state, IWorldReader world, BlockPos pos, LivingEntity entity)
|
||||
|
|
202
src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java
Normal file
202
src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java
Normal file
|
@ -0,0 +1,202 @@
|
|||
/*
|
||||
* @file EdRoofBlock.java
|
||||
* @author Stefan Wilhelm (wile)
|
||||
* @copyright (C) 2019 Stefan Wilhelm
|
||||
* @license MIT (see https://opensource.org/licenses/MIT)
|
||||
*
|
||||
* Roof blocks.
|
||||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.fluid.FluidState;
|
||||
import net.minecraft.fluid.Fluids;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.StateContainer;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.state.properties.Half;
|
||||
import net.minecraft.state.properties.StairsShape;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.util.math.shapes.VoxelShapes;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.BlockState;
|
||||
import wile.engineersdecor.libmc.blocks.StandardBlocks;
|
||||
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
||||
|
||||
|
||||
public class EdRoofBlock extends StandardBlocks.HorizontalWaterLoggable implements IDecorBlock
|
||||
{
|
||||
public static final EnumProperty<StairsShape> SHAPE = BlockStateProperties.STAIRS_SHAPE;
|
||||
public static final EnumProperty<Half> HALF = BlockStateProperties.HALF;
|
||||
private static final VoxelShape[][][] SHAPE_CACHE = makeShapes();
|
||||
|
||||
public EdRoofBlock(long config, Block.Properties properties)
|
||||
{
|
||||
super(config,
|
||||
properties.func_235838_a_((state)->1), // .notSolid() shade rendering again messed up
|
||||
Auxiliaries.getPixeledAABB(0, 0,0,16, 8, 16));
|
||||
setDefaultState(stateContainer.getBaseState().with(HORIZONTAL_FACING, Direction.NORTH).with(SHAPE, StairsShape.STRAIGHT).with(WATERLOGGED, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context)
|
||||
{ return SHAPE_CACHE[state.get(HALF).ordinal()][state.get(HORIZONTAL_FACING).getIndex()][state.get(SHAPE).ordinal()]; }
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder)
|
||||
{ super.fillStateContainer(builder); builder.add(SHAPE, HALF); }
|
||||
|
||||
@Override
|
||||
public FluidState getFluidState(BlockState state)
|
||||
{ return state.get(WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : super.getFluidState(state); }
|
||||
|
||||
@Override
|
||||
public boolean allowsMovement(BlockState state, IBlockReader world, BlockPos pos, PathType type)
|
||||
{ return false; }
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context)
|
||||
{
|
||||
BlockPos pos = context.getPos();
|
||||
Direction face = context.getFace();
|
||||
BlockState state = getDefaultState()
|
||||
.with(HORIZONTAL_FACING, context.getPlacementHorizontalFacing())
|
||||
.with(HALF, (face == Direction.DOWN) ? Half.TOP : Half.BOTTOM)
|
||||
.with(WATERLOGGED, context.getWorld().getFluidState(pos).getFluid()==Fluids.WATER);
|
||||
return state.with(SHAPE, getStairsShapeProperty(state, context.getWorld(), pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld world, BlockPos pos, BlockPos facingPos)
|
||||
{
|
||||
if(state.get(WATERLOGGED)) world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world));
|
||||
return (facing.getAxis().isHorizontal()) ? (state.with(SHAPE, getStairsShapeProperty(state, world, pos))) : (super.updatePostPlacement(state, facing, facingState, world, pos, facingPos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState rotate(BlockState state, Rotation rot)
|
||||
{ return state.with(HORIZONTAL_FACING, rot.rotate(state.get(HORIZONTAL_FACING))); }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public BlockState mirror(BlockState state, Mirror where)
|
||||
{
|
||||
if((where==Mirror.LEFT_RIGHT) && (state.get(HORIZONTAL_FACING).getAxis()==Direction.Axis.Z)) {
|
||||
switch(state.get(SHAPE)) {
|
||||
case INNER_LEFT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.INNER_RIGHT);
|
||||
case INNER_RIGHT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.INNER_LEFT);
|
||||
case OUTER_LEFT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.OUTER_RIGHT);
|
||||
case OUTER_RIGHT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.OUTER_LEFT);
|
||||
default: return state.rotate(Rotation.CLOCKWISE_180);
|
||||
}
|
||||
} else if((where==Mirror.FRONT_BACK) && (state.get(HORIZONTAL_FACING).getAxis() == Direction.Axis.X)) {
|
||||
switch(state.get(SHAPE)) {
|
||||
case INNER_LEFT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.INNER_LEFT);
|
||||
case INNER_RIGHT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.INNER_RIGHT);
|
||||
case OUTER_LEFT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.OUTER_RIGHT);
|
||||
case OUTER_RIGHT: return state.rotate(Rotation.CLOCKWISE_180).with(SHAPE, StairsShape.OUTER_LEFT);
|
||||
case STRAIGHT: return state.rotate(Rotation.CLOCKWISE_180);
|
||||
}
|
||||
}
|
||||
return super.mirror(state, where);
|
||||
}
|
||||
|
||||
private static boolean isRoofBlock(BlockState state)
|
||||
{ return (state.getBlock() instanceof EdRoofBlock); }
|
||||
|
||||
private static boolean isOtherRoofState(BlockState state, IBlockReader world, BlockPos pos, Direction facing)
|
||||
{
|
||||
BlockState st = world.getBlockState(pos.offset(facing));
|
||||
return (!isRoofBlock(st)) || (st.get(HORIZONTAL_FACING) != state.get(HORIZONTAL_FACING));
|
||||
}
|
||||
|
||||
private static VoxelShape[][][] makeShapes()
|
||||
{
|
||||
VoxelShape[][][] shapes = new VoxelShape[2][6][5];
|
||||
for(int half_index=0; half_index<Half.values().length; ++half_index) {
|
||||
for(int direction_index=0; direction_index<Direction.values().length; ++direction_index) {
|
||||
for(int stairs_shape_index=0; stairs_shape_index<StairsShape.values().length; ++stairs_shape_index) {
|
||||
shapes[half_index][direction_index][stairs_shape_index] = makeShape(half_index, direction_index, stairs_shape_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
return shapes;
|
||||
}
|
||||
|
||||
private static VoxelShape makeShape(int half_index, int direction_index, int stairs_shape_index)
|
||||
{
|
||||
AxisAlignedBB[] straight = new AxisAlignedBB[]{
|
||||
Auxiliaries.getPixeledAABB( 0, 0, 0, 16, 4, 16),
|
||||
Auxiliaries.getPixeledAABB( 4, 4, 0, 16, 8, 16),
|
||||
Auxiliaries.getPixeledAABB( 8, 8, 0, 16, 12, 16),
|
||||
Auxiliaries.getPixeledAABB(12, 12, 0, 16, 16, 16)
|
||||
};
|
||||
AxisAlignedBB[] pyramid = new AxisAlignedBB[]{
|
||||
Auxiliaries.getPixeledAABB( 0, 0, 0, 16, 4, 16),
|
||||
Auxiliaries.getPixeledAABB( 4, 4, 4, 16, 8, 16),
|
||||
Auxiliaries.getPixeledAABB( 8, 8, 8, 16, 12, 16),
|
||||
Auxiliaries.getPixeledAABB(12, 12, 12, 16, 16, 16)
|
||||
};
|
||||
final Half half = Half.values()[half_index];
|
||||
if(half==Half.TOP) {
|
||||
straight = Auxiliaries.getMirroredAABB(straight, Axis.Y);
|
||||
pyramid = Auxiliaries.getMirroredAABB(pyramid, Axis.Y);
|
||||
}
|
||||
Direction direction = Direction.byIndex(direction_index);
|
||||
if((direction==Direction.UP) || (direction==Direction.DOWN)) return VoxelShapes.fullCube();
|
||||
direction_index = (direction.getHorizontalIndex()+1) & 0x03; // ref NORTH -> EAST for stairs compliancy.
|
||||
final StairsShape stairs = StairsShape.values()[stairs_shape_index];
|
||||
switch(stairs) {
|
||||
case STRAIGHT:
|
||||
return Auxiliaries.getUnionShape(Auxiliaries.getYRotatedAABB(straight, direction_index));
|
||||
case OUTER_LEFT:
|
||||
return Auxiliaries.getUnionShape(Auxiliaries.getYRotatedAABB(pyramid, direction_index-1));
|
||||
case OUTER_RIGHT:
|
||||
return Auxiliaries.getUnionShape(Auxiliaries.getYRotatedAABB(pyramid, direction_index));
|
||||
case INNER_LEFT:
|
||||
return Auxiliaries.getUnionShape(
|
||||
Auxiliaries.getYRotatedAABB(straight, direction_index),
|
||||
Auxiliaries.getYRotatedAABB(straight, direction_index-1)
|
||||
);
|
||||
case INNER_RIGHT:
|
||||
return Auxiliaries.getUnionShape(
|
||||
Auxiliaries.getYRotatedAABB(straight, direction_index),
|
||||
Auxiliaries.getYRotatedAABB(straight, direction_index+1)
|
||||
);
|
||||
default:
|
||||
return VoxelShapes.fullCube();
|
||||
}
|
||||
}
|
||||
|
||||
private static StairsShape getStairsShapeProperty(BlockState state, IBlockReader world, BlockPos pos)
|
||||
{
|
||||
Direction direction = state.get(HORIZONTAL_FACING);
|
||||
{
|
||||
BlockState ns = world.getBlockState(pos.offset(direction));
|
||||
if(isRoofBlock(ns) && (state.get(HALF) == ns.get(HALF))) {
|
||||
Direction nf = ns.get(HORIZONTAL_FACING);
|
||||
if(nf.getAxis() != state.get(HORIZONTAL_FACING).getAxis() && isOtherRoofState(state, world, pos, nf.getOpposite())) {
|
||||
return (nf == direction.rotateYCCW()) ? StairsShape.OUTER_LEFT : StairsShape.OUTER_RIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
BlockState ns = world.getBlockState(pos.offset(direction.getOpposite()));
|
||||
if(isRoofBlock(ns) && (state.get(HALF) == ns.get(HALF))) {
|
||||
Direction nf = ns.get(HORIZONTAL_FACING);
|
||||
if(nf.getAxis() != state.get(HORIZONTAL_FACING).getAxis() && isOtherRoofState(state, world, pos, nf)) {
|
||||
return (nf == direction.rotateYCCW()) ? StairsShape.INNER_LEFT : StairsShape.INNER_RIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
return StairsShape.STRAIGHT;
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@
|
|||
package wile.engineersdecor.libmc.blocks;
|
||||
|
||||
import net.minecraft.entity.EntitySpawnPlacementRegistry;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.entity.EntityType;
|
||||
|
@ -66,6 +67,7 @@ public class StandardBlocks
|
|||
public static final long CFG_FLIP_PLACEMENT_IF_SAME = 0x0000000000000100L; // placement direction flipped if an instance of the same class was clicked
|
||||
public static final long CFG_FLIP_PLACEMENT_SHIFTCLICK = 0x0000000000000200L; // placement direction flipped if player is sneaking
|
||||
public static final long CFG_STRICT_CONNECTIONS = 0x0000000000000400L; // blocks do not connect to similar blocks around (implementation details may vary a bit)
|
||||
public static final long CFG_AI_PASSABLE = 0x0000000000000800L; // does not block movement path for AI, needed for non-opaque blocks with collision shapes not thin at the bottom or one side.
|
||||
|
||||
public interface IStandardBlock
|
||||
{
|
||||
|
@ -94,7 +96,7 @@ public class StandardBlocks
|
|||
{
|
||||
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
|
||||
public final long config;
|
||||
public final VoxelShape vshape;
|
||||
private final VoxelShape vshape;
|
||||
|
||||
public BaseBlock(long conf, Block.Properties properties)
|
||||
{ this(conf, properties, Auxiliaries.getPixeledAABB(0, 0, 0, 16, 16,16 )); }
|
||||
|
@ -134,7 +136,12 @@ public class StandardBlocks
|
|||
|
||||
@Override
|
||||
public RenderTypeHint getRenderTypeHint()
|
||||
{ return ((config & CFG_CUTOUT)!=0) ? RenderTypeHint.CUTOUT : RenderTypeHint.SOLID; }
|
||||
{
|
||||
if((config & CFG_CUTOUT)!=0) return RenderTypeHint.CUTOUT;
|
||||
if((config & CFG_MIPPED)!=0) return RenderTypeHint.CUTOUT_MIPPED;
|
||||
if((config & CFG_TRANSLUCENT)!=0) return RenderTypeHint.TRANSLUCENT;
|
||||
return RenderTypeHint.SOLID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -146,6 +153,11 @@ public class StandardBlocks
|
|||
public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext selectionContext)
|
||||
{ return vshape; }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean allowsMovement(BlockState state, IBlockReader world, BlockPos pos, PathType type)
|
||||
{ return ((config & CFG_AI_PASSABLE)==0) ? false : super.allowsMovement(state, world, pos, type); }
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
package wile.engineersdecor.libmc.blocks;
|
||||
|
||||
import net.minecraft.entity.EntitySpawnPlacementRegistry;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import net.minecraft.state.BooleanProperty;
|
||||
import net.minecraft.state.EnumProperty;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.client.util.InputMappings;
|
|||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.SharedConstants;
|
||||
import net.minecraft.util.math.shapes.IBooleanFunction;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
|
@ -262,15 +263,47 @@ public class Auxiliaries
|
|||
|
||||
public static final AxisAlignedBB[] getRotatedAABB(AxisAlignedBB[] bbs, Direction new_facing, boolean horizontal_rotation)
|
||||
{
|
||||
AxisAlignedBB[] transformed = new AxisAlignedBB[bbs.length];
|
||||
final AxisAlignedBB[] transformed = new AxisAlignedBB[bbs.length];
|
||||
for(int i=0; i<bbs.length; ++i) transformed[i] = getRotatedAABB(bbs[i], new_facing, horizontal_rotation);
|
||||
return transformed;
|
||||
}
|
||||
|
||||
public static final VoxelShape getUnionShape(AxisAlignedBB[] aabbs)
|
||||
public static final AxisAlignedBB getYRotatedAABB(AxisAlignedBB bb, int clockwise_90deg_steps)
|
||||
{
|
||||
final Direction direction_map[] = new Direction[]{Direction.NORTH,Direction.EAST,Direction.SOUTH,Direction.WEST};
|
||||
return getRotatedAABB(bb, direction_map[(clockwise_90deg_steps+4096) & 0x03], true);
|
||||
}
|
||||
|
||||
public static final AxisAlignedBB[] getYRotatedAABB(AxisAlignedBB[] bbs, int clockwise_90deg_steps)
|
||||
{
|
||||
final AxisAlignedBB[] transformed = new AxisAlignedBB[bbs.length];
|
||||
for(int i=0; i<bbs.length; ++i) transformed[i] = getYRotatedAABB(bbs[i], clockwise_90deg_steps);
|
||||
return transformed;
|
||||
}
|
||||
|
||||
public static final AxisAlignedBB getMirroredAABB(AxisAlignedBB bb, Axis axis)
|
||||
{
|
||||
switch(axis) {
|
||||
case X: return new AxisAlignedBB(1-bb.maxX, bb.minY, bb.minZ, 1-bb.minX, bb.maxY, bb.maxZ);
|
||||
case Y: return new AxisAlignedBB(bb.minX, 1-bb.maxY, bb.minZ, bb.maxX, 1-bb.minY, bb.maxZ);
|
||||
case Z: return new AxisAlignedBB(bb.minX, bb.minY, 1-bb.maxZ, bb.maxX, bb.maxY, 1-bb.minZ);
|
||||
default: return bb;
|
||||
}
|
||||
}
|
||||
|
||||
public static final AxisAlignedBB[] getMirroredAABB(AxisAlignedBB[] bbs, Axis axis)
|
||||
{
|
||||
final AxisAlignedBB[] transformed = new AxisAlignedBB[bbs.length];
|
||||
for(int i=0; i<bbs.length; ++i) transformed[i] = getMirroredAABB(bbs[i], axis);
|
||||
return transformed;
|
||||
}
|
||||
|
||||
public static final VoxelShape getUnionShape(AxisAlignedBB[] ... aabb_list)
|
||||
{
|
||||
VoxelShape shape = VoxelShapes.empty();
|
||||
for(AxisAlignedBB aabb: aabbs) shape = VoxelShapes.combine(shape, VoxelShapes.create(aabb), IBooleanFunction.OR);
|
||||
for(AxisAlignedBB[] aabbs:aabb_list) {
|
||||
for(AxisAlignedBB aabb: aabbs) shape = VoxelShapes.combine(shape, VoxelShapes.create(aabb), IBooleanFunction.OR);
|
||||
}
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,6 @@ public class OptionalRecipeCondition implements ICondition
|
|||
item_optouts = item_optout_provider;
|
||||
}
|
||||
|
||||
|
||||
public OptionalRecipeCondition(ResourceLocation result, List<ResourceLocation> required, List<ResourceLocation> missing, List<ResourceLocation> required_tags, List<ResourceLocation> missing_tags, boolean isexperimental, boolean result_is_tag)
|
||||
{
|
||||
all_required = required;
|
||||
|
|
|
@ -11,7 +11,7 @@ displayName="Engineer's Decor"
|
|||
description="Adds cosmetic blocks for the engineer's workshop, factory and home."
|
||||
authors="wilechaote"
|
||||
credits="BluSunrize, Damien Hazard, malte0811, et al., the Forge Smiths, the Modders of the World."
|
||||
updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/develop/1.16/meta/update.json"
|
||||
updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/1.16/meta/update.json"
|
||||
displayURL="https://github.com/stfwi/engineers-decor/"
|
||||
logoFile="logo.png"
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=east,half=bottom,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model" },
|
||||
"facing=west,half=bottom,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "y": 180, "uvlock": true },
|
||||
"facing=south,half=bottom,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "y": 90, "uvlock": true },
|
||||
"facing=north,half=bottom,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "y": 270, "uvlock": true },
|
||||
"facing=east,half=bottom,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer" },
|
||||
"facing=west,half=bottom,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 180, "uvlock": true },
|
||||
"facing=south,half=bottom,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 90, "uvlock": true },
|
||||
"facing=north,half=bottom,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 270, "uvlock": true },
|
||||
"facing=east,half=bottom,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 270, "uvlock": true },
|
||||
"facing=west,half=bottom,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 90, "uvlock": true },
|
||||
"facing=south,half=bottom,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer" },
|
||||
"facing=north,half=bottom,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "y": 180, "uvlock": true },
|
||||
"facing=east,half=bottom,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner" },
|
||||
"facing=west,half=bottom,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 180, "uvlock": true },
|
||||
"facing=south,half=bottom,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 90, "uvlock": true },
|
||||
"facing=north,half=bottom,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 270, "uvlock": true },
|
||||
"facing=east,half=bottom,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 270, "uvlock": true },
|
||||
"facing=west,half=bottom,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 90, "uvlock": true },
|
||||
"facing=south,half=bottom,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner" },
|
||||
"facing=north,half=bottom,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "y": 180, "uvlock": true },
|
||||
"facing=east,half=top,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "x": 180, "uvlock": true },
|
||||
"facing=west,half=top,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "x": 180, "y": 180, "uvlock": true },
|
||||
"facing=south,half=top,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "x": 180, "y": 90, "uvlock": true },
|
||||
"facing=north,half=top,shape=straight": { "model": "engineersdecor:block/roof/dark_shingle_roof_model", "x": 180, "y": 270, "uvlock": true },
|
||||
"facing=east,half=top,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 90, "uvlock": true },
|
||||
"facing=west,half=top,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 270, "uvlock": true },
|
||||
"facing=south,half=top,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 180, "uvlock": true },
|
||||
"facing=north,half=top,shape=outer_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "uvlock": true },
|
||||
"facing=east,half=top,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "uvlock": true },
|
||||
"facing=west,half=top,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 180, "uvlock": true },
|
||||
"facing=south,half=top,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 90, "uvlock": true },
|
||||
"facing=north,half=top,shape=outer_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_outer", "x": 180, "y": 270, "uvlock": true },
|
||||
"facing=east,half=top,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 90, "uvlock": true },
|
||||
"facing=west,half=top,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 270, "uvlock": true },
|
||||
"facing=south,half=top,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 180, "uvlock": true },
|
||||
"facing=north,half=top,shape=inner_right": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "uvlock": true },
|
||||
"facing=east,half=top,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "uvlock": true },
|
||||
"facing=west,half=top,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 180, "uvlock": true },
|
||||
"facing=south,half=top,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 90, "uvlock": true },
|
||||
"facing=north,half=top,shape=inner_left": { "model": "engineersdecor:block/roof/dark_shingle_roof_model_inner", "x": 180, "y": 270, "uvlock": true }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": [ { "model": "engineersdecor:block/roof/dark_shingle_roof_block_model" } ]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"variants": {
|
||||
"tvariant=0,type=bottom": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s0v0_model" },
|
||||
"tvariant=1,type=bottom": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s0v0_model" },
|
||||
"tvariant=2,type=bottom": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s0v0_model" },
|
||||
"tvariant=3,type=bottom": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s0v0_model" },
|
||||
"tvariant=0,type=top": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s1v0_model" },
|
||||
"tvariant=1,type=top": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s1v0_model" },
|
||||
"tvariant=2,type=top": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s1v0_model" },
|
||||
"tvariant=3,type=top": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s1v0_model" },
|
||||
"tvariant=0,type=double": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s2v0_model" },
|
||||
"tvariant=1,type=double": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s2v0_model" },
|
||||
"tvariant=2,type=double": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s2v0_model" },
|
||||
"tvariant=3,type=double": { "model": "engineersdecor:block/slab/specific/dark_shingle_roof_slab_s2v0_model" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"variants": {
|
||||
"parts=0": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s0_model" },
|
||||
"parts=1": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s1_model" },
|
||||
"parts=2": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s2_model" },
|
||||
"parts=3": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s3_model" },
|
||||
"parts=4": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s4_model" },
|
||||
"parts=5": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s5_model" },
|
||||
"parts=6": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s6_model" },
|
||||
"parts=7": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s7_model" },
|
||||
"parts=8": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s8_model" },
|
||||
"parts=9": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_s9_model" },
|
||||
"parts=10": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_sa_model" },
|
||||
"parts=11": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_sb_model" },
|
||||
"parts=12": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_sc_model" },
|
||||
"parts=13": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_sd_model" },
|
||||
"parts=14": { "model": "engineersdecor:block/slab/specific/halfslab_dark_shingle_roof_se_model" }
|
||||
}
|
||||
}
|
|
@ -67,6 +67,10 @@
|
|||
"block.engineersdecor.clinker_brick_wall.help": "§6Simplistic Clinker Brick Wall.",
|
||||
"block.engineersdecor.concrete_wall": "Concrete Wall",
|
||||
"block.engineersdecor.concrete_wall.help": "§6Wall made of solid concrete.",
|
||||
"block.engineersdecor.dark_shingle_roof": "Dark Ceramic Shingle Roof",
|
||||
"block.engineersdecor.dark_shingle_roof_block": "Dark Ceramic Shingle Roof Block",
|
||||
"block.engineersdecor.dark_shingle_roof_slab": "Dark Ceramic Shingle Roof Slab",
|
||||
"block.engineersdecor.dark_shingle_roof_slabslice": "Dark Ceramic Shingle Roof Slab Slice",
|
||||
"block.engineersdecor.dense_grit_dirt_block": "Dense Grit Dirt",
|
||||
"block.engineersdecor.dense_grit_dirt_block.help": "§6A compressed dirt-like soil, plain texture with some cracks.§r Known from often used paths or trampled yard grounds. Dirt and coarse dirt can be mixed in for accentuation. Position dependent texture variations. Prevents grass spreading.",
|
||||
"block.engineersdecor.dense_grit_sand_block": "Dense Grit Sand",
|
||||
|
|
|
@ -67,6 +67,10 @@
|
|||
"block.engineersdecor.clinker_brick_wall.help": "§6Обыкновенная клинкерная кирпичная стена.",
|
||||
"block.engineersdecor.concrete_wall": "Бетонная стена",
|
||||
"block.engineersdecor.concrete_wall.help": "§6Стена из твёрдого бетона.",
|
||||
"block.engineersdecor.dark_shingle_roof": "Dark Ceramic Shingle Roof",
|
||||
"block.engineersdecor.dark_shingle_roof_block": "Dark Ceramic Shingle Roof Block",
|
||||
"block.engineersdecor.dark_shingle_roof_slab": "Dark Ceramic Shingle Roof Slab",
|
||||
"block.engineersdecor.dark_shingle_roof_slabslice": "Dark Ceramic Shingle Roof Slab Slice",
|
||||
"block.engineersdecor.dense_grit_dirt_block": "Dense Grit Dirt",
|
||||
"block.engineersdecor.dense_grit_dirt_block.help": "§6A compressed dirt-like soil, plain texture with some cracks.§r Known from often used paths or trampled yard grounds. Dirt and coarse dirt can be mixed in for accentuation. Position dependent texture variations. Prevents grass spreading.",
|
||||
"block.engineersdecor.dense_grit_sand_block": "Dense Grit Sand",
|
||||
|
|
|
@ -67,10 +67,14 @@
|
|||
"block.engineersdecor.clinker_brick_wall.help": "§6简单的过烧砖墙。",
|
||||
"block.engineersdecor.concrete_wall": "混凝土墙",
|
||||
"block.engineersdecor.concrete_wall.help": "§6用坚固混凝土制造的墙。",
|
||||
"block.engineersdecor.dense_grit_dirt_block": "Dense Grit Dirt",
|
||||
"block.engineersdecor.dense_grit_dirt_block.help": "§6A compressed dirt-like soil, plain texture with some cracks.§r Known from often used paths or trampled yard grounds. Dirt and coarse dirt can be mixed in for accentuation. Position dependent texture variations. Prevents grass spreading.",
|
||||
"block.engineersdecor.dense_grit_sand_block": "Dense Grit Sand",
|
||||
"block.engineersdecor.dense_grit_sand_block.help": "§6A compressed sandy soil mixed with stone grid, as known from machine and storage yards.§r Flowers don't really grow on that. Position dependent texture variations.",
|
||||
"block.engineersdecor.dark_shingle_roof": "Dark Ceramic Shingle Roof",
|
||||
"block.engineersdecor.dark_shingle_roof_block": "Dark Ceramic Shingle Roof Block",
|
||||
"block.engineersdecor.dark_shingle_roof_slab": "Dark Ceramic Shingle Roof Slab",
|
||||
"block.engineersdecor.dark_shingle_roof_slabslice": "Dark Ceramic Shingle Roof Slab Slice",
|
||||
"block.engineersdecor.dense_grit_dirt_block": "压制砾土",
|
||||
"block.engineersdecor.dense_grit_dirt_block.help": "§6一种压制而成的泥土,与砂土非常类似,其光滑的表面上带有些许裂缝。§r常见于人来人往的小径或者肆意践踏的庭院中。重点是可以混入泥土和砂土。纹理会根据位置的不同而发生变化。可以阻止草的蔓延。",
|
||||
"block.engineersdecor.dense_grit_sand_block": "压制砾砂",
|
||||
"block.engineersdecor.dense_grit_sand_block.help": "§6一种压制而成的沙土,其中混有石砾,常见于机械场和堆货场。§r其上不能种植花朵。纹理会根据位置的不同而发生变化。",
|
||||
"block.engineersdecor.factory_dropper": "工厂掉落器",
|
||||
"block.engineersdecor.factory_dropper.help": "§6适用于高级工厂自动化的掉落器。§r有十二个轮询选择的储物格。 掉落的力度、角度、一叠数量和冷却延时可在GUI调节。三个 内部比较槽带有逻辑与或逻辑或功能,可用作内部触发源。内部触发 还能和外部红石信号触发再进行逻辑与或逻辑或。触发模拟按钮仅作测试用途。 当内部触发条件满足时,预先打开卷帘门。所有符合条件的物品 会同时掉落。点击GUI的各处来了解如何运作。",
|
||||
"block.engineersdecor.factory_dropper.tooltips.direction": "Drop direction x/y (-45° to +45°)",
|
||||
|
@ -127,19 +131,19 @@
|
|||
"block.engineersdecor.halfslab_sheetmetal_steel.help": "§6可垂直堆叠的切片。§r手持切片右/左击切片堆叠的顶端或底部来添加/移除切片。",
|
||||
"block.engineersdecor.halfslab_treated_wood": "防腐木切片",
|
||||
"block.engineersdecor.halfslab_treated_wood.help": "§6可垂直堆叠的切片。§r手持切片右/左击切片堆叠的顶端或底部来添加/移除切片。",
|
||||
"block.engineersdecor.iron_bulb_light": "Iron Bulb Light",
|
||||
"block.engineersdecor.iron_bulb_light.help": "§6Small glowstone light source§r, placed on the ceiling, walls, fence posts or metal poles.",
|
||||
"block.engineersdecor.iron_ceiling_edge_light": "Ceiling Edge Light",
|
||||
"block.engineersdecor.iron_ceiling_edge_light.help": "§6Small glowstone light source§r, placed at the edge of a ceiling block.",
|
||||
"block.engineersdecor.iron_bulb_light": "铁架灯泡",
|
||||
"block.engineersdecor.iron_bulb_light.help": "§6小型萤石光源§r,可放置于天花板、墙壁、栅栏以及金属栏杆上。",
|
||||
"block.engineersdecor.iron_ceiling_edge_light": "吸顶灯",
|
||||
"block.engineersdecor.iron_ceiling_edge_light.help": "§6小型萤石光源§r,可放置于顶部方块的边缘。",
|
||||
"block.engineersdecor.iron_floor_edge_light": "嵌入地板边缘灯",
|
||||
"block.engineersdecor.iron_floor_edge_light.help": "§6小型荧石光源,置于地板方块边缘。§r\n 用于照亮电力光源难以安装的地方。",
|
||||
"block.engineersdecor.iron_hatch": "Iron Hatch",
|
||||
"block.engineersdecor.iron_hatch.help": "§6An upside down trapdoor,§r placed above mainenance shafts or ladders. Creeper-proof, functions as ladder when open.",
|
||||
"block.engineersdecor.iron_inset_light": "嵌入灯",
|
||||
"block.engineersdecor.iron_inset_light.help": "§6小型荧石光源,能嵌入地板、天花板或墙里。§r\n 用于照亮电力光源难以安装的地方。 亮度与火把一样。",
|
||||
"block.engineersdecor.labeled_crate": "Labeled Crate",
|
||||
"block.engineersdecor.labeled_crate.help": "§6A storage crate with 9x6 slots and a built-in item frame at the front.§r\nPlace an item into the frame slot at the bottom right of the GUI to define the shown label.",
|
||||
"block.engineersdecor.labeled_crate.tip": "§6Label:§r %1$s\n%2$s slots used / %3$s free\n%4$s total items stored",
|
||||
"block.engineersdecor.labeled_crate": "贴标签的板条箱",
|
||||
"block.engineersdecor.labeled_crate.help": "§6具备 9x6 大小格子的木箱,前面自带一个物品展示框。§r\n将物品放置在 GUI 右下角的框架槽内,可以定义所显示的标签。",
|
||||
"block.engineersdecor.labeled_crate.tip": "§6标签:§r %1$s\n已使用 %2$s / 剩余 %3$s \n共存储 %4$s 件物品",
|
||||
"block.engineersdecor.metal_rung_ladder": "金属蹬梯子",
|
||||
"block.engineersdecor.metal_rung_ladder.help": "§6典型的工业墙梯,由水平的金属杆蹬组成。§r往上/下看会爬得更快。",
|
||||
"block.engineersdecor.metal_rung_steps": "交错金属台阶",
|
||||
|
@ -217,10 +221,10 @@
|
|||
"block.engineersdecor.steel_floor_grating.help": "§6装饰用钢制地板盖。§r顶端对齐。掉落物会穿过。",
|
||||
"block.engineersdecor.steel_framed_window": "钢框窗",
|
||||
"block.engineersdecor.steel_framed_window.help": "§6钢框三层玻璃窗。绝缘良好。§r不像玻璃板一样连接到相邻方块。",
|
||||
"block.engineersdecor.steel_mesh_fence": "钢丝栅栏",
|
||||
"block.engineersdecor.steel_mesh_fence.help": "§6工业式栅栏。§r\n不与普通栅栏连接。",
|
||||
"block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate",
|
||||
"block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.",
|
||||
"block.engineersdecor.steel_mesh_fence": "钢制网状栅栏",
|
||||
"block.engineersdecor.steel_mesh_fence.help": "§6工业风格的栅栏。§r\n不与普通栅栏连接。",
|
||||
"block.engineersdecor.steel_mesh_fence_gate": "钢制网状栅栏门",
|
||||
"block.engineersdecor.steel_mesh_fence_gate.help": "§6工业风格的栅栏门,可以同钢丝栅栏完美搭配。§r\n放置时可以设置为单叶门或者双叶门。",
|
||||
"block.engineersdecor.steel_table": "钢桌",
|
||||
"block.engineersdecor.steel_table.help": "§6结实的四脚钢桌。",
|
||||
"block.engineersdecor.straight_pipe_valve": "输液管止回阀",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{ "parent": "block/cube_all", "textures": { "all": "engineersdecor:block/roof/dark_shingle_roof" } }
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "engineersdecor:block/roof/dark_shingle_roof",
|
||||
"s": "engineersdecor:block/roof/dark_shingle_roof"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [16, 4, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"},
|
||||
"down": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 4, 0],
|
||||
"to": [16, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"},
|
||||
"down": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8, 8, 0],
|
||||
"to": [16, 12, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12, 12, 0],
|
||||
"to": [16, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_lefthand": {
|
||||
"rotation": [75, -135, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.375, 0.375, 0.375]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [30, 135, 0],
|
||||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [0, -90, 0]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"textures": {
|
||||
"particle": "engineersdecor:block/roof/dark_shingle_roof",
|
||||
"s": "engineersdecor:block/roof/dark_shingle_roof"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [12, 0, 0],
|
||||
"to": [16, 16, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 4, 16], "texture": "#s"},
|
||||
"east": {"uv": [4, 0, 16, 16], "texture": "#s"},
|
||||
"south": {"uv": [12, 0, 16, 16], "texture": "#s"},
|
||||
"west": {"uv": [0, 0, 12, 16], "texture": "#s"},
|
||||
"up": {"uv": [12, 0, 16, 12], "texture": "#s"},
|
||||
"down": {"uv": [12, 4, 16, 16], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 12],
|
||||
"to": [16, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 16]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 16], "texture": "#s"},
|
||||
"east": {"uv": [0, 0, 4, 16], "texture": "#s"},
|
||||
"south": {"uv": [0, 0, 16, 16], "texture": "#s"},
|
||||
"west": {"uv": [12, 0, 16, 16], "texture": "#s"},
|
||||
"up": {"uv": [0, 12, 16, 16], "texture": "#s"},
|
||||
"down": {"uv": [0, 0, 16, 4], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 8],
|
||||
"to": [12, 12, 12],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 4, 16, 16], "texture": "#s"},
|
||||
"east": {"uv": [4, 4, 8, 16], "texture": "#s"},
|
||||
"south": {"uv": [0, 4, 12, 16], "texture": "#s"},
|
||||
"west": {"uv": [8, 4, 12, 16], "texture": "#s"},
|
||||
"up": {"uv": [0, 8, 12, 12], "texture": "#s"},
|
||||
"down": {"uv": [0, 4, 12, 8], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 4],
|
||||
"to": [8, 8, 8],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [8, 8, 16, 16], "texture": "#s"},
|
||||
"east": {"uv": [8, 8, 12, 16], "texture": "#s"},
|
||||
"south": {"uv": [0, 8, 8, 16], "texture": "#s"},
|
||||
"west": {"uv": [4, 8, 8, 16], "texture": "#s"},
|
||||
"up": {"uv": [0, 4, 8, 8], "texture": "#s"},
|
||||
"down": {"uv": [0, 8, 8, 12], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8, 0, 0],
|
||||
"to": [12, 12, 8],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 4, 8, 16], "texture": "#s"},
|
||||
"east": {"uv": [8, 4, 16, 16], "texture": "#s"},
|
||||
"south": {"uv": [8, 4, 12, 16], "texture": "#s"},
|
||||
"west": {"uv": [0, 4, 8, 16], "texture": "#s"},
|
||||
"up": {"uv": [8, 0, 12, 8], "texture": "#s"},
|
||||
"down": {"uv": [8, 8, 12, 16], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 0, 0],
|
||||
"to": [8, 8, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [4, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [8, 8, 12, 16], "texture": "#s"},
|
||||
"east": {"uv": [12, 8, 16, 16], "texture": "#s"},
|
||||
"south": {"uv": [4, 8, 8, 16], "texture": "#s"},
|
||||
"west": {"uv": [0, 8, 4, 16], "texture": "#s"},
|
||||
"up": {"uv": [4, 0, 8, 4], "texture": "#s"},
|
||||
"down": {"uv": [4, 12, 8, 16], "texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [4, 4, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 12, 16, 16], "texture": "#s"},
|
||||
"east": {"uv": [12, 12, 16, 16], "texture": "#s"},
|
||||
"south": {"uv": [0, 12, 4, 16], "texture": "#s"},
|
||||
"west": {"uv": [0, 12, 4, 16], "texture": "#s"},
|
||||
"up": {"uv": [0, 0, 4, 4], "texture": "#s"},
|
||||
"down": {"uv": [0, 12, 4, 16], "texture": "#s"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"textures": {
|
||||
"particle": "engineersdecor:block/roof/dark_shingle_roof",
|
||||
"s": "engineersdecor:block/roof/dark_shingle_roof"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [16, 4, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"},
|
||||
"down": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 4, 4],
|
||||
"to": [16, 8, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"},
|
||||
"down": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8, 8, 8],
|
||||
"to": [16, 12, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12, 12, 12],
|
||||
"to": [16, 16, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]},
|
||||
"faces": {
|
||||
"north": {"texture": "#s"},
|
||||
"east": {"texture": "#s"},
|
||||
"south": {"texture": "#s"},
|
||||
"west": {"texture": "#s"},
|
||||
"up": {"texture": "#s"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/slab_s0_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/slab_s1_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/slab_s2_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{ "parent": "engineersdecor:block/roof/dark_shingle_roof_model" }
|
|
@ -0,0 +1 @@
|
|||
{ "parent": "engineersdecor:block/roof/dark_shingle_roof_block_model" }
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/slab_inventory_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
|
@ -0,0 +1 @@
|
|||
{"parent":"engineersdecor:block/slab/generic/halfslab_inventory_model","textures":{"all":"engineersdecor:block/roof/dark_shingle_roof"}}
|
Binary file not shown.
After Width: | Height: | Size: 412 B |
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"name": "dark_shingle_roof_dlt",
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:copy_name",
|
||||
"source": "block_entity"
|
||||
}
|
||||
],
|
||||
"name": "engineersdecor:dark_shingle_roof"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"name": "dark_shingle_roof_block_dlt",
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:copy_name",
|
||||
"source": "block_entity"
|
||||
}
|
||||
],
|
||||
"name": "engineersdecor:dark_shingle_roof_block"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -29,8 +29,7 @@
|
|||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:gas_concrete",
|
||||
"missing": ["immersiveengineering:concrete", "#forge:sand"]
|
||||
"result": "engineersdecor:gas_concrete"
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
|
|
|
@ -51,6 +51,31 @@
|
|||
"count": 8
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:iron_inset_light"
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
" ",
|
||||
"GGG",
|
||||
"PLP"
|
||||
],
|
||||
"key": {
|
||||
"P": { "item": "minecraft:iron_ingot" },
|
||||
"L": { "item" : "minecraft:glowstone" },
|
||||
"G": { "item" : "minecraft:glass_pane" }
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:iron_inset_light",
|
||||
"count": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof_slabslice",
|
||||
"required": ["engineersdecor:dark_shingle_roof_slab"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"SS",
|
||||
"SS"
|
||||
],
|
||||
"key": {
|
||||
"S": {
|
||||
"item": "engineersdecor:dark_shingle_roof_slab"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof_slabslice",
|
||||
"count": 16
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof_slab",
|
||||
"required": ["engineersdecor:dark_shingle_roof_slabslice"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"SS",
|
||||
"SS"
|
||||
],
|
||||
"key": {
|
||||
"S": {
|
||||
"item": "engineersdecor:dark_shingle_roof_slabslice"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof_slab",
|
||||
"count": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof"
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"B ",
|
||||
"BB ",
|
||||
"DBB"
|
||||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"item": "minecraft:brick"
|
||||
},
|
||||
"D": {
|
||||
"item": "minecraft:black_dye"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof",
|
||||
"count": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof_block",
|
||||
"required": ["engineersdecor:dark_shingle_roof"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"RR",
|
||||
"RR"
|
||||
],
|
||||
"key": {
|
||||
"R": {
|
||||
"item": "engineersdecor:dark_shingle_roof"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof_block",
|
||||
"count": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof",
|
||||
"required": ["engineersdecor:dark_shingle_roof_block"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"B ",
|
||||
"BB ",
|
||||
"BBB"
|
||||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"item": "engineersdecor:dark_shingle_roof_block"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof",
|
||||
"count": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof_slab",
|
||||
"required": ["engineersdecor:dark_shingle_roof_block"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"BBB"
|
||||
],
|
||||
"key": {
|
||||
"B": {
|
||||
"item": "engineersdecor:dark_shingle_roof_block"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof_slab",
|
||||
"count": 6
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:dark_shingle_roof_block",
|
||||
"required": ["engineersdecor:dark_shingle_roof_slab"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"S",
|
||||
"S"
|
||||
],
|
||||
"key": {
|
||||
"S": { "item": "engineersdecor:dark_shingle_roof_slab" }
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:dark_shingle_roof_block",
|
||||
"count": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:bricks",
|
||||
"minecraft:nether_bricks"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:dirt",
|
||||
"minecraft:coarse_dirt"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:glowstone",
|
||||
"minecraft:sea_lantern"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:black_concrete_powder",
|
||||
"minecraft:blue_concrete_powder",
|
||||
"minecraft:brown_concrete_powder",
|
||||
"minecraft:cyan_concrete_powder",
|
||||
"minecraft:gray_concrete_powder",
|
||||
"minecraft:green_concrete_powder",
|
||||
"minecraft:light_blue_concrete_powder",
|
||||
"minecraft:light_gray_concrete_powder",
|
||||
"minecraft:lime_concrete_powder",
|
||||
"minecraft:magenta_concrete_powder",
|
||||
"minecraft:orange_concrete_powder",
|
||||
"minecraft:pink_concrete_powder",
|
||||
"minecraft:purple_concrete_powder",
|
||||
"minecraft:red_concrete_powder",
|
||||
"minecraft:white_concrete_powder",
|
||||
"minecraft:yellow_concrete_powder",
|
||||
"minecraft:black_concrete",
|
||||
"minecraft:blue_concrete",
|
||||
"minecraft:brown_concrete",
|
||||
"minecraft:cyan_concrete",
|
||||
"minecraft:gray_concrete",
|
||||
"minecraft:green_concrete",
|
||||
"minecraft:light_blue_concrete",
|
||||
"minecraft:light_gray_concrete",
|
||||
"minecraft:lime_concrete",
|
||||
"minecraft:magenta_concrete",
|
||||
"minecraft:orange_concrete",
|
||||
"minecraft:pink_concrete",
|
||||
"minecraft:purple_concrete",
|
||||
"minecraft:red_concrete",
|
||||
"minecraft:white_concrete",
|
||||
"minecraft:yellow_concrete"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:glass",
|
||||
"minecraft:black_stained_glass",
|
||||
"minecraft:blue_stained_glass",
|
||||
"minecraft:brown_stained_glass",
|
||||
"minecraft:cyan_stained_glass",
|
||||
"minecraft:gray_stained_glass",
|
||||
"minecraft:green_stained_glass",
|
||||
"minecraft:light_blue_stained_glass",
|
||||
"minecraft:light_gray_stained_glass",
|
||||
"minecraft:lime_stained_glass",
|
||||
"minecraft:magenta_stained_glass",
|
||||
"minecraft:orange_stained_glass",
|
||||
"minecraft:pink_stained_glass",
|
||||
"minecraft:purple_stained_glass",
|
||||
"minecraft:red_stained_glass",
|
||||
"minecraft:white_stained_glass",
|
||||
"minecraft:yellow_stained_glass"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:glass_pane",
|
||||
"minecraft:black_stained_glass_pane",
|
||||
"minecraft:blue_stained_glass_pane",
|
||||
"minecraft:brown_stained_glass_pane",
|
||||
"minecraft:cyan_stained_glass_pane",
|
||||
"minecraft:gray_stained_glass_pane",
|
||||
"minecraft:green_stained_glass_pane",
|
||||
"minecraft:light_blue_stained_glass_pane",
|
||||
"minecraft:light_gray_stained_glass_pane",
|
||||
"minecraft:lime_stained_glass_pane",
|
||||
"minecraft:magenta_stained_glass_pane",
|
||||
"minecraft:orange_stained_glass_pane",
|
||||
"minecraft:pink_stained_glass_pane",
|
||||
"minecraft:purple_stained_glass_pane",
|
||||
"minecraft:red_stained_glass_pane",
|
||||
"minecraft:white_stained_glass_pane",
|
||||
"minecraft:yellow_stained_glass_pane"
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue