diff --git a/1.12/gradle.properties b/1.12/gradle.properties index 0128884..4ec3dd3 100644 --- a/1.12/gradle.properties +++ b/1.12/gradle.properties @@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G version_minecraft=1.12.2 version_forge=14.23.5.2768 version_jei=4.10.0.198 -version_engineersdecor=1.0.6 +version_engineersdecor=1.0.7 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 9786b11..e72c9da 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,9 +1,12 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.7": "[R] Release based on v1.0.7-b2. Release-to-release changes: * Factory dropper added. * Defense system warning sign added. * Warning sign backgrounds adapted. * Standalone recipes added. * Lang files updated.\n[A] Added standalone recipes for signs, factory dropper, and electrical furnace.\n[M] Adapted \"Caution\" sign backgrounds to the yellow defense system warning background.", + "1.0.7-b2": "[A] Added Defense System Warning sign (design by J. Carver).\n[M] Factory dropper non-experimental now. GUI click area tuning. \"Fast drop\" symbol replaced from arrow to dog icon (thx overchoice for that icon).\n[M] Lang files updated.", + "1.0.7-b1": "[M] Factory dropper (config:experimental) button placement fixed, GUI vs external view x/y markers added, internal trigger logic simplified. Thx @overchoice for beta testing!", "1.0.6": "[R] Release based on v1.0.6-b1. Release-to-release changes: * Fixed FML remapping issue (COULD CAUSE CRASHES). * Small waste incinerator added. * Lang files updated/corrections. * Metal ladder easier to break.\n[A] Added factory dropper (config:experimental).\n[C] Thx to abdurraslan for the detailed issue #25.", "1.0.6-b1": "[A] Added small waste incinerator (delayed fifo-buffered item disposal).\n[M] Fixed item/block name capitalization (by Voxelo).\n[M] Metal ladders are easier to break/harvest.\n[F] Fixed FML remapping issue by using dedicated IItemHandler instances.", - "1.0.5": "[R] Release based on v1.0.5-b1. Release-to-release changes: * Small electrical passthrough-furnace added. * Passive fluid accumulator added. * Config options added. * Sign plates added. * Minor bug fixes.\n[A] Added sign \"Electrical hazzard\"/\"Caution hot wire\".\n[A] Added sign \"Caution dangerous there\" (skull/bones).", + "1.0.5": "[R] Release based on v1.0.5-b1. Release-to-release changes: * Small electrical passthrough-furnace added. * Passive fluid accumulator added. * Config options added. * Sign plates added. * Minor bug fixes.\n[A] Added sign \"Electrical hazard\"/\"Caution hot wire\".\n[A] Added sign \"Caution dangerous there\" (skull/bones).", "1.0.5-b1": "[A] Added passive fluid accumulator.\n[A] Added small electrical passthrough-furnace.\n[F] Fixed version check URL.\n[M] Opt-out config options for valves, passive fluid accumulator, and furni.", "1.0.4": "[R] Release based on v1.0.4-b9. Release-to-release changes: * Crafting table: Quick crafting history re-fab, JEI integration. * Rendering improvements and issue fixes (stairs, ambient occlusion, optifine, etc). * Walls with texture variations. * Thin/thick steel poles with support feet/heads. * Horizontal steel double-T support beams added. * Fluid pipe valves added: Check valve, redstone controlled valve, analog redstone controlled valve. Support pressurized transfer. * Tool tip documentation (CTRL-SHIFT) for stairs added. * Internal code cleanups. * Recipes tuned.\n[E] Added pass-through electrical furnace (experimental, see config).", "1.0.4-b9": "[F] Inserting fluids with pressurized tag only into IE piping.\n[F] Valve redstone connector rendering does not check for \"can connect redstone\" but only for \"can provide power\".\n[M] Valves are adapted to be detected as pipe by IE.", @@ -37,7 +40,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." }, "promos": { - "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.6" + "1.12.2-recommended": "1.0.7", + "1.12.2-latest": "1.0.7" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index b9ed8e2..d51f796 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,6 +10,29 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history + ------------------------------------------------------------------- + - v1.0.7 [R] Release based on v1.0.7-b2. Release-to-release changes: + * Factory dropper added. + * Defense system warning sign added. + * Warning sign backgrounds adapted. + * Standalone recipes added. + * Lang files updated. + ------------------------------------------------------------------- + [A] Added standalone recipes for signs, factory dropper, and + electrical furnace. + [M] Adapted "Caution" sign backgrounds to the yellow defense + system warning background. + + - v1.0.7-b2 [A] Added Defense System Warning sign (design by J. Carver). + [M] Factory dropper non-experimental now. GUI click area tuning. + "Fast drop" symbol replaced from arrow to dog icon (thx + overchoice for that icon). + [M] Lang files updated. + + - v1.0.7-b1 [M] Factory dropper (config:experimental) button placement fixed, + GUI vs external view x/y markers added, internal trigger logic + simplified. Thx @overchoice for beta testing! + ------------------------------------------------------------------- - v1.0.6 [R] Release based on v1.0.6-b1. Release-to-release changes: * Fixed FML remapping issue (COULD CAUSE CRASHES). @@ -33,7 +56,7 @@ Mod sources for Minecraft version 1.12.2. * Sign plates added. * Minor bug fixes. ------------------------------------------------------------------- - [A] Added sign "Electrical hazzard"/"Caution hot wire". + [A] Added sign "Electrical hazard"/"Caution hot wire". [A] Added sign "Caution dangerous there" (skull/bones). - v1.0.5-b1 [A] Added passive fluid accumulator. diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java index 0a04d0b..6d1bc89 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java @@ -80,6 +80,7 @@ public class BlockDecorCraftingTable extends BlockDecorDirected public boolean hasTileEntity(IBlockState state) { return true; } + @Override @Nullable public TileEntity createTileEntity(World world, IBlockState state) { return new BlockDecorCraftingTable.BTileEntity(); } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java index 6d6142b..55508cb 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -8,6 +8,8 @@ */ package wile.engineersdecor.blocks; +import net.minecraft.block.state.BlockFaceShape; +import net.minecraft.world.IBlockAccess; import net.minecraftforge.items.wrapper.SidedInvWrapper; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.detail.Networking; @@ -47,7 +49,6 @@ import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.io.IOException; -import java.util.Arrays; public class BlockDecorDropper extends BlockDecorDirected { @@ -56,6 +57,10 @@ public class BlockDecorDropper extends BlockDecorDirected public BlockDecorDropper(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) { super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); } + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face) + { return BlockFaceShape.SOLID; } + @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, FACING, OPEN); } @@ -86,6 +91,7 @@ public class BlockDecorDropper extends BlockDecorDirected public boolean hasTileEntity(IBlockState state) { return true; } + @Override @Nullable public TileEntity createTileEntity(World world, IBlockState state) { return new BlockDecorDropper.BTileEntity(); } @@ -94,12 +100,13 @@ public class BlockDecorDropper extends BlockDecorDirected public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { if(world.isRemote) return; - if((!stack.hasTagCompound()) || (!stack.getTagCompound().hasKey("inventory"))) return; - NBTTagCompound inventory_nbt = stack.getTagCompound().getCompoundTag("inventory"); - if(inventory_nbt.isEmpty()) return; + if((!stack.hasTagCompound()) || (!stack.getTagCompound().hasKey("tedata"))) return; + NBTTagCompound te_nbt = stack.getTagCompound().getCompoundTag("tedata"); + if(te_nbt.isEmpty()) return; final TileEntity te = world.getTileEntity(pos); if(!(te instanceof BlockDecorDropper.BTileEntity)) return; - ((BlockDecorDropper.BTileEntity)te).readnbt(inventory_nbt, false); + ((BlockDecorDropper.BTileEntity)te).readnbt(te_nbt, false); + ((BlockDecorDropper.BTileEntity)te).reset_rtstate(); ((BlockDecorDropper.BTileEntity)te).markDirty(); } @@ -110,11 +117,11 @@ public class BlockDecorDropper extends BlockDecorDirected TileEntity te = world.getTileEntity(pos); if(!(te instanceof BTileEntity)) return super.removedByPlayer(state, world, pos, player, willHarvest); ItemStack stack = new ItemStack(this, 1); - NBTTagCompound inventory_nbt = new NBTTagCompound(); - ItemStackHelper.saveAllItems(inventory_nbt, ((BTileEntity)te).stacks_, false); - if(!inventory_nbt.isEmpty()) { + NBTTagCompound te_nbt = new NBTTagCompound(); + ((BTileEntity) te).writenbt(te_nbt, false); + if(!te_nbt.isEmpty()) { NBTTagCompound nbt = new NBTTagCompound(); - nbt.setTag("inventory", inventory_nbt); + nbt.setTag("tedata", te_nbt); stack.setTagCompound(nbt); } world.spawnEntity(new EntityItem(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, stack)); @@ -132,7 +139,7 @@ public class BlockDecorDropper extends BlockDecorDirected for(ItemStack stack: ((BTileEntity)te).stacks_) { if(!stack.isEmpty()) world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), stack)); } - ((BTileEntity)te).reset(); + ((BTileEntity)te).reset_rtstate(); super.onBlockExploded(world, pos, explosion); } @@ -225,9 +232,9 @@ public class BlockDecorDropper extends BlockDecorDirected } else if(isPointInRegion(129, 50, 44, 10, mouseX, mouseY)) { int period = (mx-135); if(period < -1) { - period = container.fields_[6] - 1; // - + period = container.fields_[6] - 3; // - } else if(period >= 34) { - period = container.fields_[6] + 1; // + + period = container.fields_[6] + 3; // + } else { period = (int)(0.5 + ((100.0 * period)/34)); } @@ -300,7 +307,7 @@ public class BlockDecorDropper extends BlockDecorDirected } // drop period { - int px = ((container.fields_[6] * 34) / 100); + int px = (int)Math.round(((33.0 * container.fields_[6]) / 100) + 1); int x = x0 + 134 - 2 + MathHelper.clamp(px, 0, 33); int y = y0 + 56; drawTexturedModalRect(x, y, 190, 31, 5, 5); @@ -465,8 +472,8 @@ public class BlockDecorDropper extends BlockDecorDirected private int drop_xdev_ = 0; private int drop_ydev_ = 0; private int drop_count_ = 1; - private int drop_logic_ = 0; - private int drop_period_ = 20; + private int drop_logic_ = DROPLOGIC_EXTERN_ANDGATE; + private int drop_period_ = 0; private int drop_slot_index_ = 0; private int tick_timer_ = 0; protected NonNullList stacks_; @@ -477,16 +484,15 @@ public class BlockDecorDropper extends BlockDecorDirected } public BTileEntity() - { reset(); } - - protected void reset() { stacks_ = NonNullList.withSize(NUM_OF_SLOTS, ItemStack.EMPTY); + reset_rtstate(); + } + + public void reset_rtstate() + { block_power_signal_ = false; block_power_updated_ = false; - drop_count_ = 1; - drop_period_ = 20; - drop_logic_ = DROPLOGIC_EXTERN_ANDGATE; for(int i=0; i= INPUT_SLOTS_SIZE) drop_slot_index_ = 0; int ic = drop_slot_index_; drop_slot_index_ = next_slot(drop_slot_index_); ItemStack ds = stacks_.get(ic); if((!ds.isEmpty()) && (ds.getCount() >= drop_count_)) { - filter_trigger_slots[0] = ic; + drop_stacks[0] = ds.splitStack(drop_count_); + stacks_.set(ic, ds); break; } } + } else { + for(int fi=0; fi 1) { + drop_stacks[fi] = stacks_.get(CTRL_SLOTS_FIRST+fi).copy(); + int ntoremove = drop_stacks[fi].getCount(); + for(int i=INPUT_SLOTS_SIZE-1; (i>=0) && (ntoremove>0); --i) { + ItemStack stack = stacks_.get(i); + if(!stack.isItemEqual(drop_stacks[fi])) continue; + if(stack.getCount() <= ntoremove) { + ntoremove -= stack.getCount(); + stacks_.set(i, ItemStack.EMPTY); + } else { + stack.shrink(ntoremove); + ntoremove = 0; + stacks_.set(i, stack); + } + } + if(ntoremove > 0) drop_stacks[fi].shrink(ntoremove); + } + } } // drop action - if(drop_timer_ <= 0) { - boolean dropped = false; - for(int i = 0; i < filter_trigger_slots.length; ++i) { - if(filter_trigger_slots[i] < 0) continue; - ItemStack ds = stacks_.get(filter_trigger_slots[i]); - if(ds.getCount() >= drop_count_) { - ItemStack drop_stack = ds.splitStack(drop_count_); - if(!drop_stack.isEmpty()) { - dirty = true; - drop(world, pos, state.getValue(FACING), drop_stack, drop_speed_, drop_xdev_, drop_ydev_, drop_noise_); - dropped = true; - } - } - } - // cooldown - if(dropped) drop_timer_ = DROP_PERIOD_OFFSET + drop_period_ * 2; // 0.1s time base -> 100%===10s - // drop sound - if(dropped && ((drop_logic_ & DROPLOGIC_SILENT_DROP) == 0)) { - world.playSound(null, pos, SoundEvents.BLOCK_CLOTH_STEP, SoundCategory.BLOCKS, 0.1f, 4f); - } - // advance to next nonempty slot. - for(int i = 0; i < INPUT_SLOTS_SIZE; ++i) { - if(!stacks_.get(drop_slot_index_).isEmpty()) break; - drop_slot_index_ = next_slot(drop_slot_index_); - } + boolean dropped = false; + for(int i = 0; i < drop_stacks.length; ++i) { + if(drop_stacks[i].isEmpty()) continue; + dirty = true; + drop(world, pos, state.getValue(FACING), drop_stacks[i], drop_speed_, drop_xdev_, drop_ydev_, drop_noise_); + dropped = true; + } + // cooldown + if(dropped) drop_timer_ = DROP_PERIOD_OFFSET + drop_period_ * 2; // 0.1s time base -> 100%===10s + // drop sound + if(dropped && ((drop_logic_ & DROPLOGIC_SILENT_DROP) == 0)) { + world.playSound(null, pos, SoundEvents.BLOCK_CLOTH_STEP, SoundCategory.BLOCKS, 0.1f, 4f); + } + // advance to next nonempty slot. + for(int i = 0; i < INPUT_SLOTS_SIZE; ++i) { + if(!stacks_.get(drop_slot_index_).isEmpty()) break; + drop_slot_index_ = next_slot(drop_slot_index_); } } if(dirty) markDirty(); diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java index ff66b3d..ce61559 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java @@ -96,6 +96,7 @@ public class BlockDecorFurnace extends BlockDecorDirected public boolean hasTileEntity(IBlockState state) { return true; } + @Override @Nullable public TileEntity createTileEntity(World world, IBlockState state) { return new BlockDecorFurnace.BTileEntity(); } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java index 7cec5c3..e73ff59 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnaceElectrical.java @@ -50,6 +50,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); } + @Override @Nullable public TileEntity createTileEntity(World world, IBlockState state) { return new BlockDecorFurnaceElectrical.BTileEntity(); } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java index b86a57f..4c4de69 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java @@ -45,7 +45,6 @@ public class BlockDecorHorizontalSupport extends BlockDecor public BlockDecorHorizontalSupport(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) { super(registryName, config|CFG_HORIZIONTAL, material, hardness, resistance, sound); - final boolean is_horizontal = ((config & CFG_HORIZIONTAL)!=0); AABBs = new ArrayList(Arrays.asList( // Effective bounding box ModAuxiliaries.getRotatedAABB(unrotatedAABB.grow(2.0/16, 0, 0), EnumFacing.NORTH, true), diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java index e8f565c..8c38508 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPassiveFluidAccumulator.java @@ -48,10 +48,12 @@ public class BlockDecorPassiveFluidAccumulator extends BlockDecorDirected public boolean hasTileEntity(IBlockState state) { return true; } + @Override @Nullable public TileEntity createTileEntity(World world, IBlockState state) { return new BlockDecorPassiveFluidAccumulator.BTileEntity(); } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(world.isRemote) return true; @@ -61,6 +63,7 @@ public class BlockDecorPassiveFluidAccumulator extends BlockDecorDirected return true; } + @Override public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { TileEntity te = world.getTileEntity(pos); if(te instanceof BlockDecorPipeValve.BTileEntity) ((BTileEntity)te).block_changed(); } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java index dc1ee93..bef819b 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java @@ -242,6 +242,13 @@ public class ModBlocks ModAuxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) ); + public static final BlockDecorDirected SIGN_DEFENSE = new BlockDecorDirected( + "sign_defense", + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_OPPOSITE_PLACEMENT|(1<= 1.13.2-25.0.214. + [A] Added sign "Electrical hazard"/"Caution hot wire". + [A] Added sign "Caution dangerous there" (skull/bones). + [A] Added horizontal steel double-T support beam with pole connections. + - v1.0.4-b3 [V] Version assignment: All features of v1.0.4-b3-1.12.2 that can be ported to 1.13.2 implemented/prepared, therefore version re-iterated. [A] Lab furnace ported to 1.13. diff --git a/Makefile b/Makefile index 4c420a9..3c85508 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ init-1.12: ; -@cd 1.12; make -s init init-1.13: ; -@cd 1.13; make -s init dist-1.12: ; @cd 1.12; make -s dist dist-1.13: ; @cd 1.13; make -s dist -dist: dist-1.12 dist-1.13 | update-json +dist: ; @echo "First change to specific version directory." update-json: @echo "[main] Update update.json ..." diff --git a/credits.md b/credits.md index 69da9b2..66bd702 100644 --- a/credits.md +++ b/credits.md @@ -26,6 +26,8 @@ IE components used in this mod: - immersiveengineering:textures/block/metal_device1_fluid_pipe.png (for valves). + - Fluid accumulator texture is a modified IE metal barrel texture. + Source codes derived (inspected e.g. for trouble shooting and learning how things work): - Ore dict based recipe registration from blusunrize.immersiveengineering.common.IERecipes. diff --git a/meta/update.json b/meta/update.json index dad7cae..6965b17 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,9 +1,12 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.7": "[R] Release based on v1.0.7-b2. Release-to-release changes: * Factory dropper added. * Defense system warning sign added. * Warning sign backgrounds adapted. * Standalone recipes added. * Lang files updated.\n[A] Added standalone recipes for signs, factory dropper, and electrical furnace.\n[M] Adapted \"Caution\" sign backgrounds to the yellow defense system warning background.", + "1.0.7-b2": "[A] Added Defense System Warning sign (design by J. Carver).\n[M] Factory dropper non-experimental now. GUI click area tuning. \"Fast drop\" symbol replaced from arrow to dog icon (thx overchoice for that icon).\n[M] Lang files updated.", + "1.0.7-b1": "[M] Factory dropper (config:experimental) button placement fixed, GUI vs external view x/y markers added, internal trigger logic simplified. Thx @overchoice for beta testing!", "1.0.6": "[R] Release based on v1.0.6-b1. Release-to-release changes: * Fixed FML remapping issue (COULD CAUSE CRASHES). * Small waste incinerator added. * Lang files updated/corrections. * Metal ladder easier to break.\n[A] Added factory dropper (config:experimental).\n[C] Thx to abdurraslan for the detailed issue #25.", "1.0.6-b1": "[A] Added small waste incinerator (delayed fifo-buffered item disposal).\n[M] Fixed item/block name capitalization (by Voxelo).\n[M] Metal ladders are easier to break/harvest.\n[F] Fixed FML remapping issue by using dedicated IItemHandler instances.", - "1.0.5": "[R] Release based on v1.0.5-b1. Release-to-release changes: * Small electrical passthrough-furnace added. * Passive fluid accumulator added. * Config options added. * Sign plates added. * Minor bug fixes.\n[A] Added sign \"Electrical hazzard\"/\"Caution hot wire\".\n[A] Added sign \"Caution dangerous there\" (skull/bones).", + "1.0.5": "[R] Release based on v1.0.5-b1. Release-to-release changes: * Small electrical passthrough-furnace added. * Passive fluid accumulator added. * Config options added. * Sign plates added. * Minor bug fixes.\n[A] Added sign \"Electrical hazard\"/\"Caution hot wire\".\n[A] Added sign \"Caution dangerous there\" (skull/bones).", "1.0.5-b1": "[A] Added passive fluid accumulator.\n[A] Added small electrical passthrough-furnace.\n[F] Fixed version check URL.\n[M] Opt-out config options for valves, passive fluid accumulator, and furni.", "1.0.4": "[R] Release based on v1.0.4-b9. Release-to-release changes: * Crafting table: Quick crafting history re-fab, JEI integration. * Rendering improvements and issue fixes (stairs, ambient occlusion, optifine, etc). * Walls with texture variations. * Thin/thick steel poles with support feet/heads. * Horizontal steel double-T support beams added. * Fluid pipe valves added: Check valve, redstone controlled valve, analog redstone controlled valve. Support pressurized transfer. * Tool tip documentation (CTRL-SHIFT) for stairs added. * Internal code cleanups. * Recipes tuned.\n[E] Added pass-through electrical furnace (experimental, see config).", "1.0.4-b9": "[F] Inserting fluids with pressurized tag only into IE piping.\n[F] Valve redstone connector rendering does not check for \"can connect redstone\" but only for \"can provide power\".\n[M] Valves are adapted to be detected as pipe by IE.", @@ -37,6 +40,10 @@ "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.13.2": { + "1.0.7-b3": "[V] Version assignment: All features of v1.0.7-b3-1.12.2 that can be ported to 1.13.2 implemented/prepared, therefore version re-assigned.\n[A] Sign background colors adapted.", + "1.0.4-b6": "[A] Added Small Electrical Furnace.\n[A] Added Small Waste Incinerator.\n[A] Experimental: Added fluid check valve.\n[A] Experimental: Added fluid redstone controlled valve.\n[A] Experimental: Added fluid redstone analog valve.\n[A] Experimental: Added passive fluid accumulator.", + "1.0.4-b5": "[A] Added Factory Dropper.\n[A] Added \"Caution Defense System Ahead\" sign.", + "1.0.4-b4": "[U] Updated forge dependency: REQUIRES FORGE >= 1.13.2-25.0.214.\n[A] Added sign \"Electrical hazard\"/\"Caution hot wire\".\n[A] Added sign \"Caution dangerous there\" (skull/bones).\n[A] Added horizontal steel double-T support beam with pole connections.", "1.0.4-b3": "[V] Version assignment: All features of v1.0.4-b3-1.12.2 that can be ported to 1.13.2 implemented/prepared, therefore version re-iterated.\n[A] Lab furnace ported to 1.13.\n[A] Treated wood crafting table: Added crafting table history/quick craft.\n[A] Treated wood stool: Sitting on the stool implemented.\n[A] Steel poles (thick/thin) with support heads/foots added.\n[E] Prepared position dependent texture variation for walls (clinker, slag, rebar concrete), missing one forge feature yet for completion.\n[E] Prepared multi-layer rendering for windows, needs forge feature implementation.", "1.0.2-b3": "[A] Added treated wood window.\n[A] Added treated wood pole support.\n[A] Added treated wood pole head.\n[A] Added steel framed window.", "1.0.2-b2": "[A] Added wall decomposition recipes.\n[A] Added slag brick wall.\n[M] Climbing/descending mod ladders is faster when looking up or down and not sneaking.\n[M] Panzer glass material definition changed.", @@ -46,9 +53,9 @@ "1.0.0-a1": "[A] Initial port to 1.13.2 with Forge beta." }, "promos": { - "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.6", + "1.12.2-recommended": "1.0.7", + "1.12.2-latest": "1.0.7", "1.13.2-recommended": "", - "1.13.2-latest": "1.0.4-b3" + "1.13.2-latest": "1.0.7-b3" } } \ No newline at end of file diff --git a/readme.md b/readme.md index d194f46..7ac5ed3 100644 --- a/readme.md +++ b/readme.md @@ -123,6 +123,17 @@ looking manufacturing contraptions. Current feature set: is full, the oldest stack will be disposed. The processing speed can be increased by connecting electrical RF/FE power. +- *Factory dropper*: Dropper with GUI configurable drop force, direction, stack size, + trigger cool-down delay, and trigger logic. Three trigger slots ("filter slots") can + be used as internal trigger. They emit an internal signal if their item is found in + in the dropper inventory (also at least the stack size of a trigger slot). Internal + triggers can be easily combined with the external redstone signal trigger using + logical *AND* or *OR* gates. If internal triggers match, the dropper will spit out + exactly the stacks in these slots. That allows to drop e.g. always nine lapis, + redstone, nuggets, etc on a conveyor to feed a compression metal press - instantly + and automatically after nine of these items have been inserted into the dropper. + + More to come slowly but steadily. ----