Fixed furnace init issue. Prepared slabs with texture variations for testing.

This commit is contained in:
stfwi 2019-06-23 16:04:55 +02:00
parent 0a310c4261
commit 792bdce3e1
35 changed files with 586 additions and 92 deletions

View file

@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
version_minecraft=1.12.2
version_forge=14.23.5.2768
version_jei=4.10.0.198
version_engineersdecor=1.0.9-b1
version_engineersdecor=1.0.9-b2

View file

@ -10,6 +10,12 @@ Mod sources for Minecraft version 1.12.2.
----
## Version history
~ v1.0.9-b2 [A] Added slabs for Clinker Brick, Slag Brick, Rebar Concrete,
and Stained Clinker. Texture variations like the base blocks.
Allow fast pick-up (see tooltip help or config).
[F] Fixed lab/electrical furnace initialisation issue (first item
inserted was smelted directly).
- v1.0.9-b1 [U] Lang file ru_ru updated (PR#31, yaroslav4167).
[M] Block hardness adaptions (issue #32).

View file

@ -465,6 +465,7 @@ public class BlockDecorFurnace extends BlockDecorDirected
private int proc_time_needed_;
private int boost_energy_; // small, not saved in nbt.
private boolean heater_inserted_ = false;
protected ItemStack current_smelting_input_stack_ = ItemStack.EMPTY;
protected NonNullList<ItemStack> stacks_;
public static void on_config(int speed_percent, int fuel_efficiency_percent, int boost_energy_per_tick)
@ -482,10 +483,11 @@ public class BlockDecorFurnace extends BlockDecorDirected
protected void reset()
{
stacks_ = NonNullList.<ItemStack>withSize(NUM_OF_SLOTS, ItemStack.EMPTY);
current_smelting_input_stack_ = ItemStack.EMPTY;
proc_time_elapsed_ = 0;
proc_time_needed_ = 0;
burntime_left_ = 0;
fuel_burntime_ = 0;
fuel_burntime_ = -1;
fifo_timer_ = 0;
tick_timer_ = 0;
}
@ -496,16 +498,17 @@ public class BlockDecorFurnace extends BlockDecorDirected
ItemStackHelper.loadAllItems(compound, this.stacks_);
while(this.stacks_.size() < NUM_OF_SLOTS) this.stacks_.add(ItemStack.EMPTY);
burntime_left_ = compound.getInteger("BurnTime");
proc_time_elapsed_ = compound.getInteger("CookTime");
proc_time_needed_ = compound.getInteger("CookTimeTotal");
fuel_burntime_ = getItemBurnTime(stacks_.get(SMELTING_FUEL_SLOT_NO));
proc_time_needed_ = MathHelper.clamp(compound.getInteger("CookTimeTotal"), 10, 65535);
proc_time_elapsed_ = MathHelper.clamp(compound.getInteger("CookTime"), 0, proc_time_needed_);
fuel_burntime_ = compound.getInteger("FuelBurnTime");
}
protected void writenbt(NBTTagCompound compound)
{
compound.setInteger("BurnTime", MathHelper.clamp(burntime_left_,0 , MAX_BURNTIME));
compound.setInteger("CookTime", MathHelper.clamp(proc_time_elapsed_, 0, MAX_BURNTIME));
compound.setInteger("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 0, MAX_BURNTIME));
compound.setInteger("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 10, MAX_BURNTIME));
compound.setInteger("FuelBurnTime", MathHelper.clamp(fuel_burntime_, 0, MAX_BURNTIME));
ItemStackHelper.saveAllItems(compound, stacks_);
}
@ -688,8 +691,9 @@ public class BlockDecorFurnace extends BlockDecorDirected
protected boolean canSmelt()
{
if(stacks_.get(SMELTING_INPUT_SLOT_NO).isEmpty()) return false;
final ItemStack recipe_result_items = BRecipes.instance().getSmeltingResult(stacks_.get(SMELTING_INPUT_SLOT_NO));
final ItemStack in_stack = stacks_.get(SMELTING_INPUT_SLOT_NO);
if(in_stack.isEmpty()) return false;
final ItemStack recipe_result_items = BRecipes.instance().getSmeltingResult(in_stack);
if(recipe_result_items.isEmpty()) return false;
final ItemStack result_stack = stacks_.get(SMELTING_OUTPUT_SLOT_NO);
if(result_stack.isEmpty()) return true;
@ -807,6 +811,7 @@ public class BlockDecorFurnace extends BlockDecorDirected
tick_timer_ = TICK_INTERVAL;
final boolean was_burning = isBurning();
if(was_burning) burntime_left_ -= TICK_INTERVAL;
if(fuel_burntime_ < 0) fuel_burntime_ = getItemBurnTime(stacks_.get(SMELTING_FUEL_SLOT_NO));
if(burntime_left_ < 0) burntime_left_ = 0;
if(world.isRemote) return;
boolean dirty = false;
@ -823,9 +828,16 @@ public class BlockDecorFurnace extends BlockDecorDirected
|| (stacks_.get(AUX_0_SLOT_NO).getItem()==ExtItems.IE_EXTERNAL_HEATER)
|| (stacks_.get(AUX_1_SLOT_NO).getItem()==ExtItems.IE_EXTERNAL_HEATER);
}
ItemStack fuel = stacks_.get(SMELTING_FUEL_SLOT_NO);
if(isBurning() || (!fuel.isEmpty()) && (!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty())) {
if(!isBurning() && canSmelt()) {
final ItemStack fuel = stacks_.get(SMELTING_FUEL_SLOT_NO);
final ItemStack last_inp_stack = current_smelting_input_stack_;
current_smelting_input_stack_ = stacks_.get(SMELTING_INPUT_SLOT_NO);
if(isBurning() || (!fuel.isEmpty()) && (!current_smelting_input_stack_.isEmpty())) {
if(!current_smelting_input_stack_.isItemEqual(last_inp_stack)) {
proc_time_elapsed_ = 0;
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
}
final boolean can_smelt = canSmelt();
if(can_smelt && (burntime_left_ <= 0)) { // Refuel
burntime_left_ = (int)MathHelper.clamp((proc_fuel_efficiency_ * getItemBurnTime(fuel)), 0, MAX_BURNTIME);
fuel_burntime_ = (burntime_left_ * proc_speed_interval_) / VANILLA_FURNACE_SPEED_INTERVAL;
if(isBurning()) {
@ -837,17 +849,17 @@ public class BlockDecorFurnace extends BlockDecorDirected
}
}
}
if(isBurning() && canSmelt()) {
if((burntime_left_ > 0) && can_smelt) { // Smelting process
proc_time_elapsed_ += TICK_INTERVAL;
if(heater_inserted_ && (boost_energy_ >= boost_energy_consumption)) { boost_energy_ = 0; proc_time_elapsed_ += TICK_INTERVAL; }
if(proc_time_elapsed_ >= proc_time_needed_) {
proc_time_elapsed_ = 0;
proc_time_needed_ = getCookTime(stacks_.get(SMELTING_INPUT_SLOT_NO));
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
smeltItem();
dirty = true;
}
} else {
proc_time_elapsed_ = 0;
proc_time_elapsed_ = MathHelper.clamp(proc_time_elapsed_-2, 0, proc_time_needed_);
}
} else if(!isBurning() && (proc_time_elapsed_ > 0)) {
proc_time_elapsed_ = MathHelper.clamp(proc_time_elapsed_-2, 0, proc_time_needed_);

View file

@ -682,9 +682,15 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
if(transferItems(FIFO_INPUT_0_SLOT_NO, SMELTING_INPUT_SLOT_NO, 64)) dirty = true;
if(transferItems(FIFO_INPUT_1_SLOT_NO, FIFO_INPUT_0_SLOT_NO, 64)) { dirty = true; } else { shift_in = true; }
}
if((!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty()) && (energy_stored_ >= energy_consumption_)) {
final ItemStack last_inp_stack = current_smelting_input_stack_;
current_smelting_input_stack_ = stacks_.get(SMELTING_INPUT_SLOT_NO);
if((!current_smelting_input_stack_.isEmpty()) && (energy_stored_ >= energy_consumption_)) {
if(!current_smelting_input_stack_.isItemEqual(current_smelting_input_stack_)) {
proc_time_elapsed_ = 0;
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
}
final boolean can_smelt = canSmelt();
if((!can_smelt) && (BRecipes.instance().getSmeltingResult(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty())) {
if((!can_smelt) && (BRecipes.instance().getSmeltingResult(current_smelting_input_stack_).isEmpty())) {
// bypass
if(transferItems(SMELTING_INPUT_SLOT_NO, SMELTING_OUTPUT_SLOT_NO, 1)) dirty = true;
} else {
@ -697,7 +703,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
proc_time_elapsed_ += (TICK_INTERVAL * proc_speed_percent_/100);
if(proc_time_elapsed_ >= proc_time_needed_) {
proc_time_elapsed_ = 0;
proc_time_needed_ = getCookTime(stacks_.get(SMELTING_INPUT_SLOT_NO));
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
smeltItem();
dirty = true;
shift_out = true;

View file

@ -4,10 +4,13 @@
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Half slab characteristics class.
* Half slab ("slab slices") characteristics class. Actually
* it's now a quater slab, but who cares.
*/
package wile.engineersdecor.blocks;
import wile.engineersdecor.detail.ModAuxiliaries;
import wile.engineersdecor.detail.ModConfig;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
@ -26,15 +29,17 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
public class BlockDecorHalfSlab extends BlockDecor
@ -61,6 +66,16 @@ public class BlockDecorHalfSlab extends BlockDecor
protected boolean is_cube(IBlockState state)
{ return state.getValue(PARTS) == 0x07; }
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag)
{
if(!ModAuxiliaries.Tooltip.addInformation(stack, world, tooltip, flag, true)) return;
if(!ModConfig.optout.without_direct_slab_pickup) {
ModAuxiliaries.Tooltip.addInformation("engineersdecor.tooltip.slabpickup", "engineersdecor.tooltip.slabpickup", tooltip, flag, true);
}
}
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
@ -167,7 +182,7 @@ public class BlockDecorHalfSlab extends BlockDecor
@Override
public void onBlockClicked(World world, BlockPos pos, EntityPlayer player)
{
if(world.isRemote) return;
if((world.isRemote) || (ModConfig.optout.without_direct_slab_pickup)) return;
final ItemStack stack = player.getHeldItemMainhand();
if(stack.isEmpty() || (Block.getBlockFromItem(stack.getItem()) != this)) return;
if(stack.getCount() >= stack.getMaxStackSize()) return;

View file

@ -0,0 +1,201 @@
/*
* @file BlockDecorSlab.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Standard half block horizontal slab characteristics class.
*/
package wile.engineersdecor.blocks;
import wile.engineersdecor.detail.ModAuxiliaries;
import wile.engineersdecor.detail.ModConfig;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumHand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
public class BlockDecorSlab extends BlockDecor
{
public static final PropertyInteger PARTS = PropertyInteger.create("parts", 0, 2);
public static final PropertyInteger TEXTURE_VARIANT = PropertyInteger.create("tvariant", 0, 7);
protected static final AxisAlignedBB AABBs[] = {
new AxisAlignedBB(0, 0./16, 0, 1, 8./16, 1), // bottom slab
new AxisAlignedBB(0, 8./16, 0, 1, 16./16, 1), // top slab
new AxisAlignedBB(0, 0./16, 0, 1, 16./16, 1), // both slabs
new AxisAlignedBB(0, 0./16, 0, 1, 16./16, 1) // << 2bit fill
};
protected static final int num_slabs_contained_in_parts_[] = { 1,1,2,2 };
public BlockDecorSlab(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{ super(registryName, config, material, hardness, resistance, sound); }
protected boolean is_cube(IBlockState state)
{ return state.getValue(PARTS) >= 2; }
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag)
{
if(!ModAuxiliaries.Tooltip.addInformation(stack, world, tooltip, flag, true)) return;
if(!ModConfig.optout.without_direct_slab_pickup) {
ModAuxiliaries.Tooltip.addInformation("engineersdecor.tooltip.slabpickup", "engineersdecor.tooltip.slabpickup", tooltip, flag, true);
}
}
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
{ return (((config & CFG_TRANSLUCENT)!=0) ? (BlockRenderLayer.TRANSLUCENT) : (BlockRenderLayer.CUTOUT)); }
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateFromMeta(int meta)
{ return getDefaultState().withProperty(PARTS, MathHelper.clamp(meta, 0, 2)); }
@Override
public int getMetaFromState(IBlockState state)
{ return state.getValue(PARTS); }
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
long prnd = pos.toLong(); prnd = (prnd>>29) ^ (prnd>>17) ^ (prnd>>9) ^ (prnd>>4) ^ pos.getX() ^ pos.getY() ^ pos.getZ();
return state.withProperty(TEXTURE_VARIANT, ((int)prnd) & 0x7);
}
@Override
protected BlockStateContainer createBlockState()
{ return new BlockStateContainer(this, PARTS, TEXTURE_VARIANT); }
@Override
@SuppressWarnings("deprecation")
public boolean isOpaqueCube(IBlockState state)
{ return ((config & CFG_TRANSLUCENT)==0) && is_cube(state); }
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return (state.getValue(PARTS) >= 2) ? BlockFaceShape.SOLID : BlockFaceShape.UNDEFINED; }
@Override
@SuppressWarnings("deprecation")
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{ return AABBs[state.getValue(PARTS) & 0x3]; }
@Override
@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{ return getBoundingBox(state, world, pos); }
@Override
@SuppressWarnings("deprecation")
public boolean isFullCube(IBlockState state)
{ return is_cube(state); }
@Override
@SuppressWarnings("deprecation")
public boolean isNormalCube(IBlockState state)
{ return is_cube(state); }
@Override
@SuppressWarnings("deprecation")
public boolean canEntitySpawn(IBlockState state, Entity entity)
{ return false; }
@Override
public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, ItemStack stack)
{ spawnAsEntity(world, pos, new ItemStack(Item.getItemFromBlock(this), num_slabs_contained_in_parts_[state.getValue(PARTS) & 0x3])); }
@Override
public boolean canPlaceBlockOnSide(World world, BlockPos pos, EnumFacing side)
{ return world.getBlockState(pos).getBlock() != this; }
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{ return getDefaultState().withProperty(PARTS, ((facing==EnumFacing.UP) || ((facing!=EnumFacing.DOWN) && (hitY < 0.6))) ? 0 : 1); }
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
final ItemStack stack = player.getHeldItem(hand);
if(stack.isEmpty() || (Block.getBlockFromItem(stack.getItem()) != this)) return false;
int parts = state.getValue(PARTS);
if(((facing == EnumFacing.UP) && (parts == 0)) || ((facing == EnumFacing.DOWN) && (parts == 1))) {
world.setBlockState(pos, state.withProperty(PARTS, 2), 3);
} else {
return false; // "not handled" -> let parent decide if a new slab has to be placed on top/bottom.
}
if(world.isRemote) return true;
if(!player.isCreative()) {
stack.shrink(1);
if(player.inventory != null) player.inventory.markDirty();
}
SoundType st = this.getSoundType(state, world, pos, null);
world.playSound(null, pos, st.getPlaceSound(), SoundCategory.BLOCKS, (st.getVolume()+1f)/2.5f, 0.9f*st.getPitch());
return true;
}
@Override
public void onBlockClicked(World world, BlockPos pos, EntityPlayer player)
{
if((world.isRemote) || (ModConfig.optout.without_direct_slab_pickup)) return;
final ItemStack stack = player.getHeldItemMainhand();
if(stack.isEmpty() || (Block.getBlockFromItem(stack.getItem()) != this)) return;
if(stack.getCount() >= stack.getMaxStackSize()) return;
Vec3d lv = player.getLookVec();
EnumFacing facing = EnumFacing.getFacingFromVector((float)lv.x, (float)lv.y, (float)lv.z);
if((facing != EnumFacing.UP) && (facing != EnumFacing.DOWN)) return;
IBlockState state = world.getBlockState(pos);
if(state.getBlock() != this) return;
int parts = state.getValue(PARTS);
if(facing == EnumFacing.DOWN) {
if(parts == 2) {
world.setBlockState(pos, state.withProperty(PARTS, 0), 3);
} else {
world.setBlockToAir(pos);
}
} else if(facing == EnumFacing.UP) {
if(parts == 2) {
world.setBlockState(pos, state.withProperty(PARTS, 1), 3);
} else {
world.setBlockToAir(pos);
}
}
if(!player.isCreative()) {
stack.grow(1);
if(player.inventory != null) player.inventory.markDirty(); // @todo: check if inventory can actually be null
}
SoundType st = this.getSoundType(state, world, pos, null);
world.playSound(player, pos, st.getPlaceSound(), SoundCategory.BLOCKS, (st.getVolume()+1f)/2.5f, 0.9f*st.getPitch());
}
}

View file

@ -44,19 +44,25 @@ public class ModBlocks
public static final BlockDecorFull CLINKER_BRICK_BLOCK = new BlockDecorFull("clinker_brick_block", 0, Material.ROCK, 2f, 15f, SoundType.STONE);
public static final BlockDecorStairs CLINKER_BRICK_STAIRS = new BlockDecorStairs("clinker_brick_stairs", CLINKER_BRICK_BLOCK.getDefaultState());
public static final BlockDecorWall CLINKER_BRICK_WALL = new BlockDecorWall("clinker_brick_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 2f, 20f, SoundType.STONE);
public static final BlockDecorSlab CLINKER_BRICK_SLAB = new BlockDecorSlab("clinker_brick_slab", BlockDecor.CFG_DEFAULT, Material.ROCK, 2f, 20f, SoundType.STONE);
public static final BlockDecorFull CLINKER_BRICK_STAINED_BLOCK = new BlockDecorFull("clinker_brick_stained_block", 0, Material.ROCK, 2f, 15f, SoundType.STONE);
public static final BlockDecorStairs CLINKER_BRICK_STAINED_STAIRS = new BlockDecorStairs("clinker_brick_stained_stairs", CLINKER_BRICK_STAINED_BLOCK.getDefaultState());
public static final BlockDecorSlab CLINKER_BRICK_STAINED_SLAB = new BlockDecorSlab("clinker_brick_stained_slab", BlockDecor.CFG_DEFAULT, Material.ROCK, 2f, 20f, SoundType.STONE);
public static final BlockDecorFull SLAG_BRICK_BLOCK = new BlockDecorFull("slag_brick_block", 0, Material.ROCK, 2f, 15f, SoundType.STONE);
public static final BlockDecorStairs SLAG_BRICK_STAIRS = new BlockDecorStairs("slag_brick_stairs", SLAG_BRICK_BLOCK.getDefaultState());
public static final BlockDecorWall SLAG_BRICK_WALL = new BlockDecorWall("slag_brick_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 2f, 15f, SoundType.STONE);
public static final BlockDecorSlab SLAG_BRICK_SLAB = new BlockDecorSlab("slag_brick_slab", BlockDecor.CFG_DEFAULT, Material.ROCK, 2f, 15f, SoundType.STONE);
public static final BlockDecorFull REBAR_CONCRETE_BLOCK = new BlockDecorFull("rebar_concrete", 0, Material.ROCK, 5f, 2000f, SoundType.STONE);
public static final BlockDecorStairs REBAR_CONCRETE_STAIRS = new BlockDecorStairs("rebar_concrete_stairs", REBAR_CONCRETE_BLOCK.getDefaultState());
public static final BlockDecorWall REBAR_CONCRETE_WALL = new BlockDecorWall("rebar_concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 5f, 2000f, SoundType.STONE);
public static final BlockDecorSlab REBAR_CONCRETE_SLAB = new BlockDecorSlab("rebar_concrete_slab", BlockDecor.CFG_DEFAULT, Material.ROCK, 5f, 2000f, SoundType.STONE);
public static final BlockDecorFull REBAR_CONCRETE_TILE = new BlockDecorFull("rebar_concrete_tile", 0, Material.ROCK, 5f, 2000f, SoundType.STONE);
public static final BlockDecorStairs REBAR_CONCRETE_TILE_STAIRS = new BlockDecorStairs("rebar_concrete_tile_stairs", REBAR_CONCRETE_TILE.getDefaultState());
public static final BlockDecorSlab REBAR_CONCRETE_TILE_SLAB = new BlockDecorSlab("rebar_concrete_tile_slab", BlockDecor.CFG_DEFAULT, Material.ROCK, 5f, 2000f, SoundType.STONE);
public static final BlockDecorWall CONCRETE_WALL = new BlockDecorWall("concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 5f, 20f, SoundType.STONE);
@ -64,7 +70,9 @@ public class ModBlocks
public static final BlockDecorLadder METAL_RUNG_STEPS = new BlockDecorLadder("metal_rung_steps", 0, Material.IRON, 0.5f, 20f, SoundType.METAL);
public static final BlockDecorLadder TREATED_WOOD_LADDER = new BlockDecorLadder("treated_wood_ladder", 0, Material.WOOD, 0.5f, 10f, SoundType.WOOD);
public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = new BlockDecorGlassBlock("panzerglass_block", 0, Material.GLASS, 0.8f, 2000f, SoundType.GLASS);
public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = new BlockDecorGlassBlock("panzerglass_block", 0, Material.GLASS, 1f, 2000f, SoundType.GLASS);
public static final BlockDecorSlab PANZERGLASS_SLAB = new BlockDecorSlab("panzerglass_slab", BlockDecor.CFG_TRANSLUCENT, Material.GLASS, 1f, 2000f, SoundType.GLASS);
public static final BlockDecorStraightPole TREATED_WOOD_POLE = new BlockDecorStraightPole(
"treated_wood_pole",
@ -361,17 +369,22 @@ public class ModBlocks
STRAIGHT_CHECK_VALVE, STRAIGHT_REDSTONE_VALVE, STRAIGHT_REDSTONE_ANALOG_VALVE, STRAIGHT_PIPE_VALVE_TEI,
PASSIVE_FLUID_ACCUMULATOR, PASSIVE_FLUID_ACCUMULATOR_TEI,
CLINKER_BRICK_BLOCK,
CLINKER_BRICK_SLAB,
CLINKER_BRICK_STAIRS,
CLINKER_BRICK_WALL,
CLINKER_BRICK_STAINED_BLOCK,
CLINKER_BRICK_STAINED_SLAB,
CLINKER_BRICK_STAINED_STAIRS,
SLAG_BRICK_BLOCK,
SLAG_BRICK_SLAB,
SLAG_BRICK_STAIRS,
SLAG_BRICK_WALL,
REBAR_CONCRETE_BLOCK,
REBAR_CONCRETE_SLAB,
REBAR_CONCRETE_STAIRS,
REBAR_CONCRETE_WALL,
REBAR_CONCRETE_TILE,
REBAR_CONCRETE_TILE_SLAB,
REBAR_CONCRETE_TILE_STAIRS,
CONCRETE_WALL,
PANZERGLASS_BLOCK,
@ -397,15 +410,11 @@ public class ModBlocks
private static final Object dev_content[] = {
SIGN_MINDSTEP,
PANZERGLASS_SLAB, // check if another class is needed due to is_side_visible
// handling not sure yet ...
HALFSLAB_REBARCONCRETE,
HALFSLAB_CONCRETE,
HALFSLAB_TREATEDWOOD,
HALFSLAB_SHEETMETALIRON,
HALFSLAB_SHEETMETALSTEEL,
HALFSLAB_SHEETMETALCOPPER,
HALFSLAB_SHEETMETALGOLD,
HALFSLAB_SHEETMETALALUMINIUM,
HALFSLAB_REBARCONCRETE, HALFSLAB_CONCRETE, HALFSLAB_TREATEDWOOD,
HALFSLAB_SHEETMETALIRON, HALFSLAB_SHEETMETALSTEEL, HALFSLAB_SHEETMETALCOPPER,
HALFSLAB_SHEETMETALGOLD, HALFSLAB_SHEETMETALALUMINIUM,
};
//--------------------------------------------------------------------------------------------------------------------

View file

@ -162,11 +162,21 @@ public class ModConfig
@Config.RequiresMcRestart
public boolean without_factory_dropper = false;
@Config.Comment({"Disable horizontal half-block slab."})
@Config.Name("Without slabs")
@Config.RequiresMcRestart
public boolean without_slabs = false;
@Config.Comment({"Disable stackable 1/8 block slices."})
@Config.Name("Without slab slices")
@Config.RequiresMcRestart
public boolean without_halfslabs = false;
@Config.Comment({"Disable directly picking up layers from slabs and slab " +
"slices by left clicking while looking up/down."})
@Config.Name("Without slab pickup")
public boolean without_direct_slab_pickup = false;
@Config.Comment({"Disable poles of any material."})
@Config.Name("Without poles")
@Config.RequiresMcRestart
@ -385,6 +395,7 @@ public class ModConfig
if(block instanceof BlockDecorPipeValve) return optout.without_valves;
if(block instanceof BlockDecorHorizontalSupport) return optout.without_hsupports;
// Type based evaluation where later filters may match, too
if(optout.without_slabs && (block instanceof BlockDecorSlab)) return true;
if(optout.without_stairs && (block instanceof BlockDecorStairs)) return true;
if(optout.without_walls && (block instanceof BlockDecorWall)) return true;
if(optout.without_poles && (block instanceof BlockDecorStraightPole)) return true;

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture4"}},
"5":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture5"}},
"6":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture6"}},
"7":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture7"}}
}
}
}

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture4"}},
"5":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture5"}},
"6":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture6"}},
"7":{"textures":{"all": "engineersdecor:blocks/clinker_brick/clinker_brick_stained_texture7"}}
}
}
}

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture0"}},
"5":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture1"}},
"6":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture2"}},
"7":{"textures":{"all": "engineersdecor:blocks/glass/panzerglass_block_texture3"}}
}
}
}

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture4"}},
"5":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture5"}},
"6":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture6"}},
"7":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_texture7"}}
}
}
}

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture4"}},
"5":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture5"}},
"6":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture6"}},
"7":{"textures":{"all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture7"}}
}
}
}

View file

@ -0,0 +1,26 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slab/slab_s0_model",
"textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture0" }
},
"variants": {
"normal": [{}],
"inventory": [{}],
"parts": {
"0" : { "model": "engineersdecor:slab/slab_s0_model" },
"1" : { "model": "engineersdecor:slab/slab_s1_model" },
"2" : { "model": "engineersdecor:slab/slab_s2_model" }
},
"tvariant": {
"0":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture0"}},
"1":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture1"}},
"2":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture2"}},
"3":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture3"}},
"4":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture4"}},
"5":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture5"}},
"6":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture6"}},
"7":{"textures":{"all": "engineersdecor:blocks/slag_brick/slag_brick_texture7"}}
}
}
}

View file

@ -8,7 +8,7 @@ itemGroup.tabengineersdecor=Engineer's Decor
engineersdecor.config.title=Engineer's Decor Config
engineersdecor.tooltip.hint.extended=§6[§9SHIFT§r More Info§6]§r
engineersdecor.tooltip.hint.help=§6[§9CTRL-SHIFT§r Help§6]§r
engineersdecor.tooltip.slabpickup.help=§rFast pickup by left-clicking while looking up/down and holding this slab.
#-----------------------------------------------------------------------------------------------------------
# Stone/"ceramic material" based blocks
#-----------------------------------------------------------------------------------------------------------
@ -25,6 +25,19 @@ tile.engineersdecor.panzerglass_block.help=§6Reinforced glass block.§r Expensi
tile.engineersdecor.rebar_concrete_tile.name=Rebar Concrete Tile
tile.engineersdecor.rebar_concrete_tile.help=§6Steel reinforced concrete tile.§r Expensive but Creeper-proof like obsidian.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_slab.name=Clinker Brick Slab
tile.engineersdecor.clinker_brick_slab.help=§6Slab made from a Clinker Block.§r\nLooks slightly darker and more color intensive than the vanilla brick.
tile.engineersdecor.clinker_brick_stained_slab.name=Stained Clinker Brick Slab
tile.engineersdecor.clinker_brick_stained_slab.help=§6Slab made from a Stained Clinker Block.
tile.engineersdecor.slag_brick_slab.name=Slag Brick Slab
tile.engineersdecor.slag_brick_slab.help=§6A gray-brown brick slab.
tile.engineersdecor.rebar_concrete_slab.name=Rebar Concrete Slab
tile.engineersdecor.rebar_concrete_slab.help=§6Steel reinforced concrete slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.rebar_concrete_tile_slab.name=Rebar Concrete Tile Slab
tile.engineersdecor.rebar_concrete_tile_slab.help=§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.panzerglass_slab.name=Panzer Glass Slab
tile.engineersdecor.panzerglass_slab.help=§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.rebar_concrete_wall.name=Rebar Concrete Wall
tile.engineersdecor.rebar_concrete_wall.help=§6Steel reinforced concrete wall.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.concrete_wall.name=Concrete Wall

View file

@ -8,7 +8,7 @@ itemGroup.tabengineersdecor=Engineer's Decor
engineersdecor.config.title=Engineer's Decor конфигурация
engineersdecor.tooltip.hint.extended=§6[§9SHIFT§r Больше информации§6]§r
engineersdecor.tooltip.hint.help=§6[§9CTRL-SHIFT§r Помощь§6]§r
#engineersdecor.tooltip.slabpickup.help=§rFast pickup by left-clicking while looking up/down and holding this slab.
#-----------------------------------------------------------------------------------------------------------
# Stone/"ceramic material" based blocks
#-----------------------------------------------------------------------------------------------------------
@ -25,6 +25,19 @@ tile.engineersdecor.panzerglass_block.help=§6Усиленный стеклоб
tile.engineersdecor.rebar_concrete_tile.name=Железобетонная плита
tile.engineersdecor.rebar_concrete_tile.help=§6Стальная железобетонная плитка.§r Дорогая, но взрывоустойчивая, как обсидиан.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_slab.name=Clinker Brick Slab
#tile.engineersdecor.clinker_brick_slab.help=§6Slab made from a Clinker Block.§r\nLooks slightly darker and more color intensive than the vanilla brick.
tile.engineersdecor.clinker_brick_stained_slab.name=Stained Clinker Brick Slab
#tile.engineersdecor.clinker_brick_stained_slab.help=§6Slab made from a Stained Clinker Block.
tile.engineersdecor.slag_brick_slab.name=Slag Brick Slab
#tile.engineersdecor.slag_brick_slab.help=§6A gray-brown brick slab.
tile.engineersdecor.rebar_concrete_slab.name=Rebar Concrete Slab
#tile.engineersdecor.rebar_concrete_slab.help=§6Steel reinforced concrete slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.rebar_concrete_tile_slab.name=Rebar Concrete Tile Slab
#tile.engineersdecor.rebar_concrete_tile_slab.help=§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.panzerglass_slab.name=Panzer Glass Slab
#tile.engineersdecor.panzerglass_slab.help=§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.rebar_concrete_wall.name=Железобетонная стена
tile.engineersdecor.rebar_concrete_wall.help=§6Стальная железобетонная стена.§r Дорогая, но взрывоустойчивая, как обсидиан.
tile.engineersdecor.concrete_wall.name=Бетонная стена

View file

@ -8,7 +8,7 @@ itemGroup.tabengineersdecor=工程师的装饰
engineersdecor.config.title=工程师的装饰配置
engineersdecor.tooltip.hint.extended=§6[按§9SHIFT§r获取更多信息§6]§r
engineersdecor.tooltip.hint.help=§6[按§9CTRL-SHIFT§r获取帮助§6]§r
#engineersdecor.tooltip.slabpickup.help=§rFast pickup by left-clicking while looking up/down and holding this slab.
#-----------------------------------------------------------------------------------------------------------
# Stone/"ceramic material" based blocks
#-----------------------------------------------------------------------------------------------------------
@ -25,6 +25,19 @@ tile.engineersdecor.panzerglass_block.name=Panzer Glass Block
tile.engineersdecor.rebar_concrete_tile.name=Rebar Concrete Tile
#tile.engineersdecor.rebar_concrete_tile.help=§6Steel reinforced concrete tile.§r Expensive but Creeper-proof like obsidian.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_slab.name=Clinker Brick Slab
#tile.engineersdecor.clinker_brick_slab.help=§6Slab made from a Clinker Block.§r\nLooks slightly darker and more color intensive than the vanilla brick.
tile.engineersdecor.clinker_brick_stained_slab.name=Stained Clinker Brick Slab
#tile.engineersdecor.clinker_brick_stained_slab.help=§6Slab made from a Stained Clinker Block.
tile.engineersdecor.slag_brick_slab.name=Slag Brick Slab
#tile.engineersdecor.slag_brick_slab.help=§6A gray-brown brick slab.
tile.engineersdecor.rebar_concrete_slab.name=Rebar Concrete Slab
#tile.engineersdecor.rebar_concrete_slab.help=§6Steel reinforced concrete slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.rebar_concrete_tile_slab.name=Rebar Concrete Tile Slab
#tile.engineersdecor.rebar_concrete_tile_slab.help=§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.panzerglass_slab.name=Panzer Glass Slab
#tile.engineersdecor.panzerglass_slab.help=§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.rebar_concrete_wall.name=钢筋混凝土墙
tile.engineersdecor.rebar_concrete_wall.help=§6钢筋混凝土墙.§r 昂贵,但像黑曜石一样防苦力怕.
tile.engineersdecor.concrete_wall.name=水泥墙

View file

@ -2,6 +2,7 @@
"parent": "block/cube",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 2, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 4, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 10, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 12, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 14, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 2, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 4, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 6, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 8, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 12, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -2,6 +2,7 @@
"parent": "engineersdecor:block/slab/halfslab_s0_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
},
"elements": [
@ -9,10 +10,10 @@
"from": [0, 14, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#all"},
"east": {"texture": "#all"},
"south": {"texture": "#all"},
"west": {"texture": "#all"},
"north": {"texture": "#side"},
"east": {"texture": "#side"},
"south": {"texture": "#side"},
"west": {"texture": "#side"},
"up": {"texture": "#all"},
"down": {"texture": "#all"}
}

View file

@ -0,0 +1,8 @@
{
"parent": "engineersdecor:block/slab/halfslab_s3_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "engineersdecor:block/slab/halfslab_sb_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "engineersdecor:block/slab/halfslab_s7_model",
"textures": {
"particle": "#all",
"side": "#all",
"all": "engineersdecor:blocks/iestyle/treated_wood_framed_nailed_texture"
}
}