Small Block Breaker added, 1.14: Fluid handlers implemented.
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.12.2": {
|
||||
"1.0.15-b2": "[A] Added Small Block Breaker\n[M] Crafting Table: Allowing NBT \"Damage\" mismatch only items that are declared damagable (issue #56).\n[M] Tree Cutter: Loosened the strict mod namespace requirement for Dynamic Trees log detection (issue #52) to enable checking DT compat mod log blocks.",
|
||||
"1.0.15-b1": "[A] Added Floor Edge Light.\n[A] Added Factory Block Placer and Planter.",
|
||||
"1.0.14": "[R] Release based on v1.0.14-b1. Release-to-release changes: * Factory Hopper added. * Small Waste Incinerator improved. * Lang updates. * Recipe fixes.",
|
||||
"1.0.14-b1": "[A] Factory Hopper added (configurable hopper and item collector).\n[M] Small Waste Incinerator Fifo shifting improved.\n[M] Lang file zh_cn updated (scikirbypoke, PR#53).\n[F] Fixed conditional recipe constant for redstone pipe valve (thx @albert_ac).",
|
||||
|
@ -64,6 +65,6 @@
|
|||
},
|
||||
"promos": {
|
||||
"1.12.2-recommended": "1.0.14",
|
||||
"1.12.2-latest": "1.0.15-b1"
|
||||
"1.12.2-latest": "1.0.15-b2"
|
||||
}
|
||||
}
|
|
@ -10,7 +10,12 @@ Mod sources for Minecraft version 1.12.2.
|
|||
----
|
||||
## Version history
|
||||
|
||||
~ v1.0.15-b2 [A]
|
||||
- v1.0.15-b2 [A] Added Small Block Breaker
|
||||
[M] Crafting Table: Allowing NBT "Damage" mismatch only
|
||||
items that are declared damagable (issue #56).
|
||||
[M] Tree Cutter: Loosened the strict mod namespace
|
||||
requirement for Dynamic Trees log detection (issue #52)
|
||||
to enable checking DT compat mod log blocks.
|
||||
|
||||
- v1.0.15-b1 [A] Added Floor Edge Light.
|
||||
[A] Added Factory Block Placer and Planter.
|
||||
|
|
|
@ -152,6 +152,13 @@ public class ModContent
|
|||
ModAuxiliaries.getPixeledAABB(0,0,0, 16,8,16)
|
||||
);
|
||||
|
||||
public static final BlockDecorBreaker SMALL_BLOCK_BREAKER = new BlockDecorBreaker(
|
||||
"small_block_breaker",
|
||||
BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK,
|
||||
Material.IRON, 1f, 15f, SoundType.METAL,
|
||||
ModAuxiliaries.getPixeledAABB(0,0,0, 16,12,16)
|
||||
);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final BlockDecorPipeValve STRAIGHT_CHECK_VALVE = new BlockDecorPipeValve(
|
||||
|
@ -482,6 +489,9 @@ public class ModContent
|
|||
private static final TileEntityRegistrationData SMALL_TREE_CUTTER_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorTreeCutter.BTileEntity.class, "te_small_tree_cutter"
|
||||
);
|
||||
private static final TileEntityRegistrationData SMALL_BLOCK_BREAKER_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorBreaker.BTileEntity.class, "te_small_block_breaker"
|
||||
);
|
||||
private static final TileEntityRegistrationData TEST_BLOCK_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorTest.BTileEntity.class, "te_testblock"
|
||||
);
|
||||
|
@ -497,12 +507,13 @@ public class ModContent
|
|||
FACTORY_HOPPER,FACTORY_HOPPER_TEI,
|
||||
FACTORY_DROPPER, FACTORY_DROPPER_TEI,
|
||||
FACTORY_PLACER, FACTORY_PLACER_TEI,
|
||||
SMALL_BLOCK_BREAKER,SMALL_BLOCK_BREAKER_TEI,
|
||||
SMALL_TREE_CUTTER,SMALL_TREE_CUTTER_TEI,
|
||||
SMALL_WASTE_INCINERATOR, WASTE_INCINERATOR_TEI,
|
||||
SMALL_SOLAR_PANEL,SMALL_SOLAR_PANEL_TEI,
|
||||
SMALL_MINERAL_SMELTER, SMALL_MINERAL_SMELTER_TEI,
|
||||
STRAIGHT_CHECK_VALVE, STRAIGHT_REDSTONE_VALVE, STRAIGHT_REDSTONE_ANALOG_VALVE, STRAIGHT_PIPE_VALVE_TEI,
|
||||
PASSIVE_FLUID_ACCUMULATOR, PASSIVE_FLUID_ACCUMULATOR_TEI,
|
||||
SMALL_MINERAL_SMELTER, SMALL_MINERAL_SMELTER_TEI,
|
||||
SMALL_SOLAR_PANEL,SMALL_SOLAR_PANEL_TEI,
|
||||
SMALL_TREE_CUTTER,SMALL_TREE_CUTTER_TEI,
|
||||
CLINKER_BRICK_BLOCK,
|
||||
CLINKER_BRICK_SLAB,
|
||||
CLINKER_BRICK_STAIRS,
|
||||
|
|
|
@ -0,0 +1,275 @@
|
|||
/*
|
||||
* @file BlockDecorBreaker.java
|
||||
* @author Stefan Wilhelm (wile)
|
||||
* @copyright (C) 2019 Stefan Wilhelm
|
||||
* @license MIT (see https://opensource.org/licenses/MIT)
|
||||
*
|
||||
* Small Block Breaker
|
||||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.properties.PropertyBool;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
|
||||
|
||||
public class BlockDecorBreaker extends BlockDecorDirected
|
||||
{
|
||||
public static final PropertyBool ACTIVE = PropertyBool.create("active");
|
||||
|
||||
public BlockDecorBreaker(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
|
||||
{
|
||||
super(registryName, config, material, hardness, resistance, sound, unrotatedAABB);
|
||||
setLightOpacity(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockStateContainer createBlockState()
|
||||
{ return new BlockStateContainer(this, FACING, ACTIVE); }
|
||||
|
||||
@Override
|
||||
public IBlockState getStateFromMeta(int meta)
|
||||
{ return getDefaultState().withProperty(FACING, EnumFacing.byHorizontalIndex(meta & 0x7)).withProperty(ACTIVE, (meta & 0x8)!=0); }
|
||||
|
||||
@Override
|
||||
public int getMetaFromState(IBlockState state)
|
||||
{ return (state.getValue(FACING).getHorizontalIndex() & 0x7) | (state.getValue(ACTIVE) ? 8 : 0); }
|
||||
|
||||
@Override
|
||||
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand)
|
||||
{ return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand).withProperty(ACTIVE, false); }
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(IBlockState state)
|
||||
{ return true; }
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public TileEntity createTileEntity(World world, IBlockState state)
|
||||
{ return new BTileEntity(); }
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rnd)
|
||||
{
|
||||
if((state.getBlock()!=this) || (!state.getValue(ACTIVE))) return;
|
||||
final double rv = rnd.nextDouble();
|
||||
if(rv > 0.8) return;
|
||||
final double x=0.5+pos.getX(), y=0.5+pos.getY(), z=0.5+pos.getZ();
|
||||
final double xc=0.52, xr=rnd.nextDouble()*0.4-0.2, yr=(y-0.3+rnd.nextDouble()*0.2);
|
||||
switch(state.getValue(FACING)) {
|
||||
case WEST: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x-xc, yr, z+xr, 0.0, 0.0, 0.0); break;
|
||||
case EAST: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xc, yr, z+xr, 0.0, 0.0, 0.0); break;
|
||||
case NORTH: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xr, yr, z-xc, 0.0, 0.0, 0.0); break;
|
||||
default: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xr, yr, z+xc, 0.0, 0.0, 0.0); break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos neighborPos)
|
||||
{
|
||||
if(!(world instanceof World) || (((World) world).isRemote)) return;
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if(!(te instanceof BTileEntity)) return;
|
||||
((BTileEntity)te).block_updated();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
// Tile entity
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static class BTileEntity extends TileEntity implements ITickable, IEnergyStorage
|
||||
{
|
||||
public static final int IDLE_TICK_INTERVAL = 40;
|
||||
public static final int TICK_INTERVAL = 5;
|
||||
public static final int BOOST_FACTOR = 8;
|
||||
public static final int DEFAULT_BOOST_ENERGY = 64;
|
||||
public static final int DEFAULT_BREAKING_RELUCTANCE = 17;
|
||||
public static final int DEFAULT_MIN_BREAKING_TIME = 15;
|
||||
public static final int MAX_BREAKING_TIME = 800;
|
||||
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
|
||||
private static int breaking_reluctance = DEFAULT_BREAKING_RELUCTANCE;
|
||||
private static int min_breaking_time = DEFAULT_MIN_BREAKING_TIME;
|
||||
private int tick_timer_;
|
||||
private int proc_time_elapsed_;
|
||||
private int boost_energy_;
|
||||
|
||||
public static void on_config(int boost_energy_per_tick, int breaking_time_per_hardness, int min_breaking_time_ticks)
|
||||
{
|
||||
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
|
||||
breaking_reluctance = MathHelper.clamp(breaking_time_per_hardness, 5, 50);
|
||||
min_breaking_time = MathHelper.clamp(min_breaking_time_ticks, 10, 100);
|
||||
ModEngineersDecor.logger.info("Config block breaker: Boost energy consumption:" + boost_energy_consumption + "rf/t, reluctance=" + breaking_reluctance + "/hrdn, break time offset=" + min_breaking_time );
|
||||
}
|
||||
|
||||
public BTileEntity()
|
||||
{}
|
||||
|
||||
public void block_updated()
|
||||
{ if(tick_timer_ > 2) tick_timer_ = 2; }
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
||||
{ return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorBreaker)); }
|
||||
|
||||
// IEnergyStorage ----------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean canExtract()
|
||||
{ return false; }
|
||||
|
||||
@Override
|
||||
public boolean canReceive()
|
||||
{ return true; }
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored()
|
||||
{ return boost_energy_consumption; }
|
||||
|
||||
@Override
|
||||
public int getEnergyStored()
|
||||
{ return boost_energy_; }
|
||||
|
||||
@Override
|
||||
public int extractEnergy(int maxExtract, boolean simulate)
|
||||
{ return 0; }
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate)
|
||||
{
|
||||
if((boost_energy_ >= boost_energy_consumption) || (maxReceive < boost_energy_consumption)) return 0;
|
||||
if(!simulate) boost_energy_ = boost_energy_consumption;
|
||||
return boost_energy_consumption;
|
||||
}
|
||||
|
||||
// Capability export ----------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> cap, EnumFacing facing)
|
||||
{ return ((cap==CapabilityEnergy.ENERGY)) || super.hasCapability(cap, facing); }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing)
|
||||
{
|
||||
if(capability == CapabilityEnergy.ENERGY) {
|
||||
return (T)this;
|
||||
} else {
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
}
|
||||
|
||||
// ITickable ------------------------------------------------------------------------------------
|
||||
|
||||
private static HashSet<Block> blacklist = new HashSet<>();
|
||||
static {
|
||||
blacklist.add(Blocks.AIR);
|
||||
blacklist.add(Blocks.BEDROCK);
|
||||
blacklist.add(Blocks.FIRE);
|
||||
blacklist.add(Blocks.END_PORTAL);
|
||||
blacklist.add(Blocks.END_GATEWAY);
|
||||
blacklist.add(Blocks.END_PORTAL_FRAME);
|
||||
}
|
||||
|
||||
private static boolean isBreakable(IBlockState state, BlockPos pos, World world)
|
||||
{
|
||||
final Block block = state.getBlock();
|
||||
if(blacklist.contains(block)) return false;
|
||||
if(state.getMaterial().isLiquid()) return false;
|
||||
if(block.isAir(state, world, pos)) return false;
|
||||
float bh = state.getBlockHardness(world, pos);
|
||||
if((bh<0) || (bh>55)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean breakBlock(IBlockState state, BlockPos pos, World world)
|
||||
{
|
||||
if(world.isRemote || world.restoringBlockSnapshots) return false; // retry next cycle
|
||||
NonNullList<ItemStack> drops = NonNullList.create();
|
||||
state.getBlock().getDrops(drops, world, pos, state, 0);
|
||||
world.setBlockToAir(pos);
|
||||
for(ItemStack drop:drops) spawnAsEntity(world, pos, drop);
|
||||
SoundType stype = state.getBlock().getSoundType(state, world, pos, null);
|
||||
if(stype != null) world.playSound(null, pos, stype.getPlaceSound(), SoundCategory.BLOCKS, stype.getVolume()*0.6f, stype.getPitch());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void update()
|
||||
{
|
||||
if(--tick_timer_ > 0) return;
|
||||
if(world.isRemote) {
|
||||
IBlockState state = world.getBlockState(pos);
|
||||
if(!state.getValue(ACTIVE)) {
|
||||
tick_timer_ = TICK_INTERVAL;
|
||||
} else {
|
||||
tick_timer_ = 1;
|
||||
// not sure if is so cool to do this each tick ... may be simplified/removed again.
|
||||
SoundEvent sound = SoundEvents.BLOCK_WOOD_HIT;
|
||||
SoundType stype = world.getBlockState(pos.offset(state.getValue(FACING))).getBlock().getSoundType();
|
||||
if((stype == SoundType.CLOTH) || (stype == SoundType.PLANT) || (stype == SoundType.SNOW)) {
|
||||
sound = SoundEvents.BLOCK_CLOTH_HIT;
|
||||
} else if((stype == SoundType.GROUND) || (stype == SoundType.SAND)) {
|
||||
sound = SoundEvents.BLOCK_GRAVEL_HIT;
|
||||
}
|
||||
world.playSound(pos.getX(), pos.getY(), pos.getZ(), sound, SoundCategory.BLOCKS, 0.1f, 1.2f, false);
|
||||
}
|
||||
} else {
|
||||
tick_timer_ = TICK_INTERVAL;
|
||||
final IBlockState device_state = world.getBlockState(pos);
|
||||
final BlockPos target_pos = pos.offset(device_state.getValue(FACING));
|
||||
final IBlockState target_state = world.getBlockState(target_pos);
|
||||
if((world.isBlockPowered(pos)) || (!isBreakable(target_state, target_pos, world))) {
|
||||
if(device_state.getValue(ACTIVE)) world.setBlockState(pos, device_state.withProperty(ACTIVE, false), 1|2);
|
||||
proc_time_elapsed_ = 0;
|
||||
tick_timer_ = IDLE_TICK_INTERVAL;
|
||||
return;
|
||||
}
|
||||
proc_time_elapsed_ += TICK_INTERVAL;
|
||||
boolean active = true;
|
||||
int time_needed = (int)(target_state.getBlockHardness(world, pos) * breaking_reluctance) + min_breaking_time;
|
||||
if(boost_energy_ >= boost_energy_consumption) {
|
||||
boost_energy_ = 0;
|
||||
proc_time_elapsed_ += TICK_INTERVAL * BOOST_FACTOR;
|
||||
time_needed += min_breaking_time * (3*BOOST_FACTOR/5);
|
||||
}
|
||||
time_needed = MathHelper.clamp(time_needed, min_breaking_time, MAX_BREAKING_TIME);
|
||||
if(proc_time_elapsed_ >= time_needed) {
|
||||
proc_time_elapsed_ = 0;
|
||||
breakBlock(target_state, target_pos, world);
|
||||
active = false;
|
||||
}
|
||||
if(device_state.getValue(ACTIVE) != active) {
|
||||
world.setBlockState(pos, device_state.withProperty(ACTIVE, active), 1|2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -900,7 +900,7 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
|
|||
// first iteration: fillup existing stacks
|
||||
for(int i = slot_begin; i < slot_end; ++i) {
|
||||
final ItemStack stack = inventory.getStackInSlot(i);
|
||||
if((stack.isEmpty()) || (!stack.isItemEqual(mvstack))) continue;
|
||||
if((stack.isEmpty()) || (!isItemExactlyEqual(stack,mvstack))) continue;
|
||||
int nmax = stack.getMaxStackSize() - stack.getCount();
|
||||
if(mvstack.getCount() <= nmax) {
|
||||
stack.setCount(stack.getCount()+mvstack.getCount());
|
||||
|
@ -936,6 +936,24 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
|
|||
return mvstack;
|
||||
}
|
||||
|
||||
private boolean isItemExactlyEqual(ItemStack stack1, ItemStack stack2)
|
||||
{
|
||||
if(!stack1.isItemEqual(stack2)) return false;
|
||||
if(stack1.hasTagCompound()) {
|
||||
final NBTTagCompound nbt = stack1.getTagCompound();
|
||||
int n = stack1.getTagCompound().getSize();
|
||||
if((n > 0) && stack1.getItem().isDamageable() && (stack1.getTagCompound().hasKey("Damage"))) --n;
|
||||
if(n > 0) return false;
|
||||
}
|
||||
if(stack2.hasTagCompound()) {
|
||||
final NBTTagCompound nbt = stack2.getTagCompound();
|
||||
int n = stack2.getTagCompound().getSize();
|
||||
if((n > 0) && stack2.getItem().isDamageable() && (stack2.getTagCompound().hasKey("Damage"))) --n;
|
||||
if(n > 0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves as much items from the slots in range [first_slot, last_slot] of the inventory into a new stack.
|
||||
* Implicitly shrinks the inventory stacks and the `request_stack`.
|
||||
|
@ -950,16 +968,10 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
|
|||
int smallest_stack_index = -1;
|
||||
for(int i = slot_begin; i < slot_end; ++i) {
|
||||
final ItemStack stack = inventory.getStackInSlot(i);
|
||||
if((!stack.isEmpty()) && (stack.isItemEqual(request_stack))) {
|
||||
if((!stack.isEmpty()) && (isItemExactlyEqual(stack, request_stack))) {
|
||||
// Never automatically place stuff with nbt (except a few allowed like "Damage"),
|
||||
// as this could be a full crate, a valuable tool item, etc. For these recipes
|
||||
// the user has to place this item manually.
|
||||
if(stack.hasTagCompound()) {
|
||||
final NBTTagCompound nbt = stack.getTagCompound();
|
||||
int n = stack.getTagCompound().getSize();
|
||||
if((n > 0) && (stack.getTagCompound().hasKey("Damage"))) --n;
|
||||
if(n > 0) continue;
|
||||
}
|
||||
fetched_stack = stack.copy(); // copy exact stack with nbt and tool damage, otherwise we have an automagical repair of items.
|
||||
fetched_stack.setCount(0);
|
||||
int n = stack.getCount();
|
||||
|
@ -1067,12 +1079,12 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
|
|||
for(int i=0; i<9; ++i) {
|
||||
final ItemStack grid_stack = getStackInSlot(i + CRAFTING_SLOTS_BEGIN);
|
||||
final ItemStack refab_stack = to_refab.isEmpty() ? ItemStack.EMPTY : to_refab.get(i).copy();
|
||||
if((!grid_stack.isEmpty()) && (grid_stack.isItemEqual(to_distribute))) {
|
||||
if((!grid_stack.isEmpty()) && (isItemExactlyEqual(grid_stack, to_distribute))) {
|
||||
matching_grid_stack_sizes[i] = grid_stack.getCount();
|
||||
total_num_missing_stacks += grid_stack.getMaxStackSize()-grid_stack.getCount();
|
||||
if(max_matching_stack_size < matching_grid_stack_sizes[i]) max_matching_stack_size = matching_grid_stack_sizes[i];
|
||||
if(min_matching_stack_size > matching_grid_stack_sizes[i]) min_matching_stack_size = matching_grid_stack_sizes[i];
|
||||
} else if((!refab_stack.isEmpty()) && (refab_stack.isItemEqual(to_distribute))) {
|
||||
} else if((!refab_stack.isEmpty()) && (isItemExactlyEqual(refab_stack,to_distribute))) {
|
||||
matching_grid_stack_sizes[i] = 0;
|
||||
total_num_missing_stacks += grid_stack.getMaxStackSize();
|
||||
if(max_matching_stack_size < matching_grid_stack_sizes[i]) max_matching_stack_size = matching_grid_stack_sizes[i];
|
||||
|
|
|
@ -39,7 +39,7 @@ public class TreeCutting
|
|||
choppable_states.clear();
|
||||
if(ModAuxiliaries.isModLoaded("dynamictrees")) {
|
||||
ForgeRegistries.BLOCKS.getKeys().forEach((regname)->{
|
||||
if("dynamictrees".equals(regname.getNamespace())) {
|
||||
//if("dynamictrees".equals(regname.getNamespace())) { ... let's see if that also work with dyntrees compat mods
|
||||
if(!regname.getPath().contains("branch")) return;
|
||||
try {
|
||||
Block block = ForgeRegistries.BLOCKS.getValue(regname);
|
||||
|
@ -56,7 +56,7 @@ public class TreeCutting
|
|||
LOGGER.warn("Failed to register chopping for " + regname.toString());
|
||||
return;
|
||||
}
|
||||
}
|
||||
//}
|
||||
});
|
||||
}
|
||||
LOGGER.info("Dynamic Trees chopping compat: " + choppable_states.size() + " choppable states found.");
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "engineersdecor:device/small_block_breaker_model"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} },
|
||||
"active": { "true":{ "model": "engineersdecor:device/small_block_breaker_model_active" }, "false":{}}
|
||||
}
|
||||
}
|
|
@ -153,11 +153,11 @@ tile.engineersdecor.passive_fluid_accumulator.help=§6Vacuum suction based fluid
|
|||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.factory_dropper.name=Factory Dropper
|
||||
tile.engineersdecor.factory_dropper.help=§6Dropper suitable for advanced factory automation.§r Has twelve round-robin selected slots. \
|
||||
Drop force, angle, stack size, and cool-down delay adjustable in the GUI. Three stack compare \
|
||||
slots with logical AND or OR can be used as internal trigger source. Internal trigger can be \
|
||||
AND'ed or OR'ed with the external redstone signal trigger. Trigger simulation buttons for testing. \
|
||||
Pre-opens shutter door when internal trigger conditions are met. Drops all matching stacks \
|
||||
simultaneously. Click on all elements in the GUI to see how it works.
|
||||
Drop force, angle, stack size, and cool-down delay adjustable using sliders in the GUI. Three stack compare \
|
||||
slots (below the inventory slots) with logical AND or OR can be used as internal trigger source. The \
|
||||
internal trigger can be AND'ed or OR'ed with the external redstone signal trigger. Trigger simulation \
|
||||
buttons for testing. Pre-opens shutter door when internal trigger conditions are met. Drops all matching \
|
||||
stacks simultaneously. Simply click on all elements in the GUI to see how it works.
|
||||
tile.engineersdecor.factory_hopper.name=Factory Hopper
|
||||
tile.engineersdecor.factory_hopper.help=§6Hopper suitable for advanced factory automation.§r Can transfer half-stacks, max collection range 9x9.\n\
|
||||
GUI Slider controls: Collection range (0 to 4), insertion delay (0.5s to 10s), insertion stack size (1 to 32).\n\
|
||||
|
@ -166,11 +166,19 @@ tile.engineersdecor.factory_placer.name=Factory Block Placer
|
|||
tile.engineersdecor.factory_placer.help=§6Allows placing blocks and planting crops or trees.§r\n\
|
||||
GUI Redstone controls: Not inverted / inverted (default), pulse mode / continuous mode (default).\n\
|
||||
Also supports spike planing from underneath the soil. Spits out items that it cannot place or plant.
|
||||
tile.engineersdecor.small_block_breaker.name=Small Block Breaker
|
||||
tile.engineersdecor.small_block_breaker.help=§6Breaks blocks in front of it.§r\n\
|
||||
Can be disabled by applying a redstone signal. \
|
||||
The time needed to destroy a block depends on the hardness of that block. \
|
||||
Provide RF/FE power to speed up the breaking process (massively).
|
||||
tile.engineersdecor.small_mineral_smelter.name=Small Mineral Melting Furnace
|
||||
tile.engineersdecor.small_mineral_smelter.help=§6High temperature, high insulation electrical stone melting furnace.§r\n\
|
||||
Heats up mineral blocks to magma blocks, and finally to lava. Due to the \
|
||||
miniturized device size the process is rather inefficient - much time and \
|
||||
energy is needed to liquefy a stone block.
|
||||
Heats up mineral blocks to magma blocks, and finally to lava. Click with a \
|
||||
mineral block (stone, cobble, etc) or use item insertion to place a block in \
|
||||
the melter. Use bucket or fluid extraction to retrieve the lava. When cooling \
|
||||
down lava, obsidian is generated. Remove the RF power or apply a redstone \
|
||||
signal to disable the furnace. For automation, use a redstone comparator to \
|
||||
see in which melting phase the mineral is a moment.
|
||||
tile.engineersdecor.small_solar_panel.name=Small Solar Panel
|
||||
tile.engineersdecor.small_solar_panel.help=§6Produces a small amount of power when exposed to sunlight.§r\n\
|
||||
Useful for charging LF capacitors in remote systems with low consumption. The \
|
||||
|
|
|
@ -162,11 +162,19 @@ tile.engineersdecor.factory_placer.name=Factory Block Placer
|
|||
#tile.engineersdecor.factory_placer.help=§6Allows placing blocks and planting crops or trees.§r\n\
|
||||
GUI Redstone controls: Not inverted / inverted (default), pulse mode / continuous mode (default).\n\
|
||||
Also supports spike planing from underneath the soil. Spits out items that it cannot place or plant.
|
||||
tile.engineersdecor.small_block_breaker.name=Factory Block Breaker
|
||||
#tile.engineersdecor.small_block_breaker.help=§6Breaks blocks in front of it.§r\n\
|
||||
Can be disabled by applying a redstone signal. \
|
||||
The time needed to destroy a block depends on the hardness of that block. \
|
||||
Provide RF/FE power to speed up the breaking process (massively).
|
||||
tile.engineersdecor.small_mineral_smelter.name=Small Mineral Melting Furnace
|
||||
#tile.engineersdecor.small_mineral_smelter.help=§6High temperature, high insulation electrical stone melting furnace.§r\n\
|
||||
Heats up mineral blocks to magma blocks, and finally to lava. Due to the \
|
||||
miniturized device size the process is rather inefficient - much time and \
|
||||
energy is needed to liquefy a stone block.
|
||||
Heats up mineral blocks to magma blocks, and finally to lava. Click with a \
|
||||
mineral block (stone, cobble, etc) or use item insertion to place a block in \
|
||||
the melter. Use bucket or fluid extraction to retrieve the lava. When cooling \
|
||||
down lava, obsidian is generated. Remove the RF power or apply a redstone \
|
||||
signal to disable the furnace. For automation, use a redstone comparator to \
|
||||
see in which melting phase the mineral is a moment.
|
||||
tile.engineersdecor.small_solar_panel.name=Small Solar Panel
|
||||
#tile.engineersdecor.small_solar_panel.help=§6Produces a small amount of power when exposed to sunlight.§r\n\
|
||||
Useful for charging LF capacitors in remote systems with low consumption. The \
|
||||
|
|
|
@ -165,6 +165,11 @@ tile.engineersdecor.factory_placer.name=Factory Block Placer
|
|||
#tile.engineersdecor.factory_placer.help=§6Allows placing blocks and planting crops or trees.§r\n\
|
||||
GUI Redstone controls: Not inverted / inverted (default), pulse mode / continuous mode (default).\n\
|
||||
Also supports spike planing from underneath the soil. Spits out items that it cannot place or plant.
|
||||
tile.engineersdecor.small_block_breaker.name=Factory Block Breaker
|
||||
#tile.engineersdecor.small_block_breaker.help=§6Breaks blocks in front of it.§r\n\
|
||||
Can be disabled by applying a redstone signal. \
|
||||
The time needed to destroy a block depends on the hardness of that block. \
|
||||
Provide RF/FE power to speed up the breaking process (massively).
|
||||
tile.engineersdecor.small_mineral_smelter.name=小型矿物熔炼炉
|
||||
tile.engineersdecor.small_mineral_smelter.help=§6高温、高绝缘电熔石炉。§r\n\
|
||||
把矿物块加热成岩浆块,最后变成熔岩。由于\
|
||||
|
|
|
@ -0,0 +1,383 @@
|
|||
{
|
||||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"t": "engineersdecor:blocks/device/small_block_breaker_top",
|
||||
"b": "engineersdecor:blocks/device/small_block_breaker_bottom",
|
||||
"l": "engineersdecor:blocks/device/small_block_breaker_left",
|
||||
"particle": "engineersdecor:blocks/device/small_block_breaker_left",
|
||||
"k": "engineersdecor:blocks/device/small_block_breaker_back",
|
||||
"r": "engineersdecor:blocks/device/small_block_breaker_right",
|
||||
"f": "engineersdecor:blocks/device/small_block_breaker_front",
|
||||
"sh": "engineersdecor:blocks/device/small_block_breaker_shaft"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 4],
|
||||
"to": [1, 12, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [15, 4, 16, 16], "texture": "#f"},
|
||||
"east": {"uv": [4, 0, 16, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [0, 4, 1, 16], "texture": "#k"},
|
||||
"west": {"uv": [4, 4, 16, 16], "texture": "#l"},
|
||||
"up": {"uv": [0, 4, 1, 16], "texture": "#t"},
|
||||
"down": {"uv": [0, 0, 1, 12], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 0, 4],
|
||||
"to": [16, 12, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 4, 1, 16], "texture": "#f"},
|
||||
"east": {"uv": [0, 4, 12, 16], "texture": "#r"},
|
||||
"south": {"uv": [15, 4, 16, 16], "texture": "#k"},
|
||||
"west": {"uv": [0, 0, 12, 12], "texture": "#l"},
|
||||
"up": {"uv": [15, 4, 16, 16], "texture": "#t"},
|
||||
"down": {"uv": [15, 0, 16, 12], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7.5, 4, 6],
|
||||
"to": [8.5, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15.5, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [7, 4, 8, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 11, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"},
|
||||
"west": {"uv": [5, 4, 7, 12], "texture": "#f"},
|
||||
"up": {"uv": [12, 7, 13, 9], "texture": "#t"},
|
||||
"down": {"uv": [7.5, 9, 8.5, 11], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8.5, 4, 6],
|
||||
"to": [9, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [16.5, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [7, 4, 7.5, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 10, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [8.5, 4, 9, 12], "texture": "#t"},
|
||||
"west": {"uv": [6, 4, 7, 12], "texture": "#l"},
|
||||
"up": {"uv": [8.5, 7, 9, 8], "texture": "#t"},
|
||||
"down": {"uv": [8.5, 9, 9, 10], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 4, 6],
|
||||
"to": [7.5, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [8.5, 4, 9, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 10, 12], "rotation": 180, "texture": "#l"},
|
||||
"south": {"uv": [7, 4, 7.5, 12], "texture": "#t"},
|
||||
"west": {"uv": [6, 4, 7, 12], "texture": "#f"},
|
||||
"up": {"uv": [7.5, 7, 8.5, 8], "texture": "#t"},
|
||||
"down": {"uv": [7, 9, 7.5, 10], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 0, 0],
|
||||
"to": [16, 5, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [23, -2, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 11, 1, 16], "texture": "#f"},
|
||||
"east": {"uv": [12, 11, 16, 16], "texture": "#r"},
|
||||
"south": {"uv": [15, 11, 16, 16], "texture": "#t"},
|
||||
"west": {"uv": [0, 11, 4, 16], "texture": "#l"},
|
||||
"up": {"uv": [15, 0, 16, 4], "texture": "#t"},
|
||||
"down": {"uv": [15, 12, 16, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [1, 5, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -2, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [15, 11, 16, 16], "texture": "#f"},
|
||||
"east": {"uv": [12, 11, 16, 16], "texture": "#l"},
|
||||
"south": {"uv": [0, 11, 1, 16], "texture": "#t"},
|
||||
"west": {"uv": [0, 11, 4, 16], "texture": "#l"},
|
||||
"up": {"uv": [0, 0, 1, 4], "texture": "#t"},
|
||||
"down": {"uv": [0, 12, 1, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 0, 0],
|
||||
"to": [15, 4, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 12, 15, 16], "texture": "#f"},
|
||||
"east": {"uv": [0, 12, 16, 16], "texture": "#l"},
|
||||
"south": {"uv": [1, 12, 15, 16], "texture": "#k"},
|
||||
"west": {"uv": [0, 12, 16, 16], "texture": "#l"},
|
||||
"up": {"uv": [1, 0, 15, 16], "texture": "#t"},
|
||||
"down": {"uv": [1, 0, 15, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 4, 7],
|
||||
"to": [15, 12, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 15, 12], "texture": "#f"},
|
||||
"east": {"uv": [0, 4, 9, 12], "texture": "#l"},
|
||||
"south": {"uv": [1, 4, 15, 12], "texture": "#k"},
|
||||
"west": {"uv": [7, 4, 16, 12], "texture": "#l"},
|
||||
"up": {"uv": [1, 7, 15, 16], "texture": "#t"},
|
||||
"down": {"uv": [1, 0, 15, 9], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 9.5, 5],
|
||||
"to": [5, 10.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12, 2.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 5.5, 12, 6.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 5.5, 11, 6.5], "texture": "#sh"},
|
||||
"south": {"uv": [4, 5.5, 5, 6.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 5.5, 6.5, 6.5], "texture": "#sh"},
|
||||
"up": {"uv": [4, 5, 5, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [4, 9.5, 5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 6, 6.5],
|
||||
"to": [6.5, 10, 7.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 13.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 12, 16, 16], "texture": "#sh"},
|
||||
"east": {"uv": [15.5, 6, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 6, 6.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [2, 6, 6, 7], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 15.5, 6.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 9, 5],
|
||||
"to": [3.5, 10, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, 2, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 6, 13, 7], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 6, 11, 7], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 6, 3.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"up": {"uv": [2, 5, 3, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 9.5, 3.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 7.5, 5],
|
||||
"to": [3, 8.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 7.5, 14, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 7.5, 11, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [2, 7.5, 3, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 7.5, 6.5, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [2, 5, 3, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [2, 9.5, 3, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 6, 5],
|
||||
"to": [3.5, 7, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, -1, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12, 9, 13, 10], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9, 11, 10], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 9, 3.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [2.5, 5, 3.5, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 9.5, 3.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 5.5, 5],
|
||||
"to": [5, 6.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12, -1.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 9.5, 12, 10.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9.5, 11, 10.5], "texture": "#sh"},
|
||||
"south": {"uv": [4, 9.5, 5, 10.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9.5, 6.5, 10.5], "texture": "#sh"},
|
||||
"up": {"uv": [4, 5, 5, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [4, 9.5, 5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 6, 5],
|
||||
"to": [6.5, 7, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13.5, -1, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 9, 10, 10], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9, 11, 10], "texture": "#sh"},
|
||||
"south": {"uv": [5.5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [5, 5, 6, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [5.5, 9.5, 6.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 9, 5],
|
||||
"to": [6.5, 10, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13.5, 2, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 6, 10, 7], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 6, 11, 7], "texture": "#sh"},
|
||||
"south": {"uv": [5.5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"up": {"uv": [5, 5, 6, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [5.5, 9.5, 6.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 7.5, 5],
|
||||
"to": [7, 8.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 7.5, 10, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 7.5, 11, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [6, 7.5, 7, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 7.5, 6.5, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [6, 5, 7, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [6, 9.5, 7, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 6, 6.5],
|
||||
"to": [13.5, 10, 7.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19.5, 1, 13.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 12, 14, 16], "texture": "#sh"},
|
||||
"east": {"uv": [15.5, 6, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 6, 13.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [10, 7, 14, 8], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 15.5, 13.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12.5, 9, 5],
|
||||
"to": [13.5, 10, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [20.5, 2, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 6, 3, 7], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 6, 11, 7], "texture": "#sh"},
|
||||
"south": {"uv": [12.5, 6, 13.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"up": {"uv": [12, 5, 13, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [12.5, 9.5, 13.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 9.5, 5],
|
||||
"to": [12, 10.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19, 2.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 5.5, 5, 6.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 5.5, 11, 6.5], "texture": "#sh"},
|
||||
"south": {"uv": [11, 5.5, 12, 6.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 5.5, 6.5, 6.5], "texture": "#sh"},
|
||||
"up": {"uv": [11, 5, 12, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [11, 9.5, 12, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 9, 5],
|
||||
"to": [10.5, 10, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17.5, 2, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5, 6, 6, 7], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 6, 11, 7], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 6, 10.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"up": {"uv": [9, 5, 10, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 9.5, 10.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 7.5, 5],
|
||||
"to": [10, 8.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17, 0.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 7.5, 7, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 7.5, 11, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [9, 7.5, 10, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 7.5, 6.5, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [9, 5, 10, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [9, 9.5, 10, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 6, 5],
|
||||
"to": [10.5, 7, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17.5, -1, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5, 9, 6, 10], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9, 11, 10], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 9, 10.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [9, 5, 10, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 9.5, 10.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 5.5, 5],
|
||||
"to": [12, 6.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19, -1.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 9.5, 5, 10.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9.5, 11, 10.5], "texture": "#sh"},
|
||||
"south": {"uv": [11, 9.5, 12, 10.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9.5, 6.5, 10.5], "texture": "#sh"},
|
||||
"up": {"uv": [11, 5, 12, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [11, 9.5, 12, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12.5, 6, 5],
|
||||
"to": [13.5, 7, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [20.5, -1, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 9, 3, 10], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 9, 11, 10], "texture": "#sh"},
|
||||
"south": {"uv": [12.5, 9, 13.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [12, 5, 13, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [12.5, 9.5, 13.5, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 7.5, 5],
|
||||
"to": [14, 8.5, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [21, 0.5, 12.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 7.5, 3, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [9.5, 7.5, 11, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [13, 7.5, 14, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [5, 7.5, 6.5, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [13, 5, 14, 6.5], "texture": "#sh"},
|
||||
"down": {"uv": [13, 9.5, 14, 11], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [85, 3, -10],
|
||||
"translation": [1.75, -0.75, -2.25],
|
||||
"scale": [0.35, 0.35, 0.35]
|
||||
},
|
||||
"ground": {
|
||||
"translation": [0, -0.75, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [30, 225, 0],
|
||||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,461 @@
|
|||
{
|
||||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"t": "engineersdecor:blocks/device/small_block_breaker_top",
|
||||
"b": "engineersdecor:blocks/device/small_block_breaker_bottom",
|
||||
"l": "engineersdecor:blocks/device/small_block_breaker_left",
|
||||
"particle": "engineersdecor:blocks/device/small_block_breaker_left",
|
||||
"k": "engineersdecor:blocks/device/small_block_breaker_back",
|
||||
"r": "engineersdecor:blocks/device/small_block_breaker_right",
|
||||
"f": "engineersdecor:blocks/device/small_block_breaker_front",
|
||||
"sh": "engineersdecor:blocks/device/small_block_breaker_shaft_active"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 4],
|
||||
"to": [1, 12, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [15, 4, 16, 16], "texture": "#f"},
|
||||
"east": {"uv": [4, 0, 16, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [0, 4, 1, 16], "texture": "#k"},
|
||||
"west": {"uv": [4, 4, 16, 16], "texture": "#l"},
|
||||
"up": {"uv": [0, 4, 1, 16], "texture": "#t"},
|
||||
"down": {"uv": [0, 0, 1, 12], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 0, 4],
|
||||
"to": [16, 12, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 4, 1, 16], "texture": "#f"},
|
||||
"east": {"uv": [0, 4, 12, 16], "texture": "#r"},
|
||||
"south": {"uv": [15, 4, 16, 16], "texture": "#k"},
|
||||
"west": {"uv": [0, 0, 12, 12], "texture": "#l"},
|
||||
"up": {"uv": [15, 4, 16, 16], "texture": "#t"},
|
||||
"down": {"uv": [15, 0, 16, 12], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7.5, 4, 6],
|
||||
"to": [8.5, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15.5, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 4, 8.5, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 11, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"},
|
||||
"west": {"uv": [5, 4, 7, 12], "texture": "#f"},
|
||||
"up": {"uv": [12, 7, 13, 9], "texture": "#t"},
|
||||
"down": {"uv": [7.5, 9, 8.5, 11], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8.5, 4, 6],
|
||||
"to": [9, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [16.5, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [7, 4, 7.5, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 10, 12], "rotation": 180, "texture": "#f"},
|
||||
"south": {"uv": [8.5, 4, 9, 12], "texture": "#t"},
|
||||
"west": {"uv": [6, 4, 7, 12], "texture": "#l"},
|
||||
"up": {"uv": [8, 7, 9.5, 8], "texture": "#t"},
|
||||
"down": {"uv": [8.5, 9, 9, 10], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 4, 6],
|
||||
"to": [7.5, 12, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15, 12, -5]},
|
||||
"faces": {
|
||||
"north": {"uv": [8.5, 4, 9, 12], "texture": "#f"},
|
||||
"east": {"uv": [9, 4, 10, 12], "rotation": 180, "texture": "#l"},
|
||||
"south": {"uv": [7, 4, 7.5, 12], "texture": "#t"},
|
||||
"west": {"uv": [6, 4, 7, 12], "texture": "#f"},
|
||||
"up": {"uv": [7, 7, 7.5, 8], "texture": "#t"},
|
||||
"down": {"uv": [7, 9, 7.5, 10], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 0, 0],
|
||||
"to": [16, 5, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [23, -2, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 11, 1, 16], "texture": "#f"},
|
||||
"east": {"uv": [12, 11, 16, 16], "texture": "#r"},
|
||||
"south": {"uv": [15, 11, 16, 16], "texture": "#t"},
|
||||
"west": {"uv": [0, 11, 4, 16], "texture": "#l"},
|
||||
"up": {"uv": [15, 0, 16, 4], "texture": "#t"},
|
||||
"down": {"uv": [15, 12, 16, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [1, 5, 4],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, -2, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [15, 11, 16, 16], "texture": "#f"},
|
||||
"east": {"uv": [12, 11, 16, 16], "texture": "#l"},
|
||||
"south": {"uv": [0, 11, 1, 16], "texture": "#t"},
|
||||
"west": {"uv": [0, 11, 4, 16], "texture": "#l"},
|
||||
"up": {"uv": [0, 0, 1, 4], "texture": "#t"},
|
||||
"down": {"uv": [0, 12, 1, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 0, 0],
|
||||
"to": [15, 4, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 12, 15, 16], "texture": "#f"},
|
||||
"east": {"uv": [0, 12, 16, 16], "texture": "#l"},
|
||||
"south": {"uv": [1, 12, 15, 16], "texture": "#k"},
|
||||
"west": {"uv": [0, 12, 16, 16], "texture": "#l"},
|
||||
"up": {"uv": [1, 0, 15, 16], "texture": "#t"},
|
||||
"down": {"uv": [1, 0, 15, 16], "texture": "#b"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 4, 7],
|
||||
"to": [15, 12, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 15, 12], "texture": "#f"},
|
||||
"east": {"uv": [0, 4, 9, 12], "texture": "#l"},
|
||||
"south": {"uv": [1, 4, 15, 12], "texture": "#k"},
|
||||
"west": {"uv": [7, 4, 16, 12], "texture": "#l"},
|
||||
"up": {"uv": [1, 7, 15, 16], "texture": "#t"},
|
||||
"down": {"uv": [1, 0, 15, 9], "rotation": 270, "texture": "#l"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 9.5, -2],
|
||||
"to": [5, 10.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12, 2.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 5.5, 12, 6.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 5.5, 16, 6.5], "texture": "#sh"},
|
||||
"south": {"uv": [4, 5.5, 5, 6.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 5.5, 0, 6.5], "texture": "#sh"},
|
||||
"up": {"uv": [4, 0, 5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [4, 16, 5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 7, 0.5],
|
||||
"to": [3.5, 9, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [2.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 7, 13, 9], "texture": "#sh"},
|
||||
"east": {"uv": [9, 7, 15.5, 9], "texture": "#sh"},
|
||||
"south": {"uv": [3, 7, 3.5, 9], "texture": "#sh"},
|
||||
"west": {"uv": [1, 0, 7.5, 2], "texture": "#sh"},
|
||||
"up": {"uv": [3, 0.5, 9.5, 2], "rotation": 90, "texture": "#sh"},
|
||||
"down": {"uv": [3, 9, 3.5, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 6, -0.5],
|
||||
"to": [6.5, 10, 0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 6.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 11, 15, 15], "texture": "#sh"},
|
||||
"east": {"uv": [15.5, 6, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 6, 6.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [3, 2, 7, 2.5], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 15.5, 6.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 9, -2],
|
||||
"to": [3.5, 10, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, 2, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 6, 13.5, 7], "texture": "#sh"},
|
||||
"east": {"uv": [16, 6, 16, 7], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 6, 3.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0, 7], "texture": "#sh"},
|
||||
"up": {"uv": [3, 2, 4, 3], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 16, 3.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 7.5, -2],
|
||||
"to": [3, 8.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 7.5, 14, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 7.5, 16, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [2, 7.5, 3, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 7.5, 0, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [2, 0, 3, 0], "texture": "#sh"},
|
||||
"down": {"uv": [2, 16, 3, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2.5, 6, -2],
|
||||
"to": [3.5, 7, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, -1, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 9, 13.5, 10], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [2.5, 9, 3.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9, 0, 10], "texture": "#sh"},
|
||||
"up": {"uv": [2.5, 0, 3.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [2.5, 16, 3.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 5.5, -2],
|
||||
"to": [5, 6.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12, -1.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 9.5, 12, 10.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9.5, 16, 10.5], "texture": "#sh"},
|
||||
"south": {"uv": [4, 9.5, 5, 10.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9.5, 0, 10.5], "texture": "#sh"},
|
||||
"up": {"uv": [4, 0, 5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [4, 16, 5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 6, -2],
|
||||
"to": [6.5, 7, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13.5, -1, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 9, 10.5, 10], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [5.5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9, 0, 10], "texture": "#sh"},
|
||||
"up": {"uv": [5.5, 0, 6.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [5.5, 16, 6.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 9, -2],
|
||||
"to": [6.5, 10, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13.5, 2, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9.5, 6, 10.5, 7], "texture": "#sh"},
|
||||
"east": {"uv": [16, 6, 16, 7], "texture": "#sh"},
|
||||
"south": {"uv": [5.5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0, 7], "texture": "#sh"},
|
||||
"up": {"uv": [5.5, 0, 6.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [5.5, 16, 6.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 7.5, -2],
|
||||
"to": [7, 8.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 7.5, 10, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 7.5, 16, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [6, 7.5, 7, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 7.5, 0, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [6, 0, 7, 0], "texture": "#sh"},
|
||||
"down": {"uv": [6, 16, 7, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 7, 0.5],
|
||||
"to": [6, 9, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 7, 10.5, 9], "texture": "#sh"},
|
||||
"east": {"uv": [8, 7, 14.5, 9], "texture": "#sh"},
|
||||
"south": {"uv": [5.5, 7, 6, 9], "texture": "#sh"},
|
||||
"west": {"uv": [0.5, 7, 7, 9], "texture": "#sh"},
|
||||
"up": {"uv": [5, 2, 11.5, 2.5], "texture": "#sh"},
|
||||
"down": {"uv": [5.5, 9, 6, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3.5, 6.5, 0.5],
|
||||
"to": [5.5, 9.5, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [4.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10.5, 6.5, 12.5, 9.5], "texture": "#sh"},
|
||||
"east": {"uv": [9, 6.5, 15.5, 9.5], "texture": "#sh"},
|
||||
"south": {"uv": [3.5, 6.5, 5.5, 9.5], "texture": "#sh"},
|
||||
"west": {"uv": [0.5, 6.5, 7, 9.5], "texture": "#sh"},
|
||||
"up": {"uv": [4, 1, 11, 3.5], "rotation": 90, "texture": "#sh"},
|
||||
"down": {"uv": [3.5, 9, 5.5, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12.5, 7, 0.5],
|
||||
"to": [13, 9, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [12.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 7, 3.5, 9], "texture": "#sh"},
|
||||
"east": {"uv": [9, 7, 15.5, 9], "texture": "#sh"},
|
||||
"south": {"uv": [12.5, 7, 13, 9], "texture": "#sh"},
|
||||
"west": {"uv": [0.5, 7, 7, 9], "texture": "#sh"},
|
||||
"up": {"uv": [3, 0, 11.5, 0.5], "rotation": 90, "texture": "#sh"},
|
||||
"down": {"uv": [12.5, 9, 13, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10.5, 6.5, 0.5],
|
||||
"to": [12.5, 9.5, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [11.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [3.5, 6.5, 5.5, 9.5], "texture": "#sh"},
|
||||
"east": {"uv": [9, 6.5, 15.5, 9.5], "texture": "#sh"},
|
||||
"south": {"uv": [10.5, 6.5, 12.5, 9.5], "texture": "#sh"},
|
||||
"west": {"uv": [0.5, 6.5, 7, 9.5], "texture": "#sh"},
|
||||
"up": {"uv": [6, 0, 12, 2.5], "rotation": 90, "texture": "#sh"},
|
||||
"down": {"uv": [10.5, 9, 12.5, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10, 7, 0.5],
|
||||
"to": [10.5, 9, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [9.5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.5, 7, 6, 9], "texture": "#sh"},
|
||||
"east": {"uv": [9, 7, 15.5, 9], "texture": "#sh"},
|
||||
"south": {"uv": [10, 7, 10.5, 9], "texture": "#sh"},
|
||||
"west": {"uv": [0.5, 7, 7, 9], "texture": "#sh"},
|
||||
"up": {"uv": [10, 0.5, 15.5, 1], "rotation": 90, "texture": "#sh"},
|
||||
"down": {"uv": [10, 9, 10.5, 15.5], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 6, -0.5],
|
||||
"to": [13.5, 10, 0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19.5, 1, 6.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 12, 14, 16], "texture": "#sh"},
|
||||
"east": {"uv": [15.5, 6, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 6, 13.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0.5, 10], "texture": "#sh"},
|
||||
"up": {"uv": [9.5, 0, 13.5, 0.5], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 15.5, 13.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12.5, 9, -2],
|
||||
"to": [13.5, 10, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [20.5, 2, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 6, 3.5, 7], "texture": "#sh"},
|
||||
"east": {"uv": [16, 6, 16, 7], "texture": "#sh"},
|
||||
"south": {"uv": [12.5, 6, 13.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0, 7], "texture": "#sh"},
|
||||
"up": {"uv": [12.5, 0, 13.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [12.5, 16, 13.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 9.5, -2],
|
||||
"to": [12, 10.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19, 2.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 5.5, 5, 6.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 5.5, 16, 6.5], "texture": "#sh"},
|
||||
"south": {"uv": [11, 5.5, 12, 6.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 5.5, 0, 6.5], "texture": "#sh"},
|
||||
"up": {"uv": [11, 0, 12, 0], "texture": "#sh"},
|
||||
"down": {"uv": [11, 16, 12, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 9, -2],
|
||||
"to": [10.5, 10, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17.5, 2, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.5, 6, 6.5, 7], "texture": "#sh"},
|
||||
"east": {"uv": [16, 6, 16, 7], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 6, 10.5, 7], "texture": "#sh"},
|
||||
"west": {"uv": [0, 6, 0, 7], "texture": "#sh"},
|
||||
"up": {"uv": [9.5, 0, 10.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 16, 10.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 7.5, -2],
|
||||
"to": [10, 8.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17, 0.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 7.5, 7, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 7.5, 16, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [9, 7.5, 10, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 7.5, 0, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [9, 0, 10, 0], "texture": "#sh"},
|
||||
"down": {"uv": [9, 16, 10, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9.5, 6, -2],
|
||||
"to": [10.5, 7, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [17.5, -1, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.5, 9, 6.5, 10], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [9.5, 9, 10.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9, 0, 10], "texture": "#sh"},
|
||||
"up": {"uv": [9.5, 0, 10.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [9.5, 16, 10.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 5.5, -2],
|
||||
"to": [12, 6.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [19, -1.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 9.5, 5, 10.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9.5, 16, 10.5], "texture": "#sh"},
|
||||
"south": {"uv": [11, 9.5, 12, 10.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9.5, 0, 10.5], "texture": "#sh"},
|
||||
"up": {"uv": [11, 0, 12, 0], "texture": "#sh"},
|
||||
"down": {"uv": [11, 16, 12, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12.5, 6, -2],
|
||||
"to": [13.5, 7, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [20.5, -1, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 9, 3.5, 10], "texture": "#sh"},
|
||||
"east": {"uv": [16, 9, 16, 10], "texture": "#sh"},
|
||||
"south": {"uv": [12.5, 9, 13.5, 10], "texture": "#sh"},
|
||||
"west": {"uv": [0, 9, 0, 10], "texture": "#sh"},
|
||||
"up": {"uv": [12.5, 0, 13.5, 0], "texture": "#sh"},
|
||||
"down": {"uv": [12.5, 16, 13.5, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 7.5, -2],
|
||||
"to": [14, 8.5, -0.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [21, 0.5, 5.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 7.5, 3, 8.5], "texture": "#sh"},
|
||||
"east": {"uv": [16, 7.5, 16, 8.5], "texture": "#sh"},
|
||||
"south": {"uv": [13, 7.5, 14, 8.5], "texture": "#sh"},
|
||||
"west": {"uv": [0, 7.5, 0, 8.5], "texture": "#sh"},
|
||||
"up": {"uv": [13, 0, 14, 0], "texture": "#sh"},
|
||||
"down": {"uv": [13, 16, 14, 16], "rotation": 270, "texture": "#sh"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [85, 3, -10],
|
||||
"translation": [1.75, -0.75, -2.25],
|
||||
"scale": [0.35, 0.35, 0.35]
|
||||
},
|
||||
"ground": {
|
||||
"translation": [0, -0.75, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [30, 225, 0],
|
||||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"fixed": {
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:small_block_breaker",
|
||||
"missing": ["immersiveengineering:material"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"PPP",
|
||||
"PAO",
|
||||
"PRP"
|
||||
],
|
||||
"key": {
|
||||
"O": {
|
||||
"item": "minecraft:observer",
|
||||
"data": 0
|
||||
},
|
||||
"P": {
|
||||
"item": "#ingotIron",
|
||||
"data": 0
|
||||
},
|
||||
"A": {
|
||||
"item": "minecraft:iron_pickaxe",
|
||||
"data": 0
|
||||
},
|
||||
"R": {
|
||||
"item": "minecraft:redstone_block",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:small_block_breaker",
|
||||
"count": 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:small_block_breaker",
|
||||
"required": ["immersiveengineering:material"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"PPP",
|
||||
"PAO",
|
||||
"CRC"
|
||||
],
|
||||
"key": {
|
||||
"O": {
|
||||
"item": "minecraft:observer",
|
||||
"data": 0
|
||||
},
|
||||
"P": {
|
||||
"item": "#plateAnyFerroMetal",
|
||||
"data": 0
|
||||
},
|
||||
"A": {
|
||||
"item": "minecraft:iron_pickaxe",
|
||||
"data": 0
|
||||
},
|
||||
"R": {
|
||||
"item": "minecraft:redstone_block",
|
||||
"data": 0
|
||||
},
|
||||
"C": {
|
||||
"item": "#anyMechanicalComponent",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:small_block_breaker",
|
||||
"count": 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 573 B |
After Width: | Height: | Size: 543 B |
After Width: | Height: | Size: 450 B |
After Width: | Height: | Size: 489 B |
After Width: | Height: | Size: 488 B |
After Width: | Height: | Size: 423 B |
After Width: | Height: | Size: 672 B |
|
@ -0,0 +1 @@
|
|||
{ "animation":{ "frames": [0,1], "frametime":2, "interpolate":false }}
|
After Width: | Height: | Size: 388 B |