diff --git a/1.12/meta/update.json b/1.12/meta/update.json index e45dcff..b4597d6 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,7 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { - "1.0.19": "[R] Release based on v1.0.19-b4. Release-to-release changes: * Transfer fixes for Tree Cutter / Block Braker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements\n[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.", + "1.0.19": "[R] Release based on v1.0.19-b4. Release-to-release changes: * Transfer fixes for Tree Cutter / Block Breaker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements\n[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.", "1.0.19-b4": "[A] Creative tab opt-out visibility handling added (issue #90, thx pimalel233).", "1.0.19-b3": "[A] Factory Hopper: Added bottom item handler (CR#227).", "1.0.19-b2": "[F] Fixed Floor Grating item pass-through jitters (thx Cid).\n[M] Removed obsolete recipe collision testing recipes.", diff --git a/1.12/readme.md b/1.12/readme.md index 88d7855..768a266 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -14,7 +14,7 @@ Mod sources for Minecraft version 1.12.2. ------------------------------------------------------------------- - v1.0.19 [R] Release based on v1.0.19-b4. Release-to-release changes: - * Transfer fixes for Tree Cutter / Block Braker, and Factory hopper. + * Transfer fixes for Tree Cutter / Block Breaker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements ------------------------------------------------------------------- diff --git a/1.14/build.gradle b/1.14/build.gradle index e6bc918..84516e9 100644 --- a/1.14/build.gradle +++ b/1.14/build.gradle @@ -30,7 +30,7 @@ minecraft { runs { client { workingDirectory project.file('run') - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + property 'forge.logging.markers', '' property 'forge.logging.console.level', 'debug' mods { engineersdecor { @@ -40,7 +40,7 @@ minecraft { } server { workingDirectory project.file('run') - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + property 'forge.logging.markers', '' property 'forge.logging.console.level', 'debug' mods { engineersdecor { @@ -50,7 +50,7 @@ minecraft { } data { workingDirectory project.file('run') - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + property 'forge.logging.markers', '' property 'forge.logging.console.level', 'debug' args '--mod', 'engineersdecor', '--all', '--output', file('src/generated/resources/') mods { diff --git a/1.14/gradle.properties b/1.14/gradle.properties index 5b8ec40..65ce632 100644 --- a/1.14/gradle.properties +++ b/1.14/gradle.properties @@ -2,7 +2,7 @@ org.gradle.daemon=false org.gradle.jvmargs=-Xmx8G version_minecraft=1.14.4 -version_forge_minecraft=1.14.4-28.2.2 +version_forge_minecraft=1.14.4-28.2.3 version_fml_mappings=20190719-1.14.3 version_jei=1.14.4:6.0.0.10 -version_engineersdecor=1.0.19-b5 +version_engineersdecor=1.0.20-b1 diff --git a/1.14/meta/update.json b/1.14/meta/update.json index 6cf3cab..4ada76c 100644 --- a/1.14/meta/update.json +++ b/1.14/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.14.4": { + "1.0.20-b1": "[A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption increases at higher rate (off, 100%, 200%, 400%).\n[A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence).\n[M] Waste Incinerator processing speed tweaked.", "1.0.19-b5": "[A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter.\n[A] Solar Panel power curve tuned.\n[A] Mod manual 1st edition release recipe added.\n[A] Factory Hopper: Resetting NBT when breaking with empty inventory (for stacking), enabled item cap for all sides.\n[M] Electrical Furnace model polished.", "1.0.19-b4": "[A] Ported primary Immersive Engineering dependent recipes (alternative recipes will still work if IE is not installed).\n[M] Furni comparator output overrides reflect input slots and empty fuel state/power-cutoff.\n[M] Solar Panel config: Default value for internal battery capacity increased.\n[F] Block Placer: Shifted GUI player slots 1px to the right.\n[A] Added mod block tags for slabs, stairs, and walls (PR#89, thanks CrudeAustin for the data).\n[A] Added experimental Patchouli manual (creative only).\n[!] Skipped blacklisting Treated Wood Crafting Table slots for the inventorysorter mod due to potential startup crashes for single player games (issue #88 fix deferred).", "1.0.19-b3": "[M] Config tweaks: Value limit ranges increased to facilitate modpacking.\n[A] Factory Hopper: Added bottom item handler (CR#227).\n[M] Block shapes refined.\n[F] Fixed duping bug (issue #87, thx Nachtflame)", @@ -49,6 +50,6 @@ }, "promos": { "1.14.4-recommended": "", - "1.14.4-latest": "1.0.19-b5" + "1.14.4-latest": "1.0.20-b1" } } \ No newline at end of file diff --git a/1.14/readme.md b/1.14/readme.md index 78ca600..3366fbf 100644 --- a/1.14/readme.md +++ b/1.14/readme.md @@ -11,6 +11,11 @@ Mod sources for Minecraft version 1.14.4. ## Version history + - v1.0.20-b1 [A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption + increases at higher rate (off, 100%, 200%, 400%). + [A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence). + [M] Waste Incinerator processing speed tweaked. + - v1.0.19-b5 [A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter. [A] Solar Panel power curve tuned. [A] Mod manual 1st edition release recipe added. diff --git a/1.14/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled b/1.14/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled deleted file mode 100644 index 83ff933..0000000 --- a/1.14/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled +++ /dev/null @@ -1,18 +0,0 @@ -/* - * BluSunrize - * Copyright (c) 2017 - * - * This code is licensed under "Blu's License of Common Sense" - * Details can be found in the license file in the root folder of this project - */ - -package blusunrize.immersiveengineering.api.fluid; - -import net.minecraft.util.Direction; - -public interface IFluidPipe -{ - boolean canOutputPressurized(boolean consumePower); - - boolean hasOutputConnection(Direction side); -} diff --git a/1.14/src/main/java/wile/engineersdecor/ModContent.java b/1.14/src/main/java/wile/engineersdecor/ModContent.java index d8cefdd..3b648d5 100644 --- a/1.14/src/main/java/wile/engineersdecor/ModContent.java +++ b/1.14/src/main/java/wile/engineersdecor/ModContent.java @@ -267,7 +267,7 @@ public class ModContent public static final BlockDecor.WaterLoggable STEEL_TABLE = (BlockDecor.WaterLoggable)(new BlockDecor.WaterLoggable( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_table")); @@ -637,6 +637,12 @@ public class ModContent 1.5, 16, 0.25, 0, 16 )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence")); + public static final BlockDecorDoubleGate STEEL_MESH_FENCE_GATE = (BlockDecorDoubleGate)(new BlockDecorDoubleGate( + BlockDecor.CFG_CUTOUT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + Auxiliaries.getPixeledAABB(0,0,6.5, 16,16,9.5) + )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence_gate")); + // ------------------------------------------------------------------------------------------------------------------- public static final BlockDecorTest TEST_BLOCK = (BlockDecorTest)(new BlockDecorTest( @@ -714,6 +720,7 @@ public class ModContent FLOOR_EDGE_LIGHT_IRON, STEEL_FLOOR_GRATING, STEEL_MESH_FENCE, + STEEL_MESH_FENCE_GATE, TREATED_WOOD_POLE, TREATED_WOOD_POLE_HEAD, TREATED_WOOD_POLE_SUPPORT, diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java new file mode 100644 index 0000000..989fb7a --- /dev/null +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java @@ -0,0 +1,158 @@ +/* + * @file BlockDecorDoubleGate.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Gate blocks that can be one or two segments high. + */ +package wile.engineersdecor.blocks; + +import wile.engineersdecor.libmc.detail.Auxiliaries; +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.Direction; +import net.minecraft.util.Hand; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; +import net.minecraft.pathfinding.PathType; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; + +public class BlockDecorDoubleGate extends BlockDecor.HorizontalWaterLoggable implements IDecorBlock +{ + public static final IntegerProperty SEGMENT = IntegerProperty.create("segment", 0, 1); + public static final BooleanProperty OPEN = FenceGateBlock.OPEN; + public static final int SEGMENT_LOWER = 0; + public static final int SEGMENT_UPPER = 1; + protected final ArrayList collision_shapes_; + + public BlockDecorDoubleGate(long config, Block.Properties properties, AxisAlignedBB aabb) + { this(config, properties, new AxisAlignedBB[]{aabb}); } + + public BlockDecorDoubleGate(long config, Block.Properties properties, AxisAlignedBB[] aabbs) + { + super(config, properties, aabbs); + AxisAlignedBB[] caabbs = new AxisAlignedBB[aabbs.length]; + for(int i=0; i(Arrays.asList( + VoxelShapes.fullCube(), + VoxelShapes.fullCube(), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.NORTH, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.SOUTH, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.WEST, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.EAST, true)), + VoxelShapes.fullCube(), + VoxelShapes.fullCube() + )); + } + + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext selectionContext) + { return state.get(OPEN) ? VoxelShapes.empty() : collision_shapes_.get(state.get(HORIZONTAL_FACING).getIndex() & 0x7); } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); builder.add(SEGMENT).add(OPEN); } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { return getInitialState(super.getStateForPlacement(context), context.getWorld(), context.getPos()); } + + @Override + @SuppressWarnings("deprecation") + public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld world, BlockPos pos, BlockPos facingPos) + { return getInitialState(super.updatePostPlacement(state, facing, facingState, world, pos, facingPos), world, pos); } + + @Override + @SuppressWarnings("deprecation") + public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + { + if((rayTraceResult.getFace()==Direction.UP) || (rayTraceResult.getFace()==Direction.DOWN) && (player.getHeldItem(hand).getItem()==this.asItem())) return false; + if(world.isRemote) return true; + final boolean open = !state.get(OPEN); + world.setBlockState(pos, state.with(OPEN, open),2|8|16); + if(state.get(SEGMENT) == SEGMENT_UPPER) { + final BlockState adjacent = world.getBlockState(pos.down()); + if(adjacent.getBlock()==this) world.setBlockState(pos.down(), adjacent.with(OPEN, open), 2|8|16); + } else { + final BlockState adjacent = world.getBlockState(pos.up()); + if(adjacent.getBlock()==this) world.setBlockState(pos.up(), adjacent.with(OPEN, open), 2|8|16); + } + world.playSound(null, pos, open?SoundEvents.BLOCK_IRON_DOOR_OPEN:SoundEvents.BLOCK_IRON_DOOR_CLOSE, SoundCategory.BLOCKS, 0.7f, 1.4f); + return true; + } + + @Override + @SuppressWarnings("deprecation") + public boolean allowsMovement(BlockState state, IBlockReader world, BlockPos pos, PathType type) + { return state.get(OPEN); } + + @Override + @SuppressWarnings("deprecation") + public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) + { + if(world.isRemote) return; + boolean powered = false; + BlockState adjacent; + BlockPos adjacent_pos; + if(state.get(SEGMENT) == SEGMENT_UPPER) { + adjacent_pos = pos.down(); + adjacent = world.getBlockState(adjacent_pos); + if(adjacent.getBlock()!=this) adjacent = null; + if(world.getRedstonePower(pos.up(), Direction.UP) > 0) { + powered = true; + } else if((adjacent!=null) && (world.isBlockPowered(pos.down(2)))) { + powered = true; + } + } else { + adjacent_pos = pos.up(); + adjacent = world.getBlockState(adjacent_pos); + if(adjacent.getBlock()!=this) adjacent = null; + if(world.isBlockPowered(pos)) { + powered = true; + } else if((adjacent!=null) && (world.getRedstonePower(pos.up(2), Direction.UP) > 0)) { + powered = true; + } + } + boolean sound = false; + if(powered != state.get(OPEN)) { + world.setBlockState(pos, state.with(OPEN, powered), 2|8|16); + sound = true; + } + if((adjacent != null) && (powered != adjacent.get(OPEN))) { + world.setBlockState(adjacent_pos, adjacent.with(OPEN, powered), 2|8|16); + sound = true; + } + if(sound) { + world.playSound(null, pos, powered?SoundEvents.BLOCK_IRON_DOOR_OPEN:SoundEvents.BLOCK_IRON_DOOR_CLOSE, SoundCategory.BLOCKS, 0.7f, 1.4f); + } + } + + // ------------------------------------------------------------------------------------------------------------------- + + private BlockState getInitialState(BlockState state, IWorld world, BlockPos pos) + { + final BlockState down = world.getBlockState(pos.down()); + if(down.getBlock() == this) return state.with(SEGMENT, SEGMENT_UPPER).with(OPEN, down.get(OPEN)).with(HORIZONTAL_FACING, down.get(HORIZONTAL_FACING)); + final BlockState up = world.getBlockState(pos.up()); + if(up.getBlock() == this) return state.with(SEGMENT, SEGMENT_LOWER).with(OPEN, up.get(OPEN)).with(HORIZONTAL_FACING, up.get(HORIZONTAL_FACING)); + return state.with(SEGMENT, SEGMENT_LOWER).with(OPEN, false); + } + +} diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java index 1c0d8ed..d6dd43f 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java @@ -8,6 +8,9 @@ */ package wile.engineersdecor.blocks; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorldReader; import wile.engineersdecor.libmc.blocks.StandardFenceBlock; import net.minecraft.block.*; @@ -18,4 +21,9 @@ public class BlockDecorFence extends StandardFenceBlock implements IDecorBlock public BlockDecorFence(long config, Block.Properties properties, double pole_width, double pole_height, double side_width, double side_max_y, double side_min_y) { super(config, properties, pole_width, pole_height, side_width, side_max_y, side_min_y); } + + @Override + protected boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) + { return ((facingState.getBlock()) instanceof BlockDecorDoubleGate) || super.attachesTo(facingState, world, facingPos, side); } + } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java index a9a3c24..5b19c34 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java @@ -113,7 +113,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID public static final int FIFO_INTERVAL = 20; public static final int HEAT_CAPACITY = 200; public static final int HEAT_INCREMENT = 20; - public static final int MAX_ENERGY_TRANSFER = 256; + public static final int MAX_ENERGY_TRANSFER = 1024; public static final int MAX_ENERGY_BUFFER = 32000; public static final int MAX_SPEED_SETTING = 2; public static final int NUM_OF_SLOTS = 7; @@ -134,6 +134,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID private static int energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION; private static int transfer_energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION / 8; private static int proc_speed_percent_ = DEFAULT_SPEED_PERCENT; + private static double speed_setting_factor_[] = {0.0, 1.0, 1.5, 2.0}; public static void on_config(int speed_percent, int standard_energy_per_tick, boolean with_automatic_inventory_pulling) { @@ -146,15 +147,16 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID // BTileEntity ----------------------------------------------------------------------------- - private int burntime_left_; - private int proc_time_elapsed_; - private int proc_time_needed_; - private int energy_stored_; - private int field_max_energy_stored_; - private int field_isburning_; - private int speed_; - private int tick_timer_; - private int fifo_timer_; + private int burntime_left_ = 0; + private int proc_time_elapsed_ = 0; + private int proc_time_needed_ = 0; + private int energy_stored_ = 0; + private int field_max_energy_stored_ = 0; + private int field_isburning_ = 0; + private int speed_ = 1; + private int tick_timer_ = 0; + private int fifo_timer_ = 0; + private boolean enabled_ = false; public BTileEntity() { this(ModContent.TET_SMALL_ELECTRICAL_FURNACE); } @@ -186,6 +188,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID proc_time_needed_ = nbt.getInt("CookTimeTotal"); energy_stored_ = nbt.getInt("Energy"); speed_ = nbt.getInt("SpeedSetting"); + speed_ = (speed_ < 0) ? (1) : ((speed_>3) ? 3 : speed_); } protected void writenbt(CompoundNBT nbt) @@ -469,7 +472,12 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID 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_)) { + if(energy_stored_ < energy_consumption()) { + enabled_ = false; + } else if(energy_stored_ >= (MAX_ENERGY_BUFFER/2)) { + enabled_ = true; + } + if((!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty()) && (enabled_) && (speed_>0) && (speed_<4)) { IRecipe last_recipe = currentRecipe(); updateCurrentRecipe(); if(currentRecipe() != last_recipe) { @@ -487,7 +495,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID } if(burning() && can_smelt) { if(heat_up()) dirty = true; - proc_time_elapsed_ += (TICK_INTERVAL * proc_speed_percent_/100); + proc_time_elapsed_ += (int)(TICK_INTERVAL * proc_speed_percent_ * speed_setting_factor_[speed_] / 100); if(proc_time_elapsed_ >= proc_time_needed_) { proc_time_elapsed_ = 0; proc_time_needed_ = getSmeltingTimeNeeded(world, stacks_.get(SMELTING_INPUT_SLOT_NO)); @@ -511,7 +519,6 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID if(dirty) markDirty(); field_max_energy_stored_ = getMaxEnergyStored(); field_isburning_ = burning() ? 1 : 0; - //if(this.energy_stored_ < this.getMaxEnergyStored() / 5) this.energy_stored_ = this.getMaxEnergyStored(); } // Furnace -------------------------------------------------------------------------------------- @@ -597,15 +604,25 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID return dirty; } - // returns TE dirty + int energy_consumption() + { + switch(speed_) { + case 1: return energy_consumption_; + case 2: return energy_consumption_ * 2; + case 3: return energy_consumption_ * 4; + default: return 0; + } + } + private boolean heat_up() { - if(energy_stored_ < (energy_consumption_)) return false; + int p = energy_consumption(); + if((p<=0) || (energy_stored_ < p)) return false; if(burntime_left_ >= (HEAT_CAPACITY-HEAT_INCREMENT)) return false; - energy_stored_ -= energy_consumption_; + energy_stored_ -= p; burntime_left_ += HEAT_INCREMENT; this.markDirty(); - return true; + return true; // returns TE dirty } private void sync_blockstate() @@ -731,7 +748,12 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID @Override public void onClientPacketReceived(int windowId, PlayerEntity player, CompoundNBT nbt) - {} + { + if(!(inventory_ instanceof BTileEntity)) return; + BTileEntity te = (BTileEntity)inventory_; + if(nbt.contains("speed")) te.speed_ = MathHelper.clamp(nbt.getInt("speed"), 0, 3); + te.markDirty(); + } } //-------------------------------------------------------------------------------------------------------------------- @@ -773,6 +795,32 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID blit(x0+79, y0+30, 176, 15, 1+progress_px(17), 15); int we = energy_px(32, 8); if(we>0) blit(x0+88, y0+53, 185, 30, we, 13); + switch(getContainer().field(4)) { + case 0: blit(x0+144, y0+57, 180, 57, 6, 9); break; + case 1: blit(x0+142, y0+58, 190, 58, 9, 6); break; + case 2: blit(x0+144, y0+56, 200, 57, 6, 9); break; + case 3: blit(x0+143, y0+58, 210, 58, 9, 6); break; + default: break; + } + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) + { + BContainer container = (BContainer)getContainer(); + int mx = (int)(mouseX - getGuiLeft() + .5), my = (int)(mouseY - getGuiTop() + .5); + if((!isPointInRegion(136, 48, 28, 28, mouseX, mouseY))) { + return super.mouseClicked(mouseX, mouseY, mouseButton); + } else if(isPointInRegion(144, 64, 6, 10, mouseX, mouseY)) { + container.onGuiAction("speed", 0); + } else if(isPointInRegion(134, 58, 10, 6, mouseX, mouseY)) { + container.onGuiAction("speed", 1); + } else if(isPointInRegion(144, 48, 6, 10, mouseX, mouseY)) { + container.onGuiAction("speed", 2); + } else if(isPointInRegion(150, 58, 10, 6, mouseX, mouseY)) { + container.onGuiAction("speed", 3); + } + return true; } private int progress_px(int pixels) diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java index 99241fa..ab26c07 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java @@ -8,6 +8,8 @@ */ package wile.engineersdecor.blocks; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShapes; import wile.engineersdecor.ModContent; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.libmc.blocks.StandardBlocks; @@ -64,6 +66,10 @@ public class BlockDecorHopper extends StandardBlocks.Directed implements IDecorB public boolean hasComparatorInputOverride(BlockState state) { return true; } + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) + { return VoxelShapes.fullCube(); } + @Override @SuppressWarnings("deprecation") public int getComparatorInputOverride(BlockState blockState, World world, BlockPos pos) diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java index 571b611..506a9a6 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java @@ -1,5 +1,5 @@ /* - * @file BlockDecorDirected.java + * @file BlockDecorSolarPanel.java * @author Stefan Wilhelm (wile) * @copyright (C) 2019 Stefan Wilhelm * @license MIT (see https://opensource.org/licenses/MIT) diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java index d7b0f31..ef33f97 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java @@ -168,6 +168,7 @@ public class BlockDecorWasteIncinerator extends StandardBlocks.BaseBlock impleme public static final int NUM_OF_FIELDS = 1; public static final int TICK_INTERVAL = 20; public static final int ENERGIZED_TICK_INTERVAL = 5; + public static final int INCINERATION_STACK_DECREMENT = 4; public static final int MAX_ENERGY_BUFFER = 16000; public static final int MAX_ENERGY_TRANSFER = 256; public static final int DEFAULT_ENERGY_CONSUMPTION = 16; @@ -192,7 +193,6 @@ public class BlockDecorWasteIncinerator extends StandardBlocks.BaseBlock impleme private int energy_stored_; protected NonNullList stacks_ = NonNullList.withSize(NUM_OF_SLOTS, ItemStack.EMPTY); - public BTileEntity() { this(ModContent.TET_WASTE_INCINERATOR); } @@ -505,7 +505,7 @@ public class BlockDecorWasteIncinerator extends StandardBlocks.BaseBlock impleme ItemStack first_stack = stacks_.get(0); boolean shift = !first_stack.isEmpty(); if(is_processing) { - processing_stack.shrink(1); + processing_stack.shrink(INCINERATION_STACK_DECREMENT); if(processing_stack.getCount() <= 0) { processing_stack = ItemStack.EMPTY; is_processing = false; @@ -518,22 +518,11 @@ public class BlockDecorWasteIncinerator extends StandardBlocks.BaseBlock impleme dirty = true; } if(shift) { - int max_shift_slot_no = BURN_SLOT_NO-1; - for(int i=1; i0; --i) { + transferred |= transferItems(i-1, i, getInventoryStackLimit()); + } + if((!is_processing) && (!transferred)) { shiftStacks(0, BURN_SLOT_NO); dirty = true; } diff --git a/1.14/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java b/1.14/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java index 3795ea0..b85af60 100644 --- a/1.14/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java +++ b/1.14/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java @@ -94,7 +94,7 @@ public class StandardFenceBlock extends WallBlock implements StandardBlocks.ISta protected void fillStateContainer(StateContainer.Builder builder) { super.fillStateContainer(builder); } - private boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) + protected boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) { final Block block = facingState.getBlock(); if((block instanceof FenceGateBlock) || (block instanceof StandardFenceBlock) || (block instanceof VariantWallBlock)) return true; diff --git a/1.14/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java b/1.14/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java index d25e21e..a1f5812 100644 --- a/1.14/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java +++ b/1.14/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java @@ -58,10 +58,13 @@ public class LootTableGen extends LootTableProvider final List blocks = block_listing.get(); blocks.forEach((block)->{ if((!(block instanceof StandardBlocks.IStandardBlock)) || (!(((StandardBlocks.IStandardBlock)block).hasDynamicDropList()))) { + System.out.println("Generating loot table for " + block.getRegistryName()); tables.put( block.getLootTable(), defaultBlockDrops(block.getRegistryName().getPath() + "_dlt", block) .setParameterSet(LootParameterSets.BLOCK).build()); + } else { + System.out.println("Dynamic drop list, skipping loot table for " + block.getRegistryName()); } }); return tables; diff --git a/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json b/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json new file mode 100644 index 0000000..65d6a4f --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json @@ -0,0 +1,21 @@ +{ + "variants": { + "facing=north,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" }, + "facing=north,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open" }, + "facing=south,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":180 }, + "facing=south,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":180 }, + "facing=west,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":270 }, + "facing=west,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":270 }, + "facing=east,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":90 }, + "facing=east,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":90 }, + + "facing=north,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" }, + "facing=north,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open" }, + "facing=south,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":180 }, + "facing=south,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":180 }, + "facing=west,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":270 }, + "facing=west,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":270 }, + "facing=east,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":90 }, + "facing=east,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":90 } + } +} diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json b/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json index 4f0424a..13ef2b5 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6Steel framed triple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes.", "block.engineersdecor.steel_mesh_fence": "Steel Mesh Fence", "block.engineersdecor.steel_mesh_fence.help": "§6Industrial style fence.§r\nDoes not connect do regular fences.", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "Small Laboratory Furnace", "block.engineersdecor.small_lab_furnace.help": "§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. Slightly hotter and better isolated than a cobblestone furnace, therefore more efficient. Two auxiliary slots e.g. for storage. Two stack internal hopper fifos for input, output, and fuel. Place an external heater into a aux slot and connect power for electrical smelting speed boost.", "block.engineersdecor.small_electrical_furnace": "Small Electrical Furnace", diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json b/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json index 9311f87..980e8b3 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6Стальной каркас окна с тройным остеклением. Хорошо изолирует. §r Не подключается к смежным блокам, таким как стеклянные панели.", "block.engineersdecor.steel_mesh_fence": "Забор из стальной сетки", "block.engineersdecor.steel_mesh_fence.help": "§6Забор в индустриальном стиле.§r\nНе стыкуется с обычными заборами.", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "Компактная лабораторная печь", "block.engineersdecor.small_lab_furnace.help": "§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива сверху. Немного горячее и изолированней каменной, поэтому быстрее. Два вспомогательных слота, например для хранения. Два слота-воронки для ввода, вывода, и топлива. Поместите внешний нагреватель в слот AUX и подключите питание для электрического повышения скорости обработки.", "block.engineersdecor.small_electrical_furnace": "Компактная конвейерная электрическая печь", diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json b/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json index ca27c1e..4a99805 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6钢框三层玻璃窗。绝缘良好。§r不像玻璃板一样连接到相邻方块。", "block.engineersdecor.steel_mesh_fence": "钢丝栅栏", "block.engineersdecor.steel_mesh_fence.help": "§6工业式栅栏。§r\n不与普通栅栏连接。", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "小型实验室炉", "block.engineersdecor.small_lab_furnace.help": "§6小型金属壳实验室窑。§r消耗固体燃料,向上排气。 比圆石炉稍微热一点,隔热性也更好,因此效率更高。 有两个用于储存的辅助格。两个堆叠的内部漏斗对输入、输出和燃料进行队列管理。 在辅助格放置一个外置加热器并通入电力可以加快熔炼速度。", "block.engineersdecor.small_electrical_furnace": "小型电炉", diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json new file mode 100644 index 0000000..eb1db96 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json @@ -0,0 +1,267 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [3.125, 13.625, 9.4375], + "to": [12.8125, 13.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "south": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 9.625, 9.4375], + "to": [12.8125, 9.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "south": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 5.625, 9.4375], + "to": [12.8125, 5.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "south": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 1.625, 9.4375], + "to": [12.8125, 1.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "east": {"uv": [8, 14.02, 8.1875, 14.375], "texture": "#s"}, + "south": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "west": {"uv": [7.8125, 14.02, 8, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 11.625, 9.625], + "to": [12.8125, 11.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "south": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 12.625, 9.875], + "to": [5.3125, 13.23, 10.1875], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 9.5, 10]}, + "faces": { + "north": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "east": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "south": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "west": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 90, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 12.625, 9], + "to": [5.3125, 13.23, 9.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 9.5, 9.125]}, + "faces": { + "north": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "east": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "south": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "west": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 90, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 7.625, 9.625], + "to": [12.9375, 7.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "south": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 3.625, 9.625], + "to": [12.9375, 3.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "south": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 9.25], + "to": [13, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.75, 15, 9.25], + "to": [12.25, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.75, 1, 9.25], + "to": [12.25, 2, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, -5.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3, 1, 9.25], + "to": [3.75, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "south": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [11.75, 1.375, 9.5], + "to": [12.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [7.75, 1.375, 9.5], + "to": [8.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [3.75, 1.375, 9.5], + "to": [4.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [9.75, 1.375, 9.5], + "to": [10.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [5.75, 1.375, 9.5], + "to": [6.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json new file mode 100644 index 0000000..43688c4 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json @@ -0,0 +1,267 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [12.625, 13.625, 0.125], + "to": [12.8125, 13.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "west": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 9.625, 0.125], + "to": [12.8125, 9.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "west": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 5.625, 0.125], + "to": [12.8125, 5.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "west": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 1.625, 0.125], + "to": [12.8125, 1.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.8125, 14.02, 8, 14.375], "texture": "#s"}, + "east": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "south": {"uv": [8, 14.02, 8.1875, 14.375], "texture": "#s"}, + "west": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 11.625, 0.125], + "to": [12.625, 11.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "west": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.0625, 12.625, 0.125], + "to": [12.375, 13.23, 2.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "east": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "south": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "west": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 180, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.9375, 12.625, 0.125], + "to": [13.25, 13.23, 2.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "east": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "south": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "west": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 180, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 7.625, 0.5], + "to": [12.625, 7.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "west": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 3.625, 0.5], + "to": [12.625, 3.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "west": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 9.25], + "to": [13, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 15, 0.75], + "to": [13, 16, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 0.75], + "to": [13, 2, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 0], + "to": [13, 16, 0.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [12.5, 1.375, 8.75], + "to": [12.75, 15.855, 9.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 4.75], + "to": [12.75, 15.855, 5.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 0.75], + "to": [12.75, 15.855, 1.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 6.75], + "to": [12.75, 15.855, 7.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 2.75], + "to": [12.75, 15.855, 3.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json new file mode 100644 index 0000000..6f09fa8 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json @@ -0,0 +1,319 @@ +{ + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence", + "t": "engineersdecor:block/fence/steel_mesh_top" + }, + "elements": [ + { + "from": [7.5, 0, 3], + "to": [8.5, 16, 4], + "faces": { + "north": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "east": {"uv": [12, 0, 13, 16], "texture": "#s"}, + "south": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "west": {"uv": [3, 0, 4, 16], "texture": "#s"}, + "up": {"uv": [7.5, 3, 8.5, 4], "texture": "#t"}, + "down": {"uv": [7.5, 12, 8.5, 13], "texture": "#s"} + } + }, + { + "from": [7.5, 0, 12], + "to": [8.5, 16, 13], + "faces": { + "north": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "east": {"uv": [3, 0, 4, 16], "texture": "#s"}, + "south": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "west": {"uv": [12, 0, 13, 16], "texture": "#s"}, + "up": {"uv": [7.5, 12, 8.5, 13], "texture": "#t"}, + "down": {"uv": [7.5, 3, 8.5, 4], "texture": "#s"} + } + }, + { + "from": [7.5, 15, 4], + "to": [8.5, 16, 12], + "faces": { + "east": {"uv": [4, 0, 12, 1], "texture": "#s"}, + "west": {"uv": [4, 0, 12, 1], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"}, + "down": {"uv": [7.5, 4, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [7.5, 7, 4], + "to": [8.5, 9, 5], + "faces": { + "east": {"uv": [11, 7, 12, 9], "texture": "#s"}, + "south": {"uv": [7.5, 7, 8.5, 9], "texture": "#s"}, + "west": {"uv": [4, 7, 5, 9], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 5], "texture": "#t"}, + "down": {"uv": [7.5, 11, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [7.5, 0, 4], + "to": [8.5, 0.5, 12], + "faces": { + "east": {"uv": [4, 15.5, 12, 16], "texture": "#s"}, + "west": {"uv": [4, 15.5, 12, 16], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"}, + "down": {"uv": [7.5, 4, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [8, 4.125, 3.5], + "to": [8.125, 4.5, 12.5], + "faces": { + "east": {"uv": [3.5, 11.5, 12.5, 11.875], "texture": "#s"}, + "west": {"uv": [3.5, 11.5, 12.5, 11.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 5.8125], + "to": [8.05, 15.375, 6.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [9.8125, 0.625, 10.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [5.8125, 0.625, 6.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 8.125, 3.5], + "to": [8.125, 8.5, 12.5], + "faces": { + "east": {"uv": [3.5, 7.5, 12.5, 7.875], "texture": "#s"}, + "west": {"uv": [3.5, 7.5, 12.5, 7.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 9.8125], + "to": [8.05, 15.375, 10.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [5.8125, 0.625, 6.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [9.8125, 0.625, 10.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 12.125, 3.5], + "to": [8.125, 12.5, 12.5], + "faces": { + "east": {"uv": [3.5, 3.5, 12.5, 3.875], "texture": "#s"}, + "west": {"uv": [3.5, 3.5, 12.5, 3.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [8, 2.125, 3.5], + "to": [8.125, 2.5, 12.5], + "faces": { + "east": {"uv": [3.5, 13.5, 12.5, 13.875], "texture": "#s"}, + "west": {"uv": [3.5, 13.5, 12.5, 13.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 3.8125], + "to": [8.05, 15.375, 4.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [11.8125, 0.625, 12.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [3.8125, 0.625, 4.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 6.125, 3.5], + "to": [8.125, 6.5, 12.5], + "faces": { + "east": {"uv": [3.5, 9.5, 12.5, 9.875], "texture": "#s"}, + "west": {"uv": [3.5, 9.5, 12.5, 9.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 7.8125], + "to": [8.05, 15.375, 8.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [7.8125, 0.625, 8.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [7.8125, 0.625, 8.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 10.125, 3.5], + "to": [8.125, 10.5, 12.5], + "faces": { + "east": {"uv": [3.5, 5.5, 12.5, 5.875], "texture": "#s"}, + "west": {"uv": [3.5, 5.5, 12.5, 5.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 11.8125], + "to": [8.05, 15.375, 12.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [3.8125, 0.625, 4.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [11.8125, 0.625, 12.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 14.125, 3.5], + "to": [8.125, 14.5, 12.5], + "faces": { + "east": {"uv": [3.5, 1.5, 12.5, 1.875], "texture": "#s"}, + "west": {"uv": [3.5, 1.5, 12.5, 1.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 1.125, 3.5], + "to": [8, 1.5, 12.5], + "faces": { + "east": {"uv": [3.5, 14.5, 12.5, 14.875], "texture": "#s"}, + "west": {"uv": [3.5, 14.5, 12.5, 14.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 5.125, 3.5], + "to": [8, 5.5, 12.5], + "faces": { + "east": {"uv": [3.5, 10.5, 12.5, 10.875], "texture": "#s"}, + "west": {"uv": [3.5, 10.5, 12.5, 10.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 6.8125], + "to": [8.05, 15.375, 7.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [8.8125, 0.625, 9.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [6.8125, 0.625, 7.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 9.125, 3.5], + "to": [8, 9.5, 12.5], + "faces": { + "east": {"uv": [3.5, 6.5, 12.5, 6.875], "texture": "#s"}, + "west": {"uv": [3.5, 6.5, 12.5, 6.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 10.8125], + "to": [8.05, 15.375, 11.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [4.8125, 0.625, 5.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [10.8125, 0.625, 11.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 13.125, 3.5], + "to": [8, 13.5, 12.5], + "faces": { + "east": {"uv": [3.5, 2.5, 12.5, 2.875], "texture": "#s"}, + "west": {"uv": [3.5, 2.5, 12.5, 2.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 3.125, 3.5], + "to": [8, 3.5, 12.5], + "faces": { + "east": {"uv": [3.5, 12.5, 12.5, 12.875], "texture": "#s"}, + "west": {"uv": [3.5, 12.5, 12.5, 12.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 4.8125], + "to": [8.05, 15.375, 5.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [10.8125, 0.625, 11.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [4.8125, 0.625, 5.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 7.125, 3.5], + "to": [8, 7.5, 12.5], + "faces": { + "east": {"uv": [3.5, 8.5, 12.5, 8.875], "texture": "#s"}, + "west": {"uv": [3.5, 8.5, 12.5, 8.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 8.8125], + "to": [8.05, 15.375, 9.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [6.8125, 0.625, 7.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [8.8125, 0.625, 9.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 11.125, 3.5], + "to": [8, 11.5, 12.5], + "faces": { + "east": {"uv": [3.5, 4.5, 12.5, 4.875], "texture": "#s"}, + "west": {"uv": [3.5, 4.5, 12.5, 4.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [9, 35, 0], + "translation": [0, 0, -1], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1.5, 0], + "scale": [0.3, 0.3, 0.3] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [-0.25, 0.5, 0], + "scale": [0.7, 0.7, 0.7] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 0, -0.25] + } + } +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json new file mode 100644 index 0000000..6d0e71a --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json @@ -0,0 +1,220 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [3.125, 12.625, 9.4375], + "to": [12.8125, 12.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "south": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 8.625, 9.4375], + "to": [12.8125, 8.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "south": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 4.625, 9.4375], + "to": [12.8125, 4.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "south": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 0.625, 9.4375], + "to": [12.8125, 0.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "south": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 10.625, 9.625], + "to": [12.8125, 10.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "south": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 6.625, 9.625], + "to": [12.9375, 6.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "south": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 2.625, 9.625], + "to": [12.9375, 2.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "south": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 9.25], + "to": [13, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 90, "texture": "#s"} + } + }, + { + "from": [3.75, 14, 9.25], + "to": [12.25, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 13.75, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 13.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3, 0, 9.25], + "to": [3.75, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "south": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 90, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [11.75, 0, 9.5], + "to": [12.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [7.75, 0, 9.5], + "to": [8.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [3.75, 0, 9.5], + "to": [4.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [9.75, 0, 9.5], + "to": [10.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [5.75, 0, 9.5], + "to": [6.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json new file mode 100644 index 0000000..fa0b52f --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json @@ -0,0 +1,222 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [12.625, 12.625, 0.125], + "to": [12.8125, 12.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "west": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 8.625, 0.125], + "to": [12.8125, 8.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "west": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 4.625, 0.125], + "to": [12.8125, 4.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "west": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 0.625, 0.125], + "to": [12.8125, 0.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "west": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 10.625, 0.125], + "to": [12.625, 10.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "west": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 6.625, 0.5], + "to": [12.625, 6.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "west": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 2.625, 0.5], + "to": [12.625, 2.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "west": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 9.25], + "to": [13, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 14, 0.75], + "to": [13, 15, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 10.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 0], + "to": [13, 15, 0.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [12.5, 0, 8.75], + "to": [12.75, 14.855, 9.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 4.75], + "to": [12.75, 14.855, 5.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 0.75], + "to": [12.75, 14.855, 1.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 6.75], + "to": [12.75, 14.855, 7.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 2.75], + "to": [12.75, 14.855, 3.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json b/1.14/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json new file mode 100644 index 0000000..4490a9b --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/fence/steel_mesh_fence_gate_inventory" } \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png b/1.14/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png index 0177a21..0fdd087 100644 Binary files a/1.14/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png and b/1.14/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png differ diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json new file mode 100644 index 0000000..8006fc0 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_mesh_fence_gate_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_mesh_fence_gate" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json new file mode 100644 index 0000000..f2e5fa0 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json @@ -0,0 +1,18 @@ +{ + "name": "Gates and Doors", + "icon": "engineersdecor:steel_mesh_fence_gate", + "category": "buildingblocks", + "sortnum": 1060, + "pages": [ + { + "type": "spotlight", + "title": "Steel Mesh Fence Gate", + "item": "engineersdecor:steel_mesh_fence_gate", + "text": "A fence gate fitting the style of the $(o)Steel Mesh Fence$(). It can be placed one block high for normal fencing, or doubled for higher cage fences, and will form a fence door accordingly.$(br)Redstone open/close signals are accepted for the bottom segment from all sides, for the top segment only from above." + }, + { + "type": "text", + "text": "" + } + ] +} diff --git a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json index df512ab..342a8ea 100644 --- a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json +++ b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json @@ -2,7 +2,7 @@ "name": "Ladders", "icon": "engineersdecor:treated_wood_ladder", "category": "buildingblocks", - "sortnum": 1070, + "sortnum": 1080, "pages": [ { "type": "spotlight", diff --git a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json index a1dacee..316a6a6 100644 --- a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json +++ b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json @@ -2,7 +2,7 @@ "name": "Windows", "icon": "engineersdecor:treated_wood_window", "category": "buildingblocks", - "sortnum": 1060, + "sortnum": 1070, "pages": [ { "type": "spotlight", diff --git a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json index ac8fc4e..6cfd386 100644 --- a/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json +++ b/1.14/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json @@ -20,7 +20,7 @@ }, { "type": "text", - "text": "" + "text": "§nSpeed override switch$()$(br)A four-position switch in the bottom right area of the GUI allows to alter the processing speed of the furnace. Default is position 1 (normal). At high power expenses, you can alter this: $(br)$(li)Position 0: OFF$(li)Position 1: x1.0 -> RF x1$(li)Position 2: x1.5 -> RF x2$(li)Position 3: x2.0 -> RF x4$(br2)(Positions 0..4 are down, left, top, right)." } ] } diff --git a/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json b/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json new file mode 100644 index 0000000..26a4fc8 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "engineersdecor:optional", + "result": "engineersdecor:steel_mesh_fence_gate", + "required": ["engineersdecor:thin_steel_pole", "engineersdecor:steel_mesh_fence"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PFP" + ], + "key": { + "P": { + "item": "engineersdecor:thin_steel_pole" + }, + "F": { + "item": "engineersdecor:steel_mesh_fence" + } + }, + "result": { + "item": "engineersdecor:steel_mesh_fence_gate", + "count": 2 + } +} diff --git a/1.15/gradle.properties b/1.15/gradle.properties index 8b16b9f..8bb0711 100644 --- a/1.15/gradle.properties +++ b/1.15/gradle.properties @@ -2,7 +2,7 @@ org.gradle.daemon=false org.gradle.jvmargs=-Xmx8G version_minecraft=1.15.2 -version_forge_minecraft=1.15.2-31.1.18 -version_fml_mappings=20191105-1.14.3 +version_forge_minecraft=1.15.2-31.1.19 +version_fml_mappings=20200225-1.15.1 version_jei=1.15.2:6.0.0.2 -version_engineersdecor=1.0.19-b5 +version_engineersdecor=1.0.20-b1 diff --git a/1.15/meta/update.json b/1.15/meta/update.json index 0d11883..53aa50c 100644 --- a/1.15/meta/update.json +++ b/1.15/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.15.2": { + "1.0.20-b1": "[A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption increases at higher rate (off, 100%, 200%, 400%).\n[A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence).\n[M] Waste Incinerator processing speed tweaked.\n[F] Fixed steel table visual glitch (thx Urbanxx001).\n[M] MCP/Forge mappings updated.", "1.0.19-b5": "[A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter.\n[A] Solar Panel power curve tuned.\n[A] Mod manual 1st edition release recipe added.\n[A] Factory Hopper: Resetting NBT when breaking with empty inventory (for stacking), enabled item cap for all sides.\n[M] Electrical Furnace model polished.", "1.0.19-b4": "[A] Ported primary Immersive Engineering dependent recipes (alternative recipes will still work if IE is not installed).\n[F] Blacklisted Treated Wood Crafting Table in inventorysorter mod (issue #88, thx Nachtflame).\n[M] Furni comparator output overrides reflect input slots and empty fuel state/power-cutoff.\n[M] Solar Panel config: Default value for internal battery capacity increased.\n[F] Block Placer: Shifted GUI player slots 1px to the right.\n[A] Added mod block tags for slabs, stairs, and walls (PR#89, thanks CrudeAustin for the data).\n[A] Added experimental Patchouli manual (creative only).", "1.0.19-b3": "[M] Config tweaks: Value limit ranges increased to facilitate modpacking.\n[A] Factory Hopper: Added bottom item handler (CR#227).\n[M] Block shapes refined.\n[F] Fixed duping bug (issue #87, thx Nachtflame)", @@ -14,6 +15,6 @@ }, "promos": { "1.15.2-recommended": "", - "1.15.2-latest": "1.0.19-b5" + "1.15.2-latest": "1.0.20-b1" } } \ No newline at end of file diff --git a/1.15/readme.md b/1.15/readme.md index 1e76d2d..2412adb 100644 --- a/1.15/readme.md +++ b/1.15/readme.md @@ -11,6 +11,13 @@ Mod sources for Minecraft version 1.15.1. ## Version history + - v1.0.20-b1 [A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption + increases at higher rate (off, 100%, 200%, 400%). + [A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence). + [M] Waste Incinerator processing speed tweaked. + [F] Fixed steel table visual glitch (thx Urbanxx001). + [M] MCP/Forge mappings updated. + - v1.0.19-b5 [A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter. [A] Solar Panel power curve tuned. [A] Mod manual 1st edition release recipe added. diff --git a/1.15/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled b/1.15/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled deleted file mode 100644 index 83ff933..0000000 --- a/1.15/src/main/java/blusunrize/immersiveengineering/api/fluid/IFluidPipe.java.disabled +++ /dev/null @@ -1,18 +0,0 @@ -/* - * BluSunrize - * Copyright (c) 2017 - * - * This code is licensed under "Blu's License of Common Sense" - * Details can be found in the license file in the root folder of this project - */ - -package blusunrize.immersiveengineering.api.fluid; - -import net.minecraft.util.Direction; - -public interface IFluidPipe -{ - boolean canOutputPressurized(boolean consumePower); - - boolean hasOutputConnection(Direction side); -} diff --git a/1.15/src/main/java/wile/engineersdecor/ModContent.java b/1.15/src/main/java/wile/engineersdecor/ModContent.java index da59ce2..2300720 100644 --- a/1.15/src/main/java/wile/engineersdecor/ModContent.java +++ b/1.15/src/main/java/wile/engineersdecor/ModContent.java @@ -195,42 +195,42 @@ public class ModContent public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = (BlockDecorGlassBlock)(new BlockDecorGlassBlock( BlockDecor.CFG_TRANSLUCENT, - Block.Properties.create(Material.GLASS, MaterialColor.AIR).hardnessAndResistance(5f, 2000f).sound(SoundType.METAL).func_226896_b_() + Block.Properties.create(Material.GLASS, MaterialColor.AIR).hardnessAndResistance(5f, 2000f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "panzerglass_block")); public static final BlockDecorSlab PANZERGLASS_SLAB = (BlockDecorSlab)(new BlockDecorSlab( BlockDecor.CFG_TRANSLUCENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(5f, 2000f).sound(SoundType.METAL).func_226896_b_() + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(5f, 2000f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "panzerglass_slab")); // ------------------------------------------------------------------------------------------------------------------- public static final BlockDecorLadder METAL_RUNG_LADDER = (BlockDecorLadder)(new BlockDecorLadder( BlockDecor.CFG_DEFAULT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).func_226896_b_() + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "metal_rung_ladder")); public static final BlockDecorLadder METAL_RUNG_STEPS = (BlockDecorLadder)(new BlockDecorLadder( BlockDecor.CFG_DEFAULT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).func_226896_b_() + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "metal_rung_steps")); public static final BlockDecorLadder TREATED_WOOD_LADDER = (BlockDecorLadder)(new BlockDecorLadder( BlockDecor.CFG_DEFAULT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.0f, 25f).sound(SoundType.WOOD).func_226896_b_() + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.0f, 25f).sound(SoundType.WOOD).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_ladder")); // ------------------------------------------------------------------------------------------------------------------- public static final BlockDecor.WaterLoggable TREATED_WOOD_TABLE = (BlockDecor.WaterLoggable)(new BlockDecor.WaterLoggable( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(1,0,1, 15,15.9,15) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_table")); public static final BlockDecorChair TREATED_WOOD_STOOL = (BlockDecorChair)(new BlockDecorChair( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(4,7,4, 12,8.8,12), Auxiliaries.getPixeledAABB(7,0,7, 9,7,9), @@ -241,43 +241,43 @@ public class ModContent public static final BlockDecor.WaterLoggable TREATED_WOOD_SIDE_TABLE = (BlockDecor.WaterLoggable)(new BlockDecor.WaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,0,2, 14,15.9,14) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_side_table")); public static final BlockDecor.DirectedWaterLoggable TREATED_WOOD_WINDOWSILL = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_FACING_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_windowsill")); public static final BlockDecor.DirectedWaterLoggable TREATED_WOOD_BROAD_WINDOWSILL = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_FACING_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(0,14.5,4, 16,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_broad_windowsill")); public static final BlockDecor.DirectedWaterLoggable INSET_LIGHT_IRON = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15).notSolid(), Auxiliaries.getPixeledAABB(5.2,5.2,0, 10.8,10.8,0.3) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_inset_light")); public static final BlockDecor.DirectedWaterLoggable FLOOR_EDGE_LIGHT_IRON = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15).notSolid(), Auxiliaries.getPixeledAABB(5,0,0, 11,2,0.5) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_floor_edge_light")); public static final BlockDecor.WaterLoggable STEEL_TABLE = (BlockDecor.WaterLoggable)(new BlockDecor.WaterLoggable( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_table")); public static final BlockDecorFloorGrating STEEL_FLOOR_GRATING = (BlockDecorFloorGrating)(new BlockDecorFloorGrating( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,14,0, 16,15.5,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_floor_grating")); @@ -285,13 +285,13 @@ public class ModContent public static final BlockDecorWindow TREATED_WOOD_WINDOW = (BlockDecorWindow)(new BlockDecorWindow( BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS).notSolid(), Auxiliaries.getPixeledAABB(0,0,7, 16,16,9) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_window")); public static final BlockDecorWindow STEEL_FRAMED_WINDOW = (BlockDecorWindow)(new BlockDecorWindow( BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS).notSolid(), Auxiliaries.getPixeledAABB(0,0,7.5, 16,16,8.5) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_framed_window")); @@ -299,49 +299,49 @@ public class ModContent public static final BlockDecorStraightPole TREATED_WOOD_POLE = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole")); public static final BlockDecorStraightPole TREATED_WOOD_POLE_HEAD = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole_head")); public static final BlockDecorStraightPole TREATED_WOOD_POLE_SUPPORT = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole_support")); public static final BlockDecorStraightPole THIN_STEEL_POLE = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(6,6,0, 10,10,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thin_steel_pole")); public static final BlockDecorStraightPole THIN_STEEL_POLE_HEAD = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(6,6,0, 10,10,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thin_steel_pole_head")); public static final BlockDecorStraightPole THICK_STEEL_POLE = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,5,0, 11,11,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thick_steel_pole")); public static final BlockDecorStraightPole THICK_STEEL_POLE_HEAD = (BlockDecorStraightPole)(new BlockDecorStraightPole( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,5,0, 11,11,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thick_steel_pole_head")); public static final BlockDecorHorizontalSupport STEEL_DOUBLE_T_SUPPORT = (BlockDecorHorizontalSupport)(new BlockDecorHorizontalSupport( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,11,0, 11,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_double_t_support")); @@ -349,37 +349,37 @@ public class ModContent public static final BlockDecor.DirectedWaterLoggable SIGN_MODLOGO = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1000f).sound(SoundType.WOOD).lightValue(1), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1000f).sound(SoundType.WOOD).lightValue(1).notSolid(), Auxiliaries.getPixeledAABB(0,0,15.6, 16,16,16.0) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_decor")); public static final BlockDecor.DirectedWaterLoggable SIGN_HOTWIRE = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_hotwire")); public static final BlockDecor.DirectedWaterLoggable SIGN_DANGER = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_danger")); public static final BlockDecor.DirectedWaterLoggable SIGN_DEFENSE = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_defense")); public static final BlockDecor.DirectedWaterLoggable SIGN_FACTORY_AREA = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_factoryarea")); public static final BlockDecor.DirectedWaterLoggable SIGN_EXIT = (BlockDecor.DirectedWaterLoggable)(new BlockDecor.DirectedWaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_HORIZIONTAL, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(3,7,15.6, 13,13,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_exit")); @@ -387,7 +387,7 @@ public class ModContent public static final BlockDecorCraftingTable.CraftingTableBlock TREATED_WOOD_CRAFTING_TABLE = (BlockDecorCraftingTable.CraftingTableBlock)(new BlockDecorCraftingTable.CraftingTableBlock( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 15f).sound(SoundType.WOOD), + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 15f).sound(SoundType.WOOD).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(0,13,0, 16,16,16), Auxiliaries.getPixeledAABB(1, 0,1, 15,13,15) @@ -396,7 +396,7 @@ public class ModContent public static final BlockDecorFurnace SMALL_LAB_FURNACE = (BlockDecorFurnace)(new BlockDecorFurnace( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(1,0,1, 15, 1,15), Auxiliaries.getPixeledAABB(0,1,1, 16,16,16), @@ -405,7 +405,7 @@ public class ModContent public static final BlockDecorFurnaceElectrical SMALL_ELECTRICAL_FURNACE = (BlockDecorFurnaceElectrical)(new BlockDecorFurnaceElectrical( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(0, 0,0, 16,11,16), Auxiliaries.getPixeledAABB(1,11,0, 15,12,16), @@ -416,14 +416,14 @@ public class ModContent )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_electrical_furnace")); public static final BlockDecorDropper FACTORY_DROPPER = (BlockDecorDropper)(new BlockDecorDropper( - BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,1, 16,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "factory_dropper")); public static final BlockDecorPlacer FACTORY_PLACER = (BlockDecorPlacer)(new BlockDecorPlacer( - BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK|BlockDecor.CFG_OPPOSITE_PLACEMENT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(0,0,2, 16,16,16), Auxiliaries.getPixeledAABB( 0,0,0, 1,16, 2), @@ -432,8 +432,8 @@ public class ModContent )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "factory_placer")); public static final BlockDecorBreaker SMALL_BLOCK_BREAKER = (BlockDecorBreaker)(new BlockDecorBreaker( - BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(1,0,0, 15, 4, 7), Auxiliaries.getPixeledAABB(1,0,7, 15,12,16), @@ -446,7 +446,7 @@ public class ModContent public static final BlockDecorHopper FACTORY_HOPPER = (BlockDecorHopper)(new BlockDecorHopper( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(),()->{ + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(),()->{ final AxisAlignedBB[] down_aabbs = new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB( 5, 0, 5, 11, 1,11), Auxiliaries.getPixeledAABB( 4, 1, 4, 12, 7,12), @@ -498,13 +498,13 @@ public class ModContent public static final BlockDecorMineralSmelter SMALL_MINERAL_SMELTER = (BlockDecorMineralSmelter)(new BlockDecorMineralSmelter( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(1.1,0,1.1, 14.9,16,14.9) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_mineral_smelter")); public static final BlockDecorSolarPanel SMALL_SOLAR_PANEL = (BlockDecorSolarPanel)(new BlockDecorSolarPanel( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(0,0,0, 16,2,16), Auxiliaries.getPixeledAABB(6,1.5,3, 10,10.5,13), @@ -513,7 +513,7 @@ public class ModContent public static final BlockDecorMilker SMALL_MILKING_MACHINE = (BlockDecorMilker)(new BlockDecorMilker( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB( 1, 1,0, 15,14,10), Auxiliaries.getPixeledAABB( 0,14,0, 16,16,13), @@ -525,7 +525,7 @@ public class ModContent public static final BlockDecorTreeCutter SMALL_TREE_CUTTER = (BlockDecorTreeCutter)(new BlockDecorTreeCutter( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB( 0,0, 0, 16,3,16), Auxiliaries.getPixeledAABB( 0,3, 0, 3,8,16), @@ -539,7 +539,7 @@ public class ModContent public static final BlockDecorPipeValve STRAIGHT_CHECK_VALVE = (BlockDecorPipeValve)(new BlockDecorPipeValve( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, BlockDecorPipeValve.CFG_CHECK_VALVE, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(2,2, 0, 14,14, 2), Auxiliaries.getPixeledAABB(2,2,14, 14,14,16), @@ -551,7 +551,7 @@ public class ModContent public static final BlockDecorPipeValve STRAIGHT_REDSTONE_VALVE = (BlockDecorPipeValve)(new BlockDecorPipeValve( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, BlockDecorPipeValve.CFG_REDSTONE_CONTROLLED_VALVE, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(2,2, 0, 14,14, 2), Auxiliaries.getPixeledAABB(2,2,14, 14,14,16), @@ -563,7 +563,7 @@ public class ModContent public static final BlockDecorPipeValve STRAIGHT_REDSTONE_ANALOG_VALVE = (BlockDecorPipeValve)(new BlockDecorPipeValve( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, BlockDecorPipeValve.CFG_REDSTONE_CONTROLLED_VALVE|BlockDecorPipeValve.CFG_ANALOG_VALVE, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(2,2, 0, 14,14, 2), Auxiliaries.getPixeledAABB(2,2,14, 14,14,16), @@ -574,7 +574,7 @@ public class ModContent public static final BlockDecorPassiveFluidAccumulator PASSIVE_FLUID_ACCUMULATOR = (BlockDecorPassiveFluidAccumulator)(new BlockDecorPassiveFluidAccumulator( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(3,3,0, 13,13, 1), Auxiliaries.getPixeledAABB(0,0,1, 16,16,16) @@ -583,7 +583,7 @@ public class ModContent public static final BlockDecorFluidFunnel SMALL_FLUID_FUNNEL = (BlockDecorFluidFunnel)(new BlockDecorFluidFunnel( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).func_226896_b_(), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), new AxisAlignedBB[]{ Auxiliaries.getPixeledAABB(0, 0,0, 16,14,16), Auxiliaries.getPixeledAABB(1,14,1, 15,15,15), @@ -595,57 +595,63 @@ public class ModContent public static final BlockDecorWall CONCRETE_WALL = (BlockDecorWall)(new BlockDecorWall( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 50f).sound(SoundType.STONE) + Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 50f).sound(SoundType.STONE).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "concrete_wall")); public static final BlockDecorHalfSlab HALFSLAB_CONCRETE = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1f, 10f).sound(SoundType.STONE) + Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1f, 10f).sound(SoundType.STONE).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_concrete")); public static final BlockDecorHalfSlab HALFSLAB_TREATEDWOOD = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 4f).sound(SoundType.WOOD) + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 4f).sound(SoundType.WOOD).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_treated_wood")); public static final BlockDecorHalfSlab HALFSLAB_SHEETMETALIRON = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL) + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_iron")); public static final BlockDecorHalfSlab HALFSLAB_SHEETMETALSTEEL = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL) + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_steel")); public static final BlockDecorHalfSlab HALFSLAB_SHEETMETALCOPPER = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL) + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_copper")); public static final BlockDecorHalfSlab HALFSLAB_SHEETMETALGOLD = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL) + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_gold")); public static final BlockDecorHalfSlab HALFSLAB_SHEETMETALALUMINIUM = (BlockDecorHalfSlab)(new BlockDecorHalfSlab( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HARD_IE_DEPENDENT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL) + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_aluminum")); // ------------------------------------------------------------------------------------------------------------------- public static final BlockDecorFence STEEL_MESH_FENCE = (BlockDecorFence)(new BlockDecorFence( BlockDecor.CFG_CUTOUT, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), 1.5, 16, 0.25, 0, 16 )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence")); + public static final BlockDecorDoubleGate STEEL_MESH_FENCE_GATE = (BlockDecorDoubleGate)(new BlockDecorDoubleGate( + BlockDecor.CFG_CUTOUT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), + Auxiliaries.getPixeledAABB(0,0,6.5, 16,16,9.5) + )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence_gate")); + // ------------------------------------------------------------------------------------------------------------------- public static final BlockDecorTest TEST_BLOCK = (BlockDecorTest)(new BlockDecorTest( BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, - Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(0f, 32000f).sound(SoundType.METAL), + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(0f, 32000f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "test_block")); @@ -718,6 +724,7 @@ public class ModContent FLOOR_EDGE_LIGHT_IRON, STEEL_FLOOR_GRATING, STEEL_MESH_FENCE, + STEEL_MESH_FENCE_GATE, TREATED_WOOD_POLE, TREATED_WOOD_POLE_HEAD, TREATED_WOOD_POLE_SUPPORT, @@ -1001,13 +1008,13 @@ public class ModContent if(block instanceof IStandardBlock) { switch(((IStandardBlock)block).getRenderTypeHint()) { case CUTOUT: - RenderTypeLookup.setRenderLayer(block, RenderType.func_228643_e_()/*cutout*/); + RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); break; case CUTOUT_MIPPED: - RenderTypeLookup.setRenderLayer(block, RenderType.func_228641_d_()/*cutout_mipped*/); + RenderTypeLookup.setRenderLayer(block, RenderType.getCutoutMipped()); break; case TRANSLUCENT: - RenderTypeLookup.setRenderLayer(block, RenderType.func_228645_f_()/*transparent*/); + RenderTypeLookup.setRenderLayer(block, RenderType.getTranslucent()); break; case SOLID: break; diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorBreaker.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorBreaker.java index 23534b8..8f594c0 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorBreaker.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorBreaker.java @@ -113,11 +113,11 @@ public class BlockDecorBreaker extends BlockDecor.HorizontalWaterLoggable implem @Override @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { TileEntity te = world.getTileEntity(pos); if(te instanceof BTileEntity) ((BTileEntity)te).state_message(player); - return true; + return ActionResultType.SUCCESS; } //-------------------------------------------------------------------------------------------------------------------- diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java index 02aaeec..70ab02c 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java @@ -10,17 +10,18 @@ package wile.engineersdecor.blocks; import wile.engineersdecor.ModContent; import wile.engineersdecor.ModEngineersDecor; +import net.minecraft.world.server.ServerWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.*; import net.minecraft.entity.monster.*; import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.IPacket; import net.minecraft.util.math.*; -import net.minecraft.world.IWorldReader; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.*; -import net.minecraft.world.World; import net.minecraftforge.fml.network.FMLPlayMessages; import net.minecraftforge.fml.network.NetworkHooks; import java.util.List; @@ -45,11 +46,11 @@ public class BlockDecorChair extends BlockDecor.HorizontalWaterLoggable implemen { super(config, builder.tickRandomly(), unrotatedAABBs); } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(sitting_enabled && (!world.isRemote)) { EntityChair.sit(world, player, pos); } - return true; + if(!sitting_enabled) return ActionResultType.PASS; + if(!world.isRemote) EntityChair.sit(world, player, pos); + return ActionResultType.SUCCESS; } @Override @@ -64,8 +65,7 @@ public class BlockDecorChair extends BlockDecor.HorizontalWaterLoggable implemen { return 10; } @Override - @SuppressWarnings("deprecation") - public void tick(BlockState state, World world, BlockPos pos, Random rnd) + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random rnd) { if((!sitting_enabled) || (sitting_probability < 1e-6)) return; final List entities = world.getEntitiesWithinAABB(MobEntity.class, new AxisAlignedBB(pos).grow(2,1,2).expand(0,1,0), e->true); diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java index 661f803..e4bf4d8 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java @@ -93,15 +93,14 @@ public class BlockDecorCraftingTable { return new BlockDecorCraftingTable.CraftingTableTileEntity(); } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof CraftingTableTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof CraftingTableTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java new file mode 100644 index 0000000..927fd2e --- /dev/null +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDoubleGate.java @@ -0,0 +1,155 @@ +/* + * @file BlockDecorDoubleGate.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Gate blocks that can be one or two segments high. + */ +package wile.engineersdecor.blocks; + +import wile.engineersdecor.libmc.detail.Auxiliaries; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.block.*; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.*; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.pathfinding.PathType; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; + +public class BlockDecorDoubleGate extends BlockDecor.HorizontalWaterLoggable implements IDecorBlock +{ + public static final IntegerProperty SEGMENT = IntegerProperty.create("segment", 0, 1); + public static final BooleanProperty OPEN = FenceGateBlock.OPEN; + public static final int SEGMENT_LOWER = 0; + public static final int SEGMENT_UPPER = 1; + protected final ArrayList collision_shapes_; + + public BlockDecorDoubleGate(long config, Block.Properties properties, AxisAlignedBB aabb) + { this(config, properties, new AxisAlignedBB[]{aabb}); } + + public BlockDecorDoubleGate(long config, Block.Properties properties, AxisAlignedBB[] aabbs) + { + super(config, properties, aabbs); + AxisAlignedBB[] caabbs = new AxisAlignedBB[aabbs.length]; + for(int i=0; i(Arrays.asList( + VoxelShapes.fullCube(), + VoxelShapes.fullCube(), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.NORTH, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.SOUTH, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.WEST, true)), + Auxiliaries.getUnionShape(Auxiliaries.getRotatedAABB(caabbs, Direction.EAST, true)), + VoxelShapes.fullCube(), + VoxelShapes.fullCube() + )); + } + + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext selectionContext) + { return state.get(OPEN) ? VoxelShapes.empty() : collision_shapes_.get(state.get(HORIZONTAL_FACING).getIndex() & 0x7); } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); builder.add(SEGMENT).add(OPEN); } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { return getInitialState(super.getStateForPlacement(context), context.getWorld(), context.getPos()); } + + @Override + @SuppressWarnings("deprecation") + public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld world, BlockPos pos, BlockPos facingPos) + { return getInitialState(super.updatePostPlacement(state, facing, facingState, world, pos, facingPos), world, pos); } + + @Override + @SuppressWarnings("deprecation") + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + { + if((rayTraceResult.getFace()==Direction.UP) || (rayTraceResult.getFace()==Direction.DOWN) && (player.getHeldItem(hand).getItem()==this.asItem())) return ActionResultType.PASS; + if(world.isRemote) return ActionResultType.SUCCESS; + final boolean open = !state.get(OPEN); + world.setBlockState(pos, state.with(OPEN, open),2|8|16); + if(state.get(SEGMENT) == SEGMENT_UPPER) { + final BlockState adjacent = world.getBlockState(pos.down()); + if(adjacent.getBlock()==this) world.setBlockState(pos.down(), adjacent.with(OPEN, open), 2|8|16); + } else { + final BlockState adjacent = world.getBlockState(pos.up()); + if(adjacent.getBlock()==this) world.setBlockState(pos.up(), adjacent.with(OPEN, open), 2|8|16); + } + world.playSound(null, pos, open?SoundEvents.BLOCK_IRON_DOOR_OPEN:SoundEvents.BLOCK_IRON_DOOR_CLOSE, SoundCategory.BLOCKS, 0.7f, 1.4f); + return ActionResultType.SUCCESS; + } + + @Override + @SuppressWarnings("deprecation") + public boolean allowsMovement(BlockState state, IBlockReader world, BlockPos pos, PathType type) + { return state.get(OPEN); } + + @Override + @SuppressWarnings("deprecation") + public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean isMoving) + { + if(world.isRemote) return; + boolean powered = false; + BlockState adjacent; + BlockPos adjacent_pos; + if(state.get(SEGMENT) == SEGMENT_UPPER) { + adjacent_pos = pos.down(); + adjacent = world.getBlockState(adjacent_pos); + if(adjacent.getBlock()!=this) adjacent = null; + if(world.getRedstonePower(pos.up(), Direction.UP) > 0) { + powered = true; + } else if((adjacent!=null) && (world.isBlockPowered(pos.down(2)))) { + powered = true; + } + } else { + adjacent_pos = pos.up(); + adjacent = world.getBlockState(adjacent_pos); + if(adjacent.getBlock()!=this) adjacent = null; + if(world.isBlockPowered(pos)) { + powered = true; + } else if((adjacent!=null) && (world.getRedstonePower(pos.up(2), Direction.UP) > 0)) { + powered = true; + } + } + boolean sound = false; + if(powered != state.get(OPEN)) { + world.setBlockState(pos, state.with(OPEN, powered), 2|8|16); + sound = true; + } + if((adjacent != null) && (powered != adjacent.get(OPEN))) { + world.setBlockState(adjacent_pos, adjacent.with(OPEN, powered), 2|8|16); + sound = true; + } + if(sound) { + world.playSound(null, pos, powered?SoundEvents.BLOCK_IRON_DOOR_OPEN:SoundEvents.BLOCK_IRON_DOOR_CLOSE, SoundCategory.BLOCKS, 0.7f, 1.4f); + } + } + + // ------------------------------------------------------------------------------------------------------------------- + + private BlockState getInitialState(BlockState state, IWorld world, BlockPos pos) + { + final BlockState down = world.getBlockState(pos.down()); + if(down.getBlock() == this) return state.with(SEGMENT, SEGMENT_UPPER).with(OPEN, down.get(OPEN)).with(HORIZONTAL_FACING, down.get(HORIZONTAL_FACING)); + final BlockState up = world.getBlockState(pos.up()); + if(up.getBlock() == this) return state.with(SEGMENT, SEGMENT_LOWER).with(OPEN, up.get(OPEN)).with(HORIZONTAL_FACING, up.get(HORIZONTAL_FACING)); + return state.with(SEGMENT, SEGMENT_LOWER).with(OPEN, false); + } + +} diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java index f387f17..66023fd 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -143,15 +143,14 @@ public class BlockDecorDropper extends BlockDecor.Directed implements IDecorBloc } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BlockDecorDropper.BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BlockDecorDropper.BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java index 19071a9..4bec9c8 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java @@ -9,6 +9,9 @@ package wile.engineersdecor.blocks; import wile.engineersdecor.libmc.blocks.StandardFenceBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorldReader; import net.minecraft.block.*; @@ -19,4 +22,8 @@ public class BlockDecorFence extends StandardFenceBlock implements IDecorBlock public BlockDecorFence(long config, Block.Properties properties, double pole_width, double pole_height, double side_width, double side_max_y, double side_min_y) { super(config, properties, pole_width, pole_height, side_width, side_max_y, side_min_y); } + + @Override + protected boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) + { return ((facingState.getBlock()) instanceof BlockDecorDoubleGate) || super.attachesTo(facingState, world, facingPos, side); } } diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFluidFunnel.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFluidFunnel.java index 11f1cc5..0b51936 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFluidFunnel.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFluidFunnel.java @@ -25,6 +25,7 @@ import net.minecraft.fluid.IFluidState; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; import net.minecraft.util.math.*; @@ -123,13 +124,12 @@ public class BlockDecorFluidFunnel extends BlockDecor implements IDecorBlock } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return false; - return FluidUtil.interactWithFluidHandler(player, hand, world, pos, rayTraceResult.getFace()); + if(!(te instanceof BTileEntity)) return ActionResultType.FAIL; + return FluidUtil.interactWithFluidHandler(player, hand, world, pos, rayTraceResult.getFace()) ? ActionResultType.SUCCESS : ActionResultType.FAIL; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java index 7dbdb0c..465d076 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java @@ -149,16 +149,15 @@ public class BlockDecorFurnace extends BlockDecor.Horizontal implements IDecorBl } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BlockDecorFurnace.BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BlockDecorFurnace.BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); player.addStat(Stats.INTERACT_WITH_FURNACE); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java index 1e24142..885848b 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java @@ -68,15 +68,15 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID { return new BlockDecorFurnaceElectrical.BTileEntity(); } @Override - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BlockDecorFurnaceElectrical.BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BlockDecorFurnaceElectrical.BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); player.addStat(Stats.INTERACT_WITH_FURNACE); - return true; + return ActionResultType.SUCCESS; } @Override @@ -112,7 +112,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID public static final int FIFO_INTERVAL = 20; public static final int HEAT_CAPACITY = 200; public static final int HEAT_INCREMENT = 20; - public static final int MAX_ENERGY_TRANSFER = 256; + public static final int MAX_ENERGY_TRANSFER = 1024; public static final int MAX_ENERGY_BUFFER = 32000; public static final int MAX_SPEED_SETTING = 2; public static final int NUM_OF_SLOTS = 7; @@ -133,6 +133,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID private static int energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION; private static int transfer_energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION / 8; private static int proc_speed_percent_ = DEFAULT_SPEED_PERCENT; + private static double speed_setting_factor_[] = {0.0, 1.0, 1.5, 2.0}; public static void on_config(int speed_percent, int standard_energy_per_tick, boolean with_automatic_inventory_pulling) { @@ -145,15 +146,16 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID // BTileEntity ----------------------------------------------------------------------------- - private int burntime_left_; - private int proc_time_elapsed_; - private int proc_time_needed_; - private int energy_stored_; - private int field_max_energy_stored_; - private int field_isburning_; - private int speed_; - private int tick_timer_; - private int fifo_timer_; + private int burntime_left_ = 0; + private int proc_time_elapsed_ = 0; + private int proc_time_needed_ = 0; + private int energy_stored_ = 0; + private int field_max_energy_stored_ = 0; + private int field_isburning_ = 0; + private int speed_ = 1; + private int tick_timer_ = 0; + private int fifo_timer_ = 0; + private boolean enabled_ = false; public BTileEntity() { this(ModContent.TET_SMALL_ELECTRICAL_FURNACE); } @@ -185,6 +187,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID proc_time_needed_ = nbt.getInt("CookTimeTotal"); energy_stored_ = nbt.getInt("Energy"); speed_ = nbt.getInt("SpeedSetting"); + speed_ = (speed_ < 0) ? (1) : ((speed_>3) ? 3 : speed_); } protected void writenbt(CompoundNBT nbt) @@ -468,7 +471,12 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID 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_)) { + if(energy_stored_ < energy_consumption()) { + enabled_ = false; + } else if(energy_stored_ >= (MAX_ENERGY_BUFFER/2)) { + enabled_ = true; + } + if((!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty()) && (enabled_) && (speed_>0) && (speed_<4)) { IRecipe last_recipe = currentRecipe(); updateCurrentRecipe(); if(currentRecipe() != last_recipe) { @@ -486,7 +494,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID } if(burning() && can_smelt) { if(heat_up()) dirty = true; - proc_time_elapsed_ += (TICK_INTERVAL * proc_speed_percent_/100); + proc_time_elapsed_ += (int)(TICK_INTERVAL * proc_speed_percent_ * speed_setting_factor_[speed_] / 100); if(proc_time_elapsed_ >= proc_time_needed_) { proc_time_elapsed_ = 0; proc_time_needed_ = getSmeltingTimeNeeded(world, stacks_.get(SMELTING_INPUT_SLOT_NO)); @@ -510,7 +518,6 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID if(dirty) markDirty(); field_max_energy_stored_ = getMaxEnergyStored(); field_isburning_ = burning() ? 1 : 0; - //if(this.energy_stored_ < this.getMaxEnergyStored() / 5) this.energy_stored_ = this.getMaxEnergyStored(); } // Furnace -------------------------------------------------------------------------------------- @@ -596,15 +603,25 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID return dirty; } - // returns TE dirty + int energy_consumption() + { + switch(speed_) { + case 1: return energy_consumption_; + case 2: return energy_consumption_ * 2; + case 3: return energy_consumption_ * 4; + default: return 0; + } + } + private boolean heat_up() { - if(energy_stored_ < (energy_consumption_)) return false; + int p = energy_consumption(); + if((p<=0) || (energy_stored_ < p)) return false; if(burntime_left_ >= (HEAT_CAPACITY-HEAT_INCREMENT)) return false; - energy_stored_ -= energy_consumption_; + energy_stored_ -= p; burntime_left_ += HEAT_INCREMENT; this.markDirty(); - return true; + return true; // returns TE dirty } private void sync_blockstate() @@ -728,9 +745,13 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID public void onServerPacketReceived(int windowId, CompoundNBT nbt) {} - @Override public void onClientPacketReceived(int windowId, PlayerEntity player, CompoundNBT nbt) - {} + { + if(!(inventory_ instanceof BTileEntity)) return; + BTileEntity te = (BTileEntity)inventory_; + if(nbt.contains("speed")) te.speed_ = MathHelper.clamp(nbt.getInt("speed"), 0, 3); + te.markDirty(); + } } //-------------------------------------------------------------------------------------------------------------------- @@ -773,9 +794,35 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace implements ID blit(x0+79, y0+30, 176, 15, 1+progress_px(17), 15); int we = energy_px(32, 8); if(we>0) blit(x0+88, y0+53, 185, 30, we, 13); + switch(getContainer().field(4)) { + case 0: blit(x0+144, y0+57, 180, 57, 6, 9); break; + case 1: blit(x0+142, y0+58, 190, 58, 9, 6); break; + case 2: blit(x0+144, y0+56, 200, 57, 6, 9); break; + case 3: blit(x0+143, y0+58, 210, 58, 9, 6); break; + default: break; + } RenderSystem.disableBlend(); } + @Override + public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) + { + BContainer container = (BContainer)getContainer(); + int mx = (int)(mouseX - getGuiLeft() + .5), my = (int)(mouseY - getGuiTop() + .5); + if((!isPointInRegion(136, 48, 28, 28, mouseX, mouseY))) { + return super.mouseClicked(mouseX, mouseY, mouseButton); + } else if(isPointInRegion(144, 64, 6, 10, mouseX, mouseY)) { + container.onGuiAction("speed", 0); + } else if(isPointInRegion(134, 58, 10, 6, mouseX, mouseY)) { + container.onGuiAction("speed", 1); + } else if(isPointInRegion(144, 48, 6, 10, mouseX, mouseY)) { + container.onGuiAction("speed", 2); + } else if(isPointInRegion(150, 58, 10, 6, mouseX, mouseY)) { + container.onGuiAction("speed", 3); + } + return true; + } + private int progress_px(int pixels) { final int tc=getContainer().field(2), T=getContainer().field(3); return ((T>0) && (tc>0)) ? (tc * pixels / T) : (0); } diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java index 61bf401..1a30338 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorHopper.java @@ -8,6 +8,8 @@ */ package wile.engineersdecor.blocks; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShapes; import wile.engineersdecor.ModContent; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.libmc.detail.Inventories; @@ -58,6 +60,10 @@ public class BlockDecorHopper extends BlockDecor.Directed implements IDecorBlock public BlockDecorHopper(long config, Block.Properties builder, final Supplier> shape_supplier) { super(config, builder, shape_supplier); } + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) + { return VoxelShapes.fullCube(); } + @Override @SuppressWarnings("deprecation") public boolean hasComparatorInputOverride(BlockState state) @@ -121,15 +127,14 @@ public class BlockDecorHopper extends BlockDecor.Directed implements IDecorBlock } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java index 7dbdd30..e92697a 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java @@ -86,7 +86,7 @@ public class BlockDecorLadder extends LadderBlock implements IDecorBlock // Player update event, forwarded from the main mod instance. public static void onPlayerUpdateEvent(final PlayerEntity player) { - if((without_speed_boost_) || (player.onGround) || (!player.isOnLadder()) || (player.func_225608_bj_()/*isSneaking()*/) || (player.isSpectator())) return; + if((without_speed_boost_) || (player.onGround) || (!player.isOnLadder()) || (player.isShiftKeyDown()) || (player.isSpectator())) return; double lvy = player.getLookVec().y; if(Math.abs(lvy) < 0.94) return; final BlockPos pos = player.getPosition(); diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMilker.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMilker.java index 56c28b6..0932db9 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMilker.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMilker.java @@ -93,15 +93,14 @@ public class BlockDecorMilker extends BlockDecor.Horizontal implements IDecorBlo { return new BTileEntity(); } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; BTileEntity te = getTe(world, pos); - if(te==null) return true; + if(te==null) return ActionResultType.FAIL; final ItemStack in_stack = player.getHeldItem(hand); final ItemStack out_stack = BTileEntity.milk_filled_container_item(in_stack); - if(out_stack.isEmpty() && (te.fluid_handler()!=null)) return FluidUtil.interactWithFluidHandler(player, hand, te.fluid_handler()); + if(out_stack.isEmpty() && (te.fluid_handler()!=null)) return FluidUtil.interactWithFluidHandler(player, hand, te.fluid_handler()) ? ActionResultType.SUCCESS : ActionResultType.FAIL; boolean drained = false; IItemHandler player_inventory = new PlayerMainInvWrapper(player.inventory); if(te.fluid_level() >= BTileEntity.BUCKET_SIZE) { @@ -122,7 +121,7 @@ public class BlockDecorMilker extends BlockDecor.Horizontal implements IDecorBlo if(drained) { world.playSound(null, pos, SoundEvents.ITEM_BUCKET_FILL, SoundCategory.BLOCKS, 0.8f, 1f); } - return true; + return ActionResultType.SUCCESS; } @Nullable @@ -697,7 +696,7 @@ public class BlockDecorMilker extends BlockDecor.Horizontal implements IDecorBlo log("shouldContinueExecuting() -> already aborted"); return false; } else if(creature.getNavigator().noPath()) { - if((!creature.getNavigator().setPath(creature.getNavigator().func_225466_a(target_pos_.getX(), target_pos_.getY(), target_pos_.getZ(), 0), movementSpeed))) { + if((!creature.getNavigator().setPath(creature.getNavigator().getPathToPos(target_pos_.getX(), target_pos_.getY(), target_pos_.getZ(), 0), movementSpeed))) { log("shouldContinueExecuting() -> abort, no path"); abort(); return false; diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java index d32c210..e4fb419 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java @@ -111,13 +111,12 @@ public class BlockDecorMineralSmelter extends BlockDecor.Horizontal implements I } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; - if(player.func_225608_bj_()/*isSneaking()*/) return false; + if(player.isShiftKeyDown()) return ActionResultType.PASS; + if(world.isRemote) return ActionResultType.SUCCESS; BTileEntity te = getTe(world, pos); - if(te==null) return true; + if(te==null) return ActionResultType.FAIL; final ItemStack stack = player.getHeldItem(hand); boolean dirty = false; if(te.accepts_lava_container(stack)) { @@ -161,7 +160,7 @@ public class BlockDecorMineralSmelter extends BlockDecor.Horizontal implements I dirty = true; } if(dirty) player.inventory.markDirty(); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java index b550559..8ca6f67 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java @@ -23,10 +23,11 @@ import net.minecraft.tileentity.TileEntityType; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ActionResultType; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.Hand; import net.minecraft.util.math.MathHelper; -import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -56,13 +57,13 @@ public class BlockDecorPassiveFluidAccumulator extends BlockDecor.Directed imple @Override @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return true; + if(!(te instanceof BTileEntity)) return ActionResultType.FAIL; ((BTileEntity)te).send_device_stats(player); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPlacer.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPlacer.java index a3722ff..7c3172f 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPlacer.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorPlacer.java @@ -125,15 +125,14 @@ public class BlockDecorPlacer extends BlockDecor.Directed implements IDecorBlock } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); - return true; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java index b86255c..0d89321 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java @@ -24,6 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.ActionResultType; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -61,12 +62,11 @@ public class BlockDecorSolarPanel extends BlockDecor implements IDecorBlock { return new BlockDecorSolarPanel.BTileEntity(); } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { TileEntity te = world.getTileEntity(pos); if(te instanceof BTileEntity) ((BTileEntity)te).state_message(player); - return true; + return ActionResultType.SUCCESS; } //-------------------------------------------------------------------------------------------------------------------- @@ -211,7 +211,7 @@ public class BlockDecorSolarPanel extends BlockDecor implements IDecorBlock BlockState nstate = state.with(EXPOSITION, e); if(nstate != state) world.setBlockState(pos, nstate, 1|2); final double eff = (1.0-((world.getRainStrength(1f)*0.6)+(world.getThunderStrength(1f)*0.3))); - final double ll = ((double)(world.func_225524_e_().getLightEngine(LightType.SKY).getLightFor(getPos())))/15; + final double ll = ((double)(world.getLightManager().getLightEngine(LightType.SKY).getLightFor(getPos())))/15; final double rf = Math.sin((Math.PI/2) * Math.sqrt(((double)(((theta<0)||(theta>180))?(0):((theta>90)?(180-theta):(theta))))/90)); current_production_ = (int)(Math.min(rf*rf*eff*ll, 1) * peak_power_per_tick_); accumulated_power_ = Math.min(accumulated_power_ + (current_production_*(TICK_INTERVAL*ACCUMULATION_INTERVAL)), max_power_storage_); diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTest.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTest.java index ffe17c5..371eb1a 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTest.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTest.java @@ -21,6 +21,7 @@ import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.item.ItemStack; import net.minecraft.fluid.Fluids; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; import net.minecraft.util.Direction; import net.minecraft.util.math.MathHelper; @@ -79,12 +80,12 @@ public class BlockDecorTest extends BlockDecor.Directed implements Auxiliaries.I @Override @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return false; + if(!(te instanceof BTileEntity)) return ActionResultType.SUCCESS; ((BTileEntity)te).activated(player, hand, hit); - return true; + return ActionResultType.SUCCESS; } //-------------------------------------------------------------------------------------------------------------------- diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java index c052f38..5d57162 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java @@ -82,12 +82,11 @@ public class BlockDecorTreeCutter extends BlockDecor.Horizontal implements IDeco } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { TileEntity te = world.getTileEntity(pos); if(te instanceof BTileEntity) ((BTileEntity)te).state_message(player); - return true; + return ActionResultType.SUCCESS; } //-------------------------------------------------------------------------------------------------------------------- diff --git a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java index 4bb1960..5660ae8 100644 --- a/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java +++ b/1.15/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java @@ -134,15 +134,14 @@ public class BlockDecorWasteIncinerator extends BlockDecor implements IDecorBloc } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; final TileEntity te = world.getTileEntity(pos); - if(!(te instanceof BTileEntity)) return true; - if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return true; + if(!(te instanceof BTileEntity)) return ActionResultType.FAIL; + if((!(player instanceof ServerPlayerEntity) && (!(player instanceof FakePlayer)))) return ActionResultType.FAIL; NetworkHooks.openGui((ServerPlayerEntity)player,(INamedContainerProvider)te); - return true; + return ActionResultType.SUCCESS; } @Override @@ -166,6 +165,7 @@ public class BlockDecorWasteIncinerator extends BlockDecor implements IDecorBloc public static final int NUM_OF_FIELDS = 1; public static final int TICK_INTERVAL = 20; public static final int ENERGIZED_TICK_INTERVAL = 5; + public static final int INCINERATION_STACK_DECREMENT = 4; public static final int MAX_ENERGY_BUFFER = 16000; public static final int MAX_ENERGY_TRANSFER = 256; public static final int DEFAULT_ENERGY_CONSUMPTION = 16; @@ -190,7 +190,6 @@ public class BlockDecorWasteIncinerator extends BlockDecor implements IDecorBloc private int energy_stored_; protected NonNullList stacks_ = NonNullList.withSize(NUM_OF_SLOTS, ItemStack.EMPTY); - public BTileEntity() { this(ModContent.TET_WASTE_INCINERATOR); } @@ -503,7 +502,7 @@ public class BlockDecorWasteIncinerator extends BlockDecor implements IDecorBloc ItemStack first_stack = stacks_.get(0); boolean shift = !first_stack.isEmpty(); if(is_processing) { - processing_stack.shrink(1); + processing_stack.shrink(INCINERATION_STACK_DECREMENT); if(processing_stack.getCount() <= 0) { processing_stack = ItemStack.EMPTY; is_processing = false; @@ -516,22 +515,11 @@ public class BlockDecorWasteIncinerator extends BlockDecor implements IDecorBloc dirty = true; } if(shift) { - int max_shift_slot_no = BURN_SLOT_NO-1; - for(int i=1; i0; --i) { + transferred |= transferItems(i-1, i, getInventoryStackLimit()); + } + if((!is_processing) && (!transferred)) { shiftStacks(0, BURN_SLOT_NO); dirty = true; } diff --git a/1.15/src/main/java/wile/engineersdecor/detail/ModRenderers.java b/1.15/src/main/java/wile/engineersdecor/detail/ModRenderers.java index 276e751..f956719 100644 --- a/1.15/src/main/java/wile/engineersdecor/detail/ModRenderers.java +++ b/1.15/src/main/java/wile/engineersdecor/detail/ModRenderers.java @@ -82,9 +82,6 @@ public class ModRenderers { super(dispatcher); } @Override - public void func_225616_a_(final BlockDecorCraftingTable.CraftingTableTileEntity te, float f2, MatrixStack mxs, IRenderTypeBuffer buf, int i5, int i6) - { render(te, f2, mxs, buf, i5, i6); } - @SuppressWarnings("deprecation") public void render(final BlockDecorCraftingTable.CraftingTableTileEntity te, float unused1, MatrixStack mxs, IRenderTypeBuffer buf, int i5, int i6) { @@ -102,17 +99,14 @@ public class ModRenderers float oy = 0.5f; float ry = ((yrotations[di]+180) + ((prnd*60)-30)) % 360; if(stack.isEmpty()) return; - mxs.func_227860_a_(); // mxs.push() - mxs.func_227861_a_(0.5+ox, 0.5+oy, 0.5+oz); // mxs.translate() - - mxs.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(90.0f)); // mxs.transform(Vector3f.x_plus.rotation(90)) - - mxs.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(ry)); // mxs.transform(Vector3f.z_plus.rotation(ry)) - - mxs.func_227861_a_(rndo, rndo, 0); // mxs.translate() - mxs.func_227862_a_(scaler, scaler, scaler); // mxs.scale() - Minecraft.getInstance().getItemRenderer().func_229110_a_(stack, net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType.FIXED, i5, i6, mxs, buf); - mxs.func_227865_b_(); // mxs.pop() + mxs.push(); + mxs.translate(0.5+ox, 0.5+oy, 0.5+oz); + mxs.rotate(Vector3f.XP.rotationDegrees(90.0f)); + mxs.rotate(Vector3f.ZP.rotationDegrees(ry)); + mxs.translate(rndo, rndo, 0); + mxs.scale(scaler, scaler, scaler); + Minecraft.getInstance().getItemRenderer().renderItem(stack, net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType.FIXED, i5, i6, mxs, buf); + mxs.pop(); // mxs.pop() } } catch(Throwable e) { if(--tesr_error_counter<=0) { diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/SlabSliceBlock.java b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/SlabSliceBlock.java index eb0f441..82d586a 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/SlabSliceBlock.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/SlabSliceBlock.java @@ -138,29 +138,28 @@ public class SlabSliceBlock extends StandardBlocks.WaterLoggable implements Stan { return new ArrayList(Collections.singletonList(new ItemStack(this.asItem(), num_slabs_contained_in_parts_[state.get(PARTS) & 0xf]))); } @Override - @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { Direction face = rayTraceResult.getFace(); final ItemStack stack = player.getHeldItem(hand); - if(stack.isEmpty() || (Block.getBlockFromItem(stack.getItem()) != this)) return false; - if((face != Direction.UP) && (face != Direction.DOWN)) return false; + if(stack.isEmpty() || (Block.getBlockFromItem(stack.getItem()) != this)) return ActionResultType.PASS; + if((face != Direction.UP) && (face != Direction.DOWN)) return ActionResultType.PASS; int parts = state.get(PARTS); if((face != Direction.UP) && (parts > 7)) { world.setBlockState(pos, state.with(PARTS, parts-1), 3); } else if((face != Direction.DOWN) && (parts < 7)) { world.setBlockState(pos, state.with(PARTS, parts+1), 3); } else { - return (parts != 7); + return (parts != 7) ? ActionResultType.SUCCESS : ActionResultType.PASS; } - if(world.isRemote) return true; + if(world.isRemote) return ActionResultType.SUCCESS; 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; + return ActionResultType.SUCCESS; } @Override diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardBlocks.java b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardBlocks.java index 6de8912..35fac5d 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardBlocks.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardBlocks.java @@ -101,28 +101,16 @@ public class StandardBlocks vshape = shape; } - ///////////// -------------------------------------------------------------------------------------------------------- - // 1.15 transition + @Override + @SuppressWarnings("deprecation") + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) + { return ActionResultType.PASS; } - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) - { return false; } - - @Deprecated - public ActionResultType func_225533_a_(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) - { - return onBlockActivated(p_225533_1_,p_225533_2_,p_225533_3_,p_225533_4_,p_225533_5_,p_225533_6_) ? ActionResultType.SUCCESS : ActionResultType.PASS; - } - - @Deprecated - public void func_225534_a_(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) - { tick(p_225534_1_,p_225534_2_,p_225534_3_,p_225534_4_); } - - public void tick(BlockState state, World world, BlockPos pos, Random rnd) + @Override + @SuppressWarnings("deprecation") + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random rnd) {} - // 1.15 /transition - ///////////// -------------------------------------------------------------------------------------------------------- - @Override @OnlyIn(Dist.CLIENT) public void addInformation(ItemStack stack, @Nullable IBlockReader world, List tooltip, ITooltipFlag flag) @@ -319,7 +307,7 @@ public class StandardBlocks // default: placement on the face the player clicking } if((config & CFG_OPPOSITE_PLACEMENT)!=0) facing = facing.getOpposite(); - if(((config & CFG_FLIP_PLACEMENT_SHIFTCLICK) != 0) && (context.getPlayer().func_225608_bj_()/*isSneaking()*/)) facing = facing.getOpposite(); + if(((config & CFG_FLIP_PLACEMENT_SHIFTCLICK) != 0) && (context.getPlayer().isShiftKeyDown())) facing = facing.getOpposite(); return super.getStateForPlacement(context).with(FACING, facing); } } @@ -380,7 +368,7 @@ public class StandardBlocks facing = ((facing==Direction.UP)||(facing==Direction.DOWN)) ? (context.getPlacementHorizontalFacing()) : facing; } if((config & CFG_OPPOSITE_PLACEMENT)!=0) facing = facing.getOpposite(); - if(((config & CFG_FLIP_PLACEMENT_SHIFTCLICK) != 0) && (context.getPlayer().func_225608_bj_()/*isSneaking()*/)) facing = facing.getOpposite(); + if(((config & CFG_FLIP_PLACEMENT_SHIFTCLICK) != 0) && (context.getPlayer().isShiftKeyDown())) facing = facing.getOpposite(); return super.getStateForPlacement(context).with(HORIZONTAL_FACING, facing); } diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java index fdf92fd..ffa0bf2 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/blocks/StandardFenceBlock.java @@ -96,7 +96,7 @@ public class StandardFenceBlock extends WallBlock implements StandardBlocks.ISta protected void fillStateContainer(StateContainer.Builder builder) { super.fillStateContainer(builder); } - private boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) + protected boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) { final Block block = facingState.getBlock(); if((block instanceof FenceGateBlock) || (block instanceof StandardFenceBlock) || (block instanceof VariantWallBlock)) return true; diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java b/1.15/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java index 0ac2125..82f4561 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/datagen/LootTableGen.java @@ -85,7 +85,7 @@ public class LootTableGen extends LootTableProvider ItemLootEntry.Builder iltb = ItemLootEntry.builder(block); iltb.acceptFunction(CopyName.builder(Source.BLOCK_ENTITY)); if(block.hasTileEntity(block.getDefaultState())) { - iltb.acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY)); + iltb.acceptFunction(CopyNbt.builder(CopyNbt.Source.BLOCK_ENTITY)); } return LootTable.builder().addLootPool(LootPool.builder().name(rl_path).rolls(ConstantRange.of(1)).addEntry(iltb)); } diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/detail/Auxiliaries.java b/1.15/src/main/java/wile/engineersdecor/libmc/detail/Auxiliaries.java index 9a71847..b763f67 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/detail/Auxiliaries.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/detail/Auxiliaries.java @@ -79,15 +79,15 @@ public class Auxiliaries @OnlyIn(Dist.CLIENT) public static final boolean isShiftDown() { - return (InputMappings.isKeyDown(SidedProxy.mc().func_228018_at_()/*getMainWindow()*/.getHandle(), GLFW.GLFW_KEY_LEFT_SHIFT) || - InputMappings.isKeyDown(SidedProxy.mc().func_228018_at_()/*getMainWindow()*/.getHandle(), GLFW.GLFW_KEY_RIGHT_SHIFT)); + return (InputMappings.isKeyDown(SidedProxy.mc().getMainWindow().getHandle(), GLFW.GLFW_KEY_LEFT_SHIFT) || + InputMappings.isKeyDown(SidedProxy.mc().getMainWindow().getHandle(), GLFW.GLFW_KEY_RIGHT_SHIFT)); } @OnlyIn(Dist.CLIENT) public static final boolean isCtrlDown() { - return (InputMappings.isKeyDown(SidedProxy.mc().func_228018_at_()/*getMainWindow()*/.getHandle(), GLFW.GLFW_KEY_LEFT_CONTROL) || - InputMappings.isKeyDown(SidedProxy.mc().func_228018_at_()/*getMainWindow()*/.getHandle(), GLFW.GLFW_KEY_RIGHT_CONTROL)); + return (InputMappings.isKeyDown(SidedProxy.mc().getMainWindow().getHandle(), GLFW.GLFW_KEY_LEFT_CONTROL) || + InputMappings.isKeyDown(SidedProxy.mc().getMainWindow().getHandle(), GLFW.GLFW_KEY_RIGHT_CONTROL)); } // ------------------------------------------------------------------------------------------------------------------- diff --git a/1.15/src/main/java/wile/engineersdecor/libmc/detail/Overlay.java b/1.15/src/main/java/wile/engineersdecor/libmc/detail/Overlay.java index 322e5c3..01132fe 100644 --- a/1.15/src/main/java/wile/engineersdecor/libmc/detail/Overlay.java +++ b/1.15/src/main/java/wile/engineersdecor/libmc/detail/Overlay.java @@ -89,7 +89,7 @@ public class Overlay if(deadline() < System.currentTimeMillis()) return; String txt = text(); if(txt.isEmpty()) return; - final MainWindow win = mc.func_228018_at_()/*getMainWindow()*/; + final MainWindow win = mc.getMainWindow(); final FontRenderer fr = mc.fontRenderer; final boolean was_unicode = fr.getBidiFlag(); try { diff --git a/1.15/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json b/1.15/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json new file mode 100644 index 0000000..65d6a4f --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence_gate.json @@ -0,0 +1,21 @@ +{ + "variants": { + "facing=north,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" }, + "facing=north,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open" }, + "facing=south,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":180 }, + "facing=south,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":180 }, + "facing=west,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":270 }, + "facing=west,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":270 }, + "facing=east,open=false,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model" , "y":90 }, + "facing=east,open=true,segment=0": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_bottom_model_open", "y":90 }, + + "facing=north,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" }, + "facing=north,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open" }, + "facing=south,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":180 }, + "facing=south,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":180 }, + "facing=west,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":270 }, + "facing=west,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":270 }, + "facing=east,open=false,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model" , "y":90 }, + "facing=east,open=true,segment=1": { "model": "engineersdecor:block/fence/steel_mesh_fence_gate_top_model_open", "y":90 } + } +} diff --git a/1.15/src/main/resources/assets/engineersdecor/lang/en_us.json b/1.15/src/main/resources/assets/engineersdecor/lang/en_us.json index 9d4e118..55234f0 100644 --- a/1.15/src/main/resources/assets/engineersdecor/lang/en_us.json +++ b/1.15/src/main/resources/assets/engineersdecor/lang/en_us.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6Steel framed triple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes.", "block.engineersdecor.steel_mesh_fence": "Steel Mesh Fence", "block.engineersdecor.steel_mesh_fence.help": "§6Industrial style fence.§r\nDoes not connect do regular fences.", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "Small Laboratory Furnace", "block.engineersdecor.small_lab_furnace.help": "§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. Slightly hotter and better isolated than a cobblestone furnace, therefore more efficient. Two auxiliary slots e.g. for storage. Two stack internal hopper fifos for input, output, and fuel. Place an external heater into a aux slot and connect power for electrical smelting speed boost.", "block.engineersdecor.small_electrical_furnace": "Small Electrical Furnace", diff --git a/1.15/src/main/resources/assets/engineersdecor/lang/ru_ru.json b/1.15/src/main/resources/assets/engineersdecor/lang/ru_ru.json index 552ce41..a9ab02b 100644 --- a/1.15/src/main/resources/assets/engineersdecor/lang/ru_ru.json +++ b/1.15/src/main/resources/assets/engineersdecor/lang/ru_ru.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6Стальной каркас окна с тройным остеклением. Хорошо изолирует. §r Не подключается к смежным блокам, таким как стеклянные панели.", "block.engineersdecor.steel_mesh_fence": "Забор из стальной сетки", "block.engineersdecor.steel_mesh_fence.help": "§6Забор в индустриальном стиле.§r\nНе стыкуется с обычными заборами.", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "Компактная лабораторная печь", "block.engineersdecor.small_lab_furnace.help": "§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива сверху. Немного горячее и изолированней каменной, поэтому быстрее. Два вспомогательных слота, например для хранения. Два слота-воронки для ввода, вывода, и топлива. Поместите внешний нагреватель в слот AUX и подключите питание для электрического повышения скорости обработки.", "block.engineersdecor.small_electrical_furnace": "Компактная конвейерная электрическая печь", diff --git a/1.15/src/main/resources/assets/engineersdecor/lang/zh_cn.json b/1.15/src/main/resources/assets/engineersdecor/lang/zh_cn.json index ca27c1e..4a99805 100644 --- a/1.15/src/main/resources/assets/engineersdecor/lang/zh_cn.json +++ b/1.15/src/main/resources/assets/engineersdecor/lang/zh_cn.json @@ -151,6 +151,8 @@ "block.engineersdecor.steel_framed_window.help": "§6钢框三层玻璃窗。绝缘良好。§r不像玻璃板一样连接到相邻方块。", "block.engineersdecor.steel_mesh_fence": "钢丝栅栏", "block.engineersdecor.steel_mesh_fence.help": "§6工业式栅栏。§r\n不与普通栅栏连接。", + "block.engineersdecor.steel_mesh_fence_gate": "Steel Mesh Fence Gate", + "block.engineersdecor.steel_mesh_fence_gate.help": "§6Industrial style fence gate that fits well to the Steel Mesh Fence.§r\nCan be placed as single or double size gate.", "block.engineersdecor.small_lab_furnace": "小型实验室炉", "block.engineersdecor.small_lab_furnace.help": "§6小型金属壳实验室窑。§r消耗固体燃料,向上排气。 比圆石炉稍微热一点,隔热性也更好,因此效率更高。 有两个用于储存的辅助格。两个堆叠的内部漏斗对输入、输出和燃料进行队列管理。 在辅助格放置一个外置加热器并通入电力可以加快熔炼速度。", "block.engineersdecor.small_electrical_furnace": "小型电炉", diff --git a/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json new file mode 100644 index 0000000..eb1db96 --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model.json @@ -0,0 +1,267 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [3.125, 13.625, 9.4375], + "to": [12.8125, 13.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "south": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 9.625, 9.4375], + "to": [12.8125, 9.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "south": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 5.625, 9.4375], + "to": [12.8125, 5.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "south": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 1.625, 9.4375], + "to": [12.8125, 1.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "east": {"uv": [8, 14.02, 8.1875, 14.375], "texture": "#s"}, + "south": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "west": {"uv": [7.8125, 14.02, 8, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 11.625, 9.625], + "to": [12.8125, 11.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "south": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 12.625, 9.875], + "to": [5.3125, 13.23, 10.1875], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 9.5, 10]}, + "faces": { + "north": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "east": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "south": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "west": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 90, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 12.625, 9], + "to": [5.3125, 13.23, 9.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 9.5, 9.125]}, + "faces": { + "north": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "east": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "south": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "west": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 90, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 7.625, 9.625], + "to": [12.9375, 7.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "south": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 3.625, 9.625], + "to": [12.9375, 3.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "south": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 9.25], + "to": [13, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.75, 15, 9.25], + "to": [12.25, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.75, 1, 9.25], + "to": [12.25, 2, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, -5.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3, 1, 9.25], + "to": [3.75, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "south": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [11.75, 1.375, 9.5], + "to": [12.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [7.75, 1.375, 9.5], + "to": [8.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [3.75, 1.375, 9.5], + "to": [4.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [9.75, 1.375, 9.5], + "to": [10.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [5.75, 1.375, 9.5], + "to": [6.125, 15.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 8.5, 9.625]}, + "faces": { + "north": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json new file mode 100644 index 0000000..43688c4 --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_bottom_model_open.json @@ -0,0 +1,267 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [12.625, 13.625, 0.125], + "to": [12.8125, 13.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "west": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 9.625, 0.125], + "to": [12.8125, 9.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "west": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 5.625, 0.125], + "to": [12.8125, 5.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "west": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 1.625, 0.125], + "to": [12.8125, 1.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.8125, 14.02, 8, 14.375], "texture": "#s"}, + "east": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "south": {"uv": [8, 14.02, 8.1875, 14.375], "texture": "#s"}, + "west": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 11.625, 0.125], + "to": [12.625, 11.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "west": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.0625, 12.625, 0.125], + "to": [12.375, 13.23, 2.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "east": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "south": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "west": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 180, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.9375, 12.625, 0.125], + "to": [13.25, 13.23, 2.3125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [10, 2.77, 10.1875, 3.375], "texture": "#s"}, + "east": {"uv": [10.6875, 2.77, 12.875, 3.375], "texture": "#s"}, + "south": {"uv": [5.8125, 2.77, 6, 3.375], "texture": "#s"}, + "west": {"uv": [3.125, 2.77, 5.3125, 3.375], "texture": "#s"}, + "up": {"uv": [3.125, 10, 5.3125, 10.1875], "rotation": 180, "texture": "#s"}, + "down": {"uv": [3.125, 5.8125, 5.3125, 6], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 7.625, 0.5], + "to": [12.625, 7.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "west": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 3.625, 0.5], + "to": [12.625, 3.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "west": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 9.25], + "to": [13, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 15, 0.75], + "to": [13, 16, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 0.75], + "to": [13, 2, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 1, 0], + "to": [13, 16, 0.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"}, + "down": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 270, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"}, + "down": {"uv": [0, 5.5, 3, 6.5], "texture": "#t"} + } + }, + { + "from": [12.5, 1.375, 8.75], + "to": [12.75, 15.855, 9.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 4.75], + "to": [12.75, 15.855, 5.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 0.75], + "to": [12.75, 15.855, 1.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 6.75], + "to": [12.75, 15.855, 7.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 1.375, 2.75], + "to": [12.75, 15.855, 3.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 8.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json new file mode 100644 index 0000000..6f09fa8 --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_inventory.json @@ -0,0 +1,319 @@ +{ + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence", + "t": "engineersdecor:block/fence/steel_mesh_top" + }, + "elements": [ + { + "from": [7.5, 0, 3], + "to": [8.5, 16, 4], + "faces": { + "north": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "east": {"uv": [12, 0, 13, 16], "texture": "#s"}, + "south": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "west": {"uv": [3, 0, 4, 16], "texture": "#s"}, + "up": {"uv": [7.5, 3, 8.5, 4], "texture": "#t"}, + "down": {"uv": [7.5, 12, 8.5, 13], "texture": "#s"} + } + }, + { + "from": [7.5, 0, 12], + "to": [8.5, 16, 13], + "faces": { + "north": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "east": {"uv": [3, 0, 4, 16], "texture": "#s"}, + "south": {"uv": [7.5, 0, 8.5, 16], "texture": "#s"}, + "west": {"uv": [12, 0, 13, 16], "texture": "#s"}, + "up": {"uv": [7.5, 12, 8.5, 13], "texture": "#t"}, + "down": {"uv": [7.5, 3, 8.5, 4], "texture": "#s"} + } + }, + { + "from": [7.5, 15, 4], + "to": [8.5, 16, 12], + "faces": { + "east": {"uv": [4, 0, 12, 1], "texture": "#s"}, + "west": {"uv": [4, 0, 12, 1], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"}, + "down": {"uv": [7.5, 4, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [7.5, 7, 4], + "to": [8.5, 9, 5], + "faces": { + "east": {"uv": [11, 7, 12, 9], "texture": "#s"}, + "south": {"uv": [7.5, 7, 8.5, 9], "texture": "#s"}, + "west": {"uv": [4, 7, 5, 9], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 5], "texture": "#t"}, + "down": {"uv": [7.5, 11, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [7.5, 0, 4], + "to": [8.5, 0.5, 12], + "faces": { + "east": {"uv": [4, 15.5, 12, 16], "texture": "#s"}, + "west": {"uv": [4, 15.5, 12, 16], "texture": "#s"}, + "up": {"uv": [7.5, 4, 8.5, 12], "texture": "#t"}, + "down": {"uv": [7.5, 4, 8.5, 12], "texture": "#s"} + } + }, + { + "from": [8, 4.125, 3.5], + "to": [8.125, 4.5, 12.5], + "faces": { + "east": {"uv": [3.5, 11.5, 12.5, 11.875], "texture": "#s"}, + "west": {"uv": [3.5, 11.5, 12.5, 11.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 5.8125], + "to": [8.05, 15.375, 6.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [9.8125, 0.625, 10.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [5.8125, 0.625, 6.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 8.125, 3.5], + "to": [8.125, 8.5, 12.5], + "faces": { + "east": {"uv": [3.5, 7.5, 12.5, 7.875], "texture": "#s"}, + "west": {"uv": [3.5, 7.5, 12.5, 7.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 9.8125], + "to": [8.05, 15.375, 10.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [5.8125, 0.625, 6.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [9.8125, 0.625, 10.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 12.125, 3.5], + "to": [8.125, 12.5, 12.5], + "faces": { + "east": {"uv": [3.5, 3.5, 12.5, 3.875], "texture": "#s"}, + "west": {"uv": [3.5, 3.5, 12.5, 3.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [8, 2.125, 3.5], + "to": [8.125, 2.5, 12.5], + "faces": { + "east": {"uv": [3.5, 13.5, 12.5, 13.875], "texture": "#s"}, + "west": {"uv": [3.5, 13.5, 12.5, 13.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 3.8125], + "to": [8.05, 15.375, 4.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [11.8125, 0.625, 12.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [3.8125, 0.625, 4.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 6.125, 3.5], + "to": [8.125, 6.5, 12.5], + "faces": { + "east": {"uv": [3.5, 9.5, 12.5, 9.875], "texture": "#s"}, + "west": {"uv": [3.5, 9.5, 12.5, 9.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 7.8125], + "to": [8.05, 15.375, 8.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [7.8125, 0.625, 8.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [7.8125, 0.625, 8.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 10.125, 3.5], + "to": [8.125, 10.5, 12.5], + "faces": { + "east": {"uv": [3.5, 5.5, 12.5, 5.875], "texture": "#s"}, + "west": {"uv": [3.5, 5.5, 12.5, 5.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 11.8125], + "to": [8.05, 15.375, 12.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [3.8125, 0.625, 4.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [11.8125, 0.625, 12.1875, 16], "texture": "#s"} + } + }, + { + "from": [8, 14.125, 3.5], + "to": [8.125, 14.5, 12.5], + "faces": { + "east": {"uv": [3.5, 1.5, 12.5, 1.875], "texture": "#s"}, + "west": {"uv": [3.5, 1.5, 12.5, 1.875], "texture": "#s"}, + "up": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#t"}, + "down": {"uv": [8, 3.5, 8.125, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 1.125, 3.5], + "to": [8, 1.5, 12.5], + "faces": { + "east": {"uv": [3.5, 14.5, 12.5, 14.875], "texture": "#s"}, + "west": {"uv": [3.5, 14.5, 12.5, 14.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 5.125, 3.5], + "to": [8, 5.5, 12.5], + "faces": { + "east": {"uv": [3.5, 10.5, 12.5, 10.875], "texture": "#s"}, + "west": {"uv": [3.5, 10.5, 12.5, 10.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 6.8125], + "to": [8.05, 15.375, 7.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [8.8125, 0.625, 9.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [6.8125, 0.625, 7.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 9.125, 3.5], + "to": [8, 9.5, 12.5], + "faces": { + "east": {"uv": [3.5, 6.5, 12.5, 6.875], "texture": "#s"}, + "west": {"uv": [3.5, 6.5, 12.5, 6.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 10.8125], + "to": [8.05, 15.375, 11.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [4.8125, 0.625, 5.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [10.8125, 0.625, 11.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 13.125, 3.5], + "to": [8, 13.5, 12.5], + "faces": { + "east": {"uv": [3.5, 2.5, 12.5, 2.875], "texture": "#s"}, + "west": {"uv": [3.5, 2.5, 12.5, 2.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.875, 3.125, 3.5], + "to": [8, 3.5, 12.5], + "faces": { + "east": {"uv": [3.5, 12.5, 12.5, 12.875], "texture": "#s"}, + "west": {"uv": [3.5, 12.5, 12.5, 12.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 4.8125], + "to": [8.05, 15.375, 5.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [10.8125, 0.625, 11.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [4.8125, 0.625, 5.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 7.125, 3.5], + "to": [8, 7.5, 12.5], + "faces": { + "east": {"uv": [3.5, 8.5, 12.5, 8.875], "texture": "#s"}, + "west": {"uv": [3.5, 8.5, 12.5, 8.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + }, + { + "from": [7.925, 0, 8.8125], + "to": [8.05, 15.375, 9.1875], + "faces": { + "north": {"uv": [7.95, 0.625, 8.075, 16], "texture": "#s"}, + "east": {"uv": [6.8125, 0.625, 7.1875, 16], "texture": "#s"}, + "south": {"uv": [7.925, 0.625, 8.05, 16], "texture": "#t"}, + "west": {"uv": [8.8125, 0.625, 9.1875, 16], "texture": "#s"} + } + }, + { + "from": [7.875, 11.125, 3.5], + "to": [8, 11.5, 12.5], + "faces": { + "east": {"uv": [3.5, 4.5, 12.5, 4.875], "texture": "#s"}, + "west": {"uv": [3.5, 4.5, 12.5, 4.875], "texture": "#s"}, + "up": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#t"}, + "down": {"uv": [7.875, 3.5, 8, 12.5], "texture": "#s"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [9, 35, 0], + "translation": [0, 0, -1], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1.5, 0], + "scale": [0.3, 0.3, 0.3] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [-0.25, 0.5, 0], + "scale": [0.7, 0.7, 0.7] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 0, -0.25] + } + } +} \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json new file mode 100644 index 0000000..6d0e71a --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model.json @@ -0,0 +1,220 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [3.125, 12.625, 9.4375], + "to": [12.8125, 12.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "south": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 8.625, 9.4375], + "to": [12.8125, 8.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "south": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 4.625, 9.4375], + "to": [12.8125, 4.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "south": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 0.625, 9.4375], + "to": [12.8125, 0.98, 9.625], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "south": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.125, 10.625, 9.625], + "to": [12.8125, 10.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "south": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 6.625, 9.625], + "to": [12.9375, 6.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "south": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3.5, 2.625, 9.625], + "to": [12.9375, 2.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "south": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 90, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 9.25], + "to": [13, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "west": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 90, "texture": "#s"} + } + }, + { + "from": [3.75, 14, 9.25], + "to": [12.25, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [2.25, 0, 13.75, 1], "texture": "#s"}, + "south": {"uv": [2.25, 0, 13.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 90, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 270, "texture": "#s"} + } + }, + { + "from": [3, 0, 9.25], + "to": [3.75, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "east": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "south": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 90, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [11.75, 0, 9.5], + "to": [12.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [7.75, 0, 9.5], + "to": [8.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [3.75, 0, 9.5], + "to": [4.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [9.75, 0, 9.5], + "to": [10.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [5.75, 0, 9.5], + "to": [6.125, 14.855, 9.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.375, 7.5, 9.625]}, + "faces": { + "north": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "south": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"}, + "west": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json new file mode 100644 index 0000000..fa0b52f --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_gate_top_model_open.json @@ -0,0 +1,222 @@ +{ + "textures": { + "p": "engineersdecor:block/fence/steel_mesh_pole_side", + "t": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "s": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [12.625, 12.625, 0.125], + "to": [12.8125, 12.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 2.02, 15.5, 2.375], "texture": "#s"}, + "west": {"uv": [0.5, 2.02, 15.9375, 2.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 8.625, 0.125], + "to": [12.8125, 8.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 6.02, 15.5, 6.375], "texture": "#s"}, + "west": {"uv": [0.5, 6.02, 15.9375, 6.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 4.625, 0.125], + "to": [12.8125, 4.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 10.02, 15.5, 10.375], "texture": "#s"}, + "west": {"uv": [0.5, 10.02, 15.9375, 10.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.625, 0.625, 0.125], + "to": [12.8125, 0.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 14.02, 15.5, 14.375], "texture": "#s"}, + "west": {"uv": [0.5, 14.02, 15.9375, 14.375], "texture": "#s"}, + "up": {"uv": [7.8125, 0.0625, 8, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.8125, 0.5, 8, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 10.625, 0.125], + "to": [12.625, 10.98, 9.8125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 4.02, 15.5, 4.375], "texture": "#s"}, + "west": {"uv": [0.5, 4.02, 15.9375, 4.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 6.625, 0.5], + "to": [12.625, 6.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 8.02, 15.5, 8.375], "texture": "#s"}, + "west": {"uv": [0.5, 8.02, 15.9375, 8.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.4375, 2.625, 0.5], + "to": [12.625, 2.98, 9.9375], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [0.0625, 12.02, 15.5, 12.375], "texture": "#s"}, + "west": {"uv": [0.5, 12.02, 15.9375, 12.375], "texture": "#s"}, + "up": {"uv": [8, 0.0625, 8.1875, 15.5], "rotation": 180, "texture": "#s"}, + "down": {"uv": [8, 0.5, 8.1875, 15.9375], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 9.25], + "to": [13, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "up": {"uv": [7.625, 1.5, 8.375, 2.25], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 14, 0.75], + "to": [13, 15, 9.25], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "east": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "west": {"uv": [2.25, 0, 10.75, 1], "texture": "#s"}, + "up": {"uv": [7.625, 2.25, 8.375, 10.75], "rotation": 180, "texture": "#s"}, + "down": {"uv": [7.625, 2.25, 8.375, 13.75], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [12.25, 0, 0], + "to": [13, 15, 0.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "east": {"uv": [13.75, 0, 14.5, 15], "texture": "#s"}, + "south": {"uv": [7.625, 0, 8.375, 15], "texture": "#s"}, + "west": {"uv": [1.5, 0, 2.25, 15], "texture": "#s"}, + "up": {"uv": [7.625, 13.75, 8.375, 14.5], "rotation": 180, "texture": "#s"} + } + }, + { + "from": [13, 0, 6.5], + "to": [16, 16, 9.5], + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0, 0, 6.5], + "to": [3, 16, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "east": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "south": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "west": {"uv": [6.5, 0, 9.5, 16], "texture": "#p"}, + "up": {"uv": [6.5, 6.5, 9.5, 9.5], "rotation": 90, "texture": "#t"} + } + }, + { + "from": [0.5, 0, 9.5], + "to": [3, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [13, 0, 9.5], + "to": [15.5, 16, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]}, + "faces": { + "east": {"uv": [6, 0, 7, 16], "texture": "#p"}, + "south": {"uv": [0, 0, 3, 16], "texture": "#p"}, + "west": {"uv": [10, 0, 11, 16], "texture": "#p"}, + "up": {"uv": [6, 12, 9, 13], "texture": "#t"} + } + }, + { + "from": [12.5, 0, 8.75], + "to": [12.75, 14.855, 9.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [3.875, 0.145, 4.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [11.75, 0.145, 12.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 4.75], + "to": [12.75, 14.855, 5.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [7.875, 0.145, 8.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [7.75, 0.145, 8.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 0.75], + "to": [12.75, 14.855, 1.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [11.875, 0.145, 12.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [3.75, 0.145, 4.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 6.75], + "to": [12.75, 14.855, 7.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [5.875, 0.145, 6.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [9.75, 0.145, 10.125, 15], "texture": "#s"} + } + }, + { + "from": [12.5, 0, 2.75], + "to": [12.75, 14.855, 3.125], + "rotation": {"angle": 0, "axis": "y", "origin": [12.625, 7.5, 9.625]}, + "faces": { + "north": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "east": {"uv": [9.875, 0.145, 10.25, 15], "texture": "#s"}, + "south": {"uv": [7.875, 0.145, 8.125, 15], "texture": "#s"}, + "west": {"uv": [5.75, 0.145, 6.125, 15], "texture": "#s"} + } + } + ] +} \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json b/1.15/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json new file mode 100644 index 0000000..4490a9b --- /dev/null +++ b/1.15/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence_gate.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/fence/steel_mesh_fence_gate_inventory" } \ No newline at end of file diff --git a/1.15/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png b/1.15/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png index 0177a21..0fdd087 100644 Binary files a/1.15/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png and b/1.15/src/main/resources/assets/engineersdecor/textures/gui/small_electrical_furnace_gui.png differ diff --git a/1.15/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json b/1.15/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json new file mode 100644 index 0000000..8006fc0 --- /dev/null +++ b/1.15/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_mesh_fence_gate_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_mesh_fence_gate" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json new file mode 100644 index 0000000..f2e5fa0 --- /dev/null +++ b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/doors.json @@ -0,0 +1,18 @@ +{ + "name": "Gates and Doors", + "icon": "engineersdecor:steel_mesh_fence_gate", + "category": "buildingblocks", + "sortnum": 1060, + "pages": [ + { + "type": "spotlight", + "title": "Steel Mesh Fence Gate", + "item": "engineersdecor:steel_mesh_fence_gate", + "text": "A fence gate fitting the style of the $(o)Steel Mesh Fence$(). It can be placed one block high for normal fencing, or doubled for higher cage fences, and will form a fence door accordingly.$(br)Redstone open/close signals are accepted for the bottom segment from all sides, for the top segment only from above." + }, + { + "type": "text", + "text": "" + } + ] +} diff --git a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json index df512ab..342a8ea 100644 --- a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json +++ b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/ladders.json @@ -2,7 +2,7 @@ "name": "Ladders", "icon": "engineersdecor:treated_wood_ladder", "category": "buildingblocks", - "sortnum": 1070, + "sortnum": 1080, "pages": [ { "type": "spotlight", diff --git a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json index a1dacee..316a6a6 100644 --- a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json +++ b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/buildingblocks/windows.json @@ -2,7 +2,7 @@ "name": "Windows", "icon": "engineersdecor:treated_wood_window", "category": "buildingblocks", - "sortnum": 1060, + "sortnum": 1070, "pages": [ { "type": "spotlight", diff --git a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json index ac8fc4e..6cfd386 100644 --- a/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json +++ b/1.15/src/main/resources/data/engineersdecor/patchouli_books/engineersdecor_manual/en_us/entries/crafting/small_electrical_furnace.json @@ -20,7 +20,7 @@ }, { "type": "text", - "text": "" + "text": "§nSpeed override switch$()$(br)A four-position switch in the bottom right area of the GUI allows to alter the processing speed of the furnace. Default is position 1 (normal). At high power expenses, you can alter this: $(br)$(li)Position 0: OFF$(li)Position 1: x1.0 -> RF x1$(li)Position 2: x1.5 -> RF x2$(li)Position 3: x2.0 -> RF x4$(br2)(Positions 0..4 are down, left, top, right)." } ] } diff --git a/1.15/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json b/1.15/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json new file mode 100644 index 0000000..26a4fc8 --- /dev/null +++ b/1.15/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_gate_recipe.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "engineersdecor:optional", + "result": "engineersdecor:steel_mesh_fence_gate", + "required": ["engineersdecor:thin_steel_pole", "engineersdecor:steel_mesh_fence"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PFP" + ], + "key": { + "P": { + "item": "engineersdecor:thin_steel_pole" + }, + "F": { + "item": "engineersdecor:steel_mesh_fence" + } + }, + "result": { + "item": "engineersdecor:steel_mesh_fence_gate", + "count": 2 + } +} diff --git a/Makefile b/Makefile index edf1d93..731edef 100644 --- a/Makefile +++ b/Makefile @@ -41,10 +41,6 @@ compare: @djs tasks.js compare-blockstates -v @djs tasks.js compare-textures -v -migrate-from-112: - @cd 1.12; make -s port-languages - @djs tasks.js migrate-textures -v - # For reviewers: I am using a local repository for experimental changes, # this target copies the local working tree to the location of the # repository that you cloned. diff --git a/meta/update.json b/meta/update.json index d963340..6099951 100644 --- a/meta/update.json +++ b/meta/update.json @@ -4,12 +4,12 @@ "1.12.2-recommended": "1.0.19", "1.12.2-latest": "1.0.19", "1.14.4-recommended": "", - "1.14.4-latest": "1.0.19-b5", + "1.14.4-latest": "1.0.20-b1", "1.15.2-recommended": "", - "1.15.2-latest": "1.0.19-b5" + "1.15.2-latest": "1.0.20-b1" }, "1.12.2": { - "1.0.19": "[R] Release based on v1.0.19-b4. Release-to-release changes: * Transfer fixes for Tree Cutter / Block Braker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements\n[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.", + "1.0.19": "[R] Release based on v1.0.19-b4. Release-to-release changes: * Transfer fixes for Tree Cutter / Block Breaker, and Factory hopper. * Cleanups, feature backports * Visual fixes and improvements\n[A] Backport of status display for Tree Cutter, Block Breaker and Solar Panel.", "1.0.19-b4": "[A] Creative tab opt-out visibility handling added (issue #90, thx pimalel233).", "1.0.19-b3": "[A] Factory Hopper: Added bottom item handler (CR#227).", "1.0.19-b2": "[F] Fixed Floor Grating item pass-through jitters (thx Cid).\n[M] Removed obsolete recipe collision testing recipes.", @@ -89,6 +89,7 @@ "1.0.0-b1": "[A] Initial structure.\n[A] Added clinker bricks and clinker brick stairs.\n[A] Added slag bricks and slag brick stairs.\n[A] Added metal rung ladder.\n[A] Added staggered metal steps ladder.\n[A] Added treated wood ladder.\n[A] Added treated wood pole.\n[A] Added treated wood table." }, "1.14.4": { + "1.0.20-b1": "[A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption increases at higher rate (off, 100%, 200%, 400%).\n[A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence).\n[M] Waste Incinerator processing speed tweaked.", "1.0.19-b5": "[A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter.\n[A] Solar Panel power curve tuned.\n[A] Mod manual 1st edition release recipe added.\n[A] Factory Hopper: Resetting NBT when breaking with empty inventory (for stacking), enabled item cap for all sides.\n[M] Electrical Furnace model polished.", "1.0.19-b4": "[A] Ported primary Immersive Engineering dependent recipes (alternative recipes will still work if IE is not installed).\n[M] Furni comparator output overrides reflect input slots and empty fuel state/power-cutoff.\n[M] Solar Panel config: Default value for internal battery capacity increased.\n[F] Block Placer: Shifted GUI player slots 1px to the right.\n[A] Added mod block tags for slabs, stairs, and walls (PR#89, thanks CrudeAustin for the data).\n[A] Added experimental Patchouli manual (creative only).\n[!] Skipped blacklisting Treated Wood Crafting Table slots for the inventorysorter mod due to potential startup crashes for single player games (issue #88 fix deferred).", "1.0.19-b3": "[M] Config tweaks: Value limit ranges increased to facilitate modpacking.\n[A] Factory Hopper: Added bottom item handler (CR#227).\n[M] Block shapes refined.\n[F] Fixed duping bug (issue #87, thx Nachtflame)", @@ -136,6 +137,7 @@ "1.0.7-b3": "[A] Initial 1.14.2 port of decorative blocks." }, "1.15.2": { + "1.0.20-b1": "[A] Electrical Furnace: Added four-position speed switch (off, 100%, 150%, 200%), power consumption increases at higher rate (off, 100%, 200%, 400%).\n[A] Added Steel Mesh Fence Gate (single or double height gate fitting to the Steel Mesh Fence).\n[M] Waste Incinerator processing speed tweaked.\n[F] Fixed steel table visual glitch (thx Urbanxx001).\n[M] MCP/Forge mappings updated.", "1.0.19-b5": "[A] Added right-click display of power and progress information for Block Breaker, Solar Panel, and Tree Cutter.\n[A] Solar Panel power curve tuned.\n[A] Mod manual 1st edition release recipe added.\n[A] Factory Hopper: Resetting NBT when breaking with empty inventory (for stacking), enabled item cap for all sides.\n[M] Electrical Furnace model polished.", "1.0.19-b4": "[A] Ported primary Immersive Engineering dependent recipes (alternative recipes will still work if IE is not installed).\n[F] Blacklisted Treated Wood Crafting Table in inventorysorter mod (issue #88, thx Nachtflame).\n[M] Furni comparator output overrides reflect input slots and empty fuel state/power-cutoff.\n[M] Solar Panel config: Default value for internal battery capacity increased.\n[F] Block Placer: Shifted GUI player slots 1px to the right.\n[A] Added mod block tags for slabs, stairs, and walls (PR#89, thanks CrudeAustin for the data).\n[A] Added experimental Patchouli manual (creative only).", "1.0.19-b3": "[M] Config tweaks: Value limit ranges increased to facilitate modpacking.\n[A] Factory Hopper: Added bottom item handler (CR#227).\n[M] Block shapes refined.\n[F] Fixed duping bug (issue #87, thx Nachtflame)",