From f8442e36bfc8109759f9e1d34a061cd1b4ba1765 Mon Sep 17 00:00:00 2001 From: stfwi Date: Fri, 24 May 2019 22:20:55 +0200 Subject: [PATCH 1/4] Factory dropper fixes and logic simplifications. --- 1.12/gradle.properties | 2 +- 1.12/meta/update.json | 3 +- 1.12/readme.md | 4 + .../blocks/BlockDecorDropper.java | 123 ++++++++++-------- .../blocks/BlockDecorHorizontalSupport.java | 1 - .../assets/engineersdecor/lang/en_us.lang | 7 +- .../assets/engineersdecor/lang/ru_ru.lang | 7 +- .../blocks/device/factory_dropper_bottom.png | Bin 535 -> 556 bytes .../textures/gui/factory_dropper_gui.png | Bin 20850 -> 20895 bytes 1.13/.gitignore | 1 + 1.13/readme.md | 5 + Makefile | 2 +- meta/update.json | 6 +- 13 files changed, 101 insertions(+), 60 deletions(-) diff --git a/1.12/gradle.properties b/1.12/gradle.properties index 0128884..f7c63cd 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-b1 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 9786b11..2e8f250 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.7-b1": "[A] 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).", @@ -38,6 +39,6 @@ }, "promos": { "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.6" + "1.12.2-latest": "1.0.7-b1" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index b9ed8e2..d055883 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,6 +10,10 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history + - v1.0.7-b1 [A] 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). 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..a4543fc 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); } @@ -94,12 +99,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 +116,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 +138,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); } @@ -465,8 +471,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 +483,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/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/resources/assets/engineersdecor/lang/en_us.lang b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang index ac3dde1..84b0bb9 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang @@ -122,7 +122,12 @@ tile.engineersdecor.passive_fluid_accumulator.help=§6Vacuum suction based fluid Drains fluids from adjacent tanks when being drained from the output port by a pump. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.factory_dropper.name=Factory Dropper -tile.engineersdecor.factory_dropper.help=§6Dropper suitable for advanced factory automation.§r +tile.engineersdecor.factory_dropper.help=§6Dropper suitable for advanced factory automation.§r Has twelve round-robin selected slots. \ + Drop force, angle, stack size, and cool-down delay adjustable in the GUI. Three stack compare \ + solts with logical AND or OR can be used as internal trigger source. Internal trigger can be \ + AND'ed or OR'ed with the external redstone signal trigger. Trigger simulation buttons for testing. \ + Pre-opens shutter door when internal trigger conditions are met. Drops all matching stacks \ + simultaneously. Click on all elements in the GUI to see how it works. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.sign_decor.name=Sign Plate (Engineer's decor) tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots. diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang index 31253b9..a0096e7 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang @@ -115,7 +115,12 @@ tile.engineersdecor.passive_fluid_accumulator.name=Passive fluid accumulator Drains fluids from adjacent tanks when being drained from the output port by a pump. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.factory_dropper.name=Factory dropper -#tile.engineersdecor.factory_dropper.help=§6Dropper suitable for advanced factory automation.§r +#tile.engineersdecor.factory_dropper.help=§6Dropper suitable for advanced factory automation.§r Has twelve round-robin selected slots. \ + Drop force, angle, stack size, and cool-down delay adjustable in the GUI. Three stack compare \ + solts with logical AND or OR can be used as internal trigger source. Internal trigger can be \ + AND'ed or OR'ed with the external redstone signal trigger. Trigger simulation buttons for testing. \ + Pre-opens shutter door when internal trigger conditions are met. Drops all matching stacks \ + simultaneously. Click on all elements in the GUI to see how it works. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.sign_decor.name=Sign plate (Engineer's decor logo) #tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots. diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/factory_dropper_bottom.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/factory_dropper_bottom.png index 25a96ba52c5f4862b0188bd905a8b29bee5daa0a..4b59be387ba8e44a4b94375ef620f06a0ddf807c 100644 GIT binary patch delta 491 zcmV9>q=7iYbMFkz%gc)%4hK?7s4BHq?(XiG=NVN6U|m;Kwa4Q) zVvM1bf(JOC&rH)qjFD0bBEmS1hzJ0~F!Tbd%H?ulnkG~g3xDwT_Qw1BJ1HfWWnozs za?aFRJ5~EGrS$zGvJpH!KJxJJz&y_#E$57Lu1m1i;=M;zIUbK34hQCW##?Ivu-2lg zyuQ8yV2s%it?g30bNu-EoqO&9w*N84p3vTH?PKR0rB-|hoyZu2O)34C(5eH7$c=$@ z$eVWWvDRWsDSzFdmZ+*XB>NWTydomZ^Sl)>#&n#fbx$KA?0stc8<|zrJ}8Z3zZ$`w zq#dxX>(<6*l5_6HkM`_i?>*Gbn^Fosgn;+H7im81llG@uYp}XWiZR~KL5z`K&(DMq z7;+}BE5ZBCo6k?`IPyFFp_ng(5Xd=i5>BTR(=;&*17!Z`X>-?F;y<%Q1Y-;-CBDix zuGcHmG_foTHiXb;yJ>9tYOUm)dy&@rw%<927ZHxfBd61ekB^V8wUj~#0TE$cSB7Ee hH#5e_`FzGX$6smmSQag%wlDwy002ovPDHLkV1k?H_B{Xq delta 470 zcmV;{0V)2h1eXMmOMkaXL_t(I%Vm>Ij^Z#7g+KoW1PHMKws3;!CCA~UeTZJN%?(&2 zPVA~)MD~Q4NTtMz>*af|9P@lWb-&*;jw7l{DTVEJ%Pwm>Kj--@GDKSkGrIbch zpL5P_zlbaZ=kuA<>BKM$4Q-kxoO8{BwHEI^s> zf@p2C;+^Bq*B86p4q$m7V{8reUTeK}&XG$YgwTkLG1ze&|7)n~03z}cpmT2V?mgC8 zY|gm_R2xf)+F@<^E@wO ztRXq)KJuv7dL2S&+2owDAq2elO=KP5zXElvwPK8)=OD(&Zk*hypCwvEP(-PlHh#!efX-~RqH-|XzYch2tKIk@M= z^E~fHDJx2SLBK}<003WPq{USM03i4h2!MkDpY&ZSzkyFMrgBo^fY1M4g*_E1;1+l% zX&qMp01@NAHxQ7Wiwgjd0%XKR)IHb#_2?xSNTpLhNc`=Y9p_`qDlIL}CeI?Lt?t}a z^@71KCOH}=o-N#j`O5_f^Rgy@)Bgeg0nN$$aA!?Lsg7fwjL28-VGGDRl8XPIAYgsvgg>n4}G@iAVzk!kxSJvifhwO-GB z{H7rA?Pax3^O@<6g3A7*ww5tgvSfq+83hFhKtx1TgUynsc4%lCGG?~&n{8eNHv3=7 z6x5&NTj-dwLvHQeh+}ZFU zKmYE-+SNAY{r&yqv8;@WCwyAAkVIv*-l#2u$zZ^ff8^IMU^A0(EwIqo#H2Qi1x7-p zA0Ls*p-UBEW#dcdT*FBFHWt9v1c<3y!U@xWElUe3GpW7b23q~|hXo)C(?gs6ahwQ% zEiA-*^1JI9SyI;R+Kvlbxjt`Tx8b)G1|l?!up2#Ia;*gPtpv7QVO(80@9TOK?VM9c znAS?@q}SAJa&$f7=)NXs2Qcpbyuoi-sXWIY!By7?yY`$ySdBZb7;f9V5kT6v)wX@| zIWf}F;PyE}s;)-A6~6O5^gSRv?U+9w!L=$=$-$SU#l^_4^)=$9HmD$6#l`56yiKbY zdU??EeSF=vlq-at2Pk7gBO{}{$JKcSz1BuFfdGBn&D%~Bj`~;+Apyl#ml}%J+Shnx zZy$|!ckco00O)@>RhkIv^ay5*48g&0wxgZH!(V^X)<;N4#-KGcjMx+GbD&@crG7keJ9sb@lhg_9%FLtk@+DRxh?_+e|iHU2o_8wVs$vk-|07OjExOc{{iQt^KpzdEr>6&+To6$D z>?Djy4GF&4F44BW^0Cj9(n)W3J4K&p8tN!`gR-@?eM%8}PWjvVPz0#a8~<2(q(N|0 z^tw_|Yrhb0Td`;0b(Xh(a!bX}htceA*nGqd2o6HF=H0St#3Lvmb(6)#;QaZ?yTNNP z9I(3XhzXGGn#DJJdt)d#c{6Z>xFN)%&tcBz`zM38;KwmS+DbGqE+e$aKhbpXDsh`a zFt4KrZB%+Qp=u3n5UJL|>D$B3`N#4}P1ibXR`3<6&2c-PA)z(krdjEjLP&}reMCdH z5t>(|?( z0C+@FT_{>9K^QHyiut@hao)puS7cLEN z-Z0G4o>%8Ac5P0Qf0<|Gbr#Y39c!Un!SbHZVx@m~M@~T=wpgOj&zxOI^$~m$$jr{V zPp^1jcPNB3N#a9Hh(4gPTG^9rA(9k(7#So@T{1MnuF%W0PsvlgYD%~~)#IL>;EtxA zfi|ZogKNu!I;NSoFfWOS2R$gH7RclddE$j{R?Kc$s{Hl|dXq^H(?>Dinq+Y=MvX(E z6YFqeqs=u74&(?7NKfmR8v*FE3w_BS{YH>uPX76ie1E!|@zWvuXuD>=w0xgGmO`od zITNKHrVlry7-2*R#f)~2z)`lA!(po%?;RPSRi_`d2e}|0aB~3f|FjERQ(wQo_R~^Z zPj7H$23b=}>-z24_2Yf1N^L$sOG~Tq=g*Lq77l)&2L^9H4-XuAdivj+n+G*>&KF|n zGZPN|lOO>68OsXL!!B9QmgA3ayX3Q7j|AX1=&-oMLPN43&z;cV1UtpO)p>ntR_8bc zrqS@woyW*XLK|9b_2M>EM;W4@LUD2IucWVT#jK*Pn@4X?SnbaY=a)NcZQI7)USz=U z-@gM}uq%`b!dKSq%>lFd0)rzXFrR*AW{`jdcZ6z~IxR^bG3sqG7s7WOSNQ4~siM$s(o~&XAycy2;se)dC&e0AtROXXJl@i`b7qm3TND9Jo;9DrpY&dZ%I$9sm)W z#w93`Du^ms5``qT>ddXoL35i`;k+K4tp2F%>B-*V?!X2O?Q}dtq;2bbzETT<`yG2Q znrK|M`6!1vYtCviEGZ&-D%<_}@v1i3x&n>?pnnJl*^@pPg*xWQXxD?E7p#i-2`9XYXB)i}=QeCPmUt0`QzMT4f=O6I)X~$P zwv4T< zO~`4A`SLVfF#Va)0suXJRbZ5bp6II(+>z-p(xI6f4X1Jc7hNo@g6+#lE2?bzT;`m#_o7zBdX0&B_wjlep-!1|m(B<~W9KO$Ms<4X zL8JyReiTrL?Q4P~3}c2HWMS&c2DDyUkjDzbqeDDmS5;xZg1TjnM@pXNRg8AbbkBA3 zm}W&zlMJzeFfO5!KV*c4-LM}aKA@#%d156|GUJVf%e#`mlyX6U1VytBz|9HKp(lS* zr@+$}Do;VxLD^}rE^-9kWB2z>=)FN304A5UIMoxMg;n7&bur5x0?CG;DcrIX;eTjU zjw%sv^2cJV7S0OB$I%fPy}KuQF>p0DGo*eW77h^!Yhs|t^$Qge4!oa;BSH<$_9(1# zKNy^hQ@98mx^uL*mq;|RWdw&ZFSFjg;izhfgpdaxxlX+WCopdr8DBqn0I|_~B*gfFThY7IoP=eu35rv@^hqBH8Q>7*nY)F!Uaic6n()GQ?Mjld6ChBABCIkyF#@8ha<6E1^SKohVN`E6v02c?G!aePzmdcTsc` zDisA=VOuJY7m$j1`HMDj!mQYN+Fk_7g^9(X3)n1&yew74OzvMl4_3b%#i;=nuj<)CV591VM!7p=$Tu-HKGb+U_1VHlpKB4~CBd`UGh{5@~x7Fj*?z9Wh`*tIz z-{}UALd@SEhKS?z`Qg|7xaIToa$fIzxtH45gDkMb@vM_y>AbI6v#;v>CRg?DkqZg7Uv9XhAKmJkR&n%C%h|n|JU-%O z4!*`QCI6cg40!J5DLkdD*>1Gd?)w$JcE8u}U-vir0)!A4cu3lj?z^%J~*ethT1M4FO+rIie{;5yc@&?a1 z)HVaOaaj}&gbFH34?P*2g!3!u4k>z^mW;A0=CD3m%p5oE)yVa^j(@o>ZM`z&3PtU& z41)X%4}@RtI^;1;4ERjJp%{yo?gk~*bo$+%Xu8(&XYkR*u{(pbk0mYGu&}VTkGr^9 zfm5FWKq-`!#GYzzW~c`yzt8uzF3VZu|GF|Wujgp6@uM2n(GE57kF2(q^*1x+i67M6 ziC&L&w@GMMt5JoNFsF00)*TRY_!z^O3(a{*%E{z1uFvxjH$b^60A+pQ=G(!>c3(gN zWH{0-)v$@(AeN54z8x%)LL1u~q2fFpn?bySBzQzt`iR!;-dbrdewPlAia6 z8$%5N?wV@Hty1;E_>%sho|R|cRxZ)R-jS%0i6L^e3zV|gvqI)>+k+Ru->;ggX5FoQjeOuy68FmmoiP)I|W%}rDb=n_x6lF z{!K*tb+q8p#c~P z>nY!#g#wa>Kg;bOFoJ|PQH0skNlDngAUmhw3&jhon?R|Al{(8V%KVI7)Z`O9_w6*) zQo-(-w$!!$I~gxl0ZJ90rqxEl4YsK-p^+%~sNIDi<(!YQ=7z=s8rubU2QcZkqncoq z(v$6K$ns2DSXxT48(Y)hOfSqsDC@FeG;oYGPJ!+u;aC|b-kSFBB;Z&bZ%=cW!`7al zB82FZp;pcnH8=W!+A(H2xt@!<>{f%P2TFX5Xn$~%;-w{0ZoUjav{W^=c2ZZP{wXR= zsDPejje$lD;ffVYED|D5U=QX)+=ceeR3fM}UpcoizTiU*cIy#prd6=#Zc_Tzdf+W> z0H+ftZB~k{r`H|m3HAZDw+iosu?-ubw zjBp4Q4RL#D&fi43jo2>^k`0Z*bLmiQ880?F7AMeXWuz@=S=@2SP3Ky}OBi!L>j7^{ zAAM?R{i7rSZvj2mOo3*`)?zxe593E+VXuqmWXO9eSe`urBGESz5y8 zW|1iaWsJKDWmW0gs5NSE z_nxz=zG%kt9Y=gsoD~55;R~=30i@nLoE;ms+3Ux*bzpUQG8rWHPw?}Xp3v~mSs|&z zKk(tns~oGD^8Bn$#h8kao-X?^FeAng{g}`QXi%m1T=}sqtT4y^4?j`G)w7ATmS^B@ z0wA6W!qPPdSf!^wzn=CL_`jUKIyOTjZU&@=D4^u5Mse?h6SV~w=lR4q&-WUxSqnLC zh~v3SaMrJ)v9+?29(h!P1~B+MRU)V_!`!l_b)LZHXKaz88f4$@tRo^&ea&`Ydn7pe z{BJ#J1G@nJC_9@u)ljk~!mKfNS8`|+%i!H6uQblfhR3|O8czo0wdS0RI!sSuxm6b< z=hK1QKZ?L#LG#8|d%oTRvsf+CaX1%D#;WAshBYm@&P=q($@R{FCF{fpF+fI6qHrfH z4p;3CRUjw{|K_;p`>7=Kez%_>^zkI{c|K7A9^Ny-C4~65%7`4L~Zlt(H2KW${^l<0!$x9-@Dm+;_Jf~0qR&ttA2 zgh!p5D>Ho>oz4G(#52X>e00+1Bu+&*Gpz;P3}kV>vd3f1d-BA0&lbjkMs^iEAVlDE zHdlBJVVO?d$2yCht_&g00FmvlYUQNgITiv9lD80Dm%1DGYlhgBReVYkFliE3m~r{? z2zGG#o`!h_uvc*<=!Vb^Hj^@MI=OG5UTpri(zIyv2 zg)0%1o@Mem8E?pfKsY|cpb~9jC%mzva@y5Bu2h=i5f+VOHW9uN4*fv}VrZv55 z6_^vFO_8cwDu9a32z$*&iwIT?$W#o&j4-jAZzTUNE*8{ycA1>EzX2|RJqgy z_f%q?TUb}jRn{=~<3LtTnDfl=TrDAr!_+SXjy_vwtH%SSAw49GU9tH&4dKme{9Dn> zQ+@ACb<%ailHnr$ZeoO06uJb5ThC+POSE+-ZH~lt{SZv(Q`f;WMd@~r&tst*P zcAY`j%GGup%Ny5ozSSZ@Oir7_-b5Pxe;)}x?Sx1MDlZh2(R^N9TsT&eojz^{eBOWc zzmDLFhORw(~A_ zry|{s?|xJRPfg)mdM`)On(wraYENYtN8#A=uB+e!8>5(!-*DcSJolQYEJxs~qY_&Y zm2G6?Fqifh%rq_)z*oA$YfY@xcZ!R;7|Aaon@B;Q2@OEjI!Lbs_xVm1s@vJ+A6j}q znY-Isy*AxiXjNh`wh;5R*QyG&h1@WUkLSLh6FN4Y)gUUX;K}>I_p52d!eF1ON z1K!UUzxG-39WKqBOKjQ!pC=>%eb)&e*N;Cw?*nc<58c%OXD|2X59=+qo^J;-=HHdr z7M~BG#Zx31u{$V==k|v7X7%W$K^(DFeu?zR2S6vJ;Sr~+@%3+FC>c26k%SZtC}p{x zNEz-zDP3Z>8cpp|q|#%D^STj=eB2)T`9pln`H@4L z5kTu<17Xc64ib``VHJsVH6hL`6iv7ZT^t1N-!1%vH=_7zaVx%T(f@cGn<#8q9FY^g z&TnM^K;vG5vytlRs~<-1vWKL`O4hY`2s@|&$l{%Qn>goDVgn--DC00^ z7u7cElbfQ`p(?vk2vZ5kk4lT4b z8kjB2WVBW$w-XS*);I>u!cI@71ERlL1!>xv(+^QMgnm!$Pd{P5ZRC#kCRl1whJ(XO zQAW-AO<|%yq-ttc*Q!zqPcN>^B;x2vU-aO*ta7GF54|Y7t%4+c%aJ0dmTr-%%RZ8| zPl=gHf#I(UQyTZB@?Myy9Luwsf8jBEeP_j9tKJp-;5z*qv>kPU_z(hv1PLFb0k@+b z7nvDo=`n<3Mv4AX&hA!{?Z{+cTq!*!TAEk0dwdQBxDd7})_FIwL*7@sn z&p#kXahF{w#NHPXC=qzI$WC~I|K_|Le%25t*!j6AV^|O<5GJ? zqmUkv7 zD?IQEV=id>1^M+^ZVVLM}d$KCvVP6tUZmaPP(?CVK`Pz6Z(oQ&AB=2HA}ctv|Ot` zVoY9M-pnm+G=$tF{TBK46mNGBV};;hrp!#@sQ1>OFPQLfY6oakR#uRnFVoVP5qt}o z`nwZ>qau8Fw)_Kaj@IJ2$K_BK@{!DXOsM@uWJt)^e$(y%Z2D{MWEYa#UGAeN&oB|R zgxc|OQWY`+7TwjlX)6N6fMc-2NlrFm)0+Tnq>n_AZ)KR+*w}AkejVl5E1d{UyH1fM z^Pp%P_ILSX`c8iTO-K~@O*d}B8{d<=6dv#K&Jyu{<(cE1t2tPl7^jJrAw=#-kdoPY z{>R<9cL4ZSPM)5)etmyGVatrqvo95Ll{I4jNJkmUz&B^zH@f5?i_41e{dH0}eWc-X zC3uQR3vLsp%vPrjTgO%Zm$OPbS%V$8=SCD{AwMG$;m1A4QTHESqUn${MIqD{U&%b3<1A*REU* z(Y6t~Yl{RSx*D`V^6lH%`X8=|OX|B_-&rUtDNX2B`z7m~4{pKU_6BLL#I!|DKW~(E z&^Y;l$yVPxEg-LS7PRMBBYdM0zX_9~79}{}gw>AS0_9?+TCEs`sRO{U9wB6Ao$n$T zk>68bz-~iB^AF7xHWNIEn4l)0nTf!u-1GLPTvf1^`{(tRHY7wEj_%PXw9_7*rrYm` z3_;~QWaxC7LZD@p_Vh{@ybn`dpU7$Vry-a{*1>meInxFi{~BRu=*w0+i|8$}8gj0M zCSrfIdKz1;-w#V$pqYfy6KYSwl%eBKVnV{F&29#%7MbX{g*X^6@*XvQ*&CuLN1>m{ zZCt^fCk@9-6&(0;YIKPMjN7O5=YhgSDkm13qRP>|eD-~CK@;fJhDR8~h>0K*62PCe zH6Y;c@T zo}VL2*yD#bey6tXVTRlNjXD}%w-CJH@w%PraX@-_d^7>t5fYjBF$3ZyJvl2IZr^w` zwKU0#=Q@$yvFae*q8pG1KOQf)Er*L!2T+9G0#O8?jBRY@bVJIh!rleM!O+9Mu~?Q& zd1~+$9sv`dXPqN?d>;BRzed)eW#E#_ETIdbD41(v=`eKb7-wzu2qaZ8#!gbNgXqdQ z*drs=IkN4<%NzPJwQZGC!%p-u=e}phB-ivqW>(5g$IOg&@RKV zP|v9JpM;-_%hoQGcu5XLV)*`F3m`*K?#}${@!_GcWn|<-FqP%$Z`b9Ol;w=^yK%5( zOpNEp8&7(Ax~P%3nJ5A}%bvGEdEHPuTiqY z-naXdLBR+X6)V~vP(_vS!)t14;ms=e_fmcbub|xoBLmZj6)OppnGhdK)affoxyrAQ zVHz+N*3;c|BYMj+Vr=3}7O$>1Y0>Mpt_OGYC-rL}C#9Ae=lO+Y7K$ST7A*H}+Thlf zpuEbSkpHK^(r%HDp_J6qpBa=uA(Ix(+z6k8;dpU=6V`haubA>Xnu`QlioB-XYZU>8!zdi9}j-~mz zE6d)inwz_0=jYLyRY5-{T<5AHcU(+Nf+nrjLKAxV4qn?c%R%~`lVWyg5}Us?;l&#q zR-QprH&qJ?FefxUHiUcQVFtI@0RHq8HEoI*9CdHqo0rO9t{A0 z@UHOxeuR|DqOEJ_P)650NXIY5M~53c zrKiGAZ+*(!U0Q}XF(rp4KX&!>jP&M@KQgNw4!#umdW-=PZNZnT)m;FQ7K^KHd}Ii- z<(7$(X8Z$Giz{_s!1UF`)e$A&bBXq?54>9o@&pinVCFM1hP@sM@!`iQYhdX?uvSX# z%T<0w^G;^Q{N1YJN(+vbAy?}RY@xBxFg@{8GX-7uN4^{plir{r0K&B;(*5-TV-M<0 zrw|<`I!eLJq`cM9 z){Z^?R_O9JS!EU2~u@hN6)!!a_ww-(6pvGLCRiCDHMDE~{l$6dH8bQ$0(Xoa zO(afCf*5BJPSIC%ciBDeTb=2{bLa%y;SX|!&H4nNr?6xb>O<*0jQ2kzDyU`*sZ8Aj z4Y7ZE1o(-NoRn9!_4OfYhNDN(z^aL=&wQv;(kwZ>j(Q~QaAETo4=0fnJN;xB7&SSj z!z6jgKsx87W~LkD3pSWU)R8FYBC|#PY}*TKu5p%=yB2J)MhG`fvH=i2XmZPqxjlN2 zMmYcYjXS%y^5HV=!&@A|Wxy9;d_{iSn9c(|rc^J$=-&P{2!rJaLmh22VD(vASylXL zmuvCtjIO2yd?&Cij-Cr$$vK~n!^lu-yFbfWpBq&Cb)`i6Xg>)vw33Wo+iy>Qt`uoz zj#DUwLmK{DbxH4gP|}C3?#hHGV0LPdrbs?yygXi}i`D_&-jtIhD{bey&cI7y`l1__ z?m3)_$6wz-jN`>Av&oxXKvY>}6xxc)@4@Pf=XPgG%*t2ARzwb*aXpTtkj6=(LY*8mnNugaa9p=A3@#0v8=mO zdy!6k5r!(t7atniL%BRwd!=?+`cW;)fqNBPHmr&b9o;1UOF<~~D_(KHUasm-*M!k_i2+CzywFH-W|qOiIT ze~VXfDt>~Qz}lngwNOcYqpaW@waRqaGZz7gtni`+pdMl^?^VQ5Bz`Bqc8|$A7PD54 zoZ&~PgJ7L=TWi;(G8JtlTP)C$wFuGn|i(!e6B zCQvJCl8k0CJff}4ktiSL4JVZ9@@V;=Ax+uPH7p~j^g8o?aV9dO1Ys0HC&n-UDN-p+ zFc|{*JT91NrS!f=SYsNXa-fE86s%lV#Ie?VnaANGipq%^*@wv}7snM4A$p5hAq^>OeP^!oCyOH z(=%QFPRL?z4NHEe`oa6KerA!3_1o1To1LAV_!FXzn8=tYz_a%!#A&=U?7~sq0$j~Yk#MA*ItILMXiBV83w=J%J|BbqkZ*O1$i9Bp_h~X=ELM{K1ZyA^ zs}jNP=4rSZG|9qPt18INCkKRV7}cuUY#hh(`_CVDw7)GJc6PZVixo-@jg4qm50N2? zQ<-KGiOL{mXm;FSQT|_SH`HlfWJAQVHehAQe*z7DuN$cI^Yh&gOo=7D-x{>ok%@4v zWxZRYsAE&By%$C*!$u}0?U3Ua7q0oUFC&u5vc+cT*N8T?CRhy}9c#_s-+G)6$R$kc zx*k>FnexVx<8wpd#Kq)6o5zzGU!@$N&152ft%U?G#PzncEN?zx<0_4KUhM?^{A=vX z%jx+3;S4}q3xgXWb6`g!`uhTA0;-C|DOI4KLlg zJqJCOVEtv$NCq0F%$R>VZ3r!qsswtU8Tv{Z?eE{eL$^8x!!Iwq`2s%S_xJbdvAtiq zp+B;lOW{)lUQ)wbINX{<29A&{dd*G#T?jf(9fQ}@^W~0~laq6^oc!!TRDCS!ccd(8 zb_=YU-~F-{VPdIZ9E(MU&6UH#t9f2XtXQf=RCP_J4I}1rstRG?Mkb;}VyA7>ofeLB zzau{8Q%Qp0`p0?S$9XNz9{`Ep-8|>}8*72j`$8aET#60ZesewzGgPmQSvzUONj0fe zt3|zVtzTLpd)zyO^ai(eEqGd^ENAnh;CQ*EOQnmH?@7@Uqou!gET~{Xe@VMMNy#_V zWN^tw(ZL`fAn<(ni`Ru|txMnOs1ggg8Noc!s{Epg?nQ_7!UA`8?ItKo`=31Mbg=?y zNmT}sbxoQ=plY(IADjY!iQ0(Uo;If_Jb$qT7E6Q!J&NK zzhxKjACcVUak&RRD^{gRP_*;Lr6h7TZZ7>dxYjqnb<2g>9%lpqx%U>fnZ=L(Viir^ zYZ~bjGsg}{M(9f2K7HGon!4b1?%LW~5wB(gd!&NyaoJr!27_$zn@@vcc61zO`t>Pg zE#^Lvv~x{Ojc{{XH0RvW5p}+xSF-VS4laB+vg@{h&HZ65S{0~>U~s&)0EsT~+}t}XiV_k4z+2=>F0_@dG# ze(SnA>f1Mk28(}ere8;&fbwO~89C1uiuYXe5Rs;U=Jv78^izs8rWi$-n_-IzQrkUZ zm%86WaHa{uH72n?&UAHj;<(yB2~!8cAH7z&I7QWv@Twl8WnA7ytHhzruqf^$v9%=_ z+eF()%Q!SOSADC$9{u|X;PjO@Hrr<}oUe@W__e^T!_>vV5&=x!f;GKlRf%4m|6ywj z51<(mU*S^RKTR2>5wx;C1bQ+y3tS@H1vOm^tMz z41~+|GSMelLfgTks)hlEshyvDKHSkNIy%5m>zlw!V{pq_vsR5!7A^vqeT2%I`G>VY z&YX34kzXER1UnsShEErB4B>0|JSa~kaG!T%&h4Ta;fCdTuZSh{g2c~V>v!5m$vmK4 z2za#xdFwI?Ux_(zm)pH=sc{Zaw|3k5UTc4AwK^Be87JH?4L0$zwBW0%8T2Y)zxZAc z|B@{0Y_7Z#0Hr1(Y`-Y-7Mh z>$wa5f$BY=7g|m*HL!mU!KvuDH@-ibOKuKL%Db%`8w@EP3J;P~Y+P=Eul?zlAh;&M zbw`7_hICPnL)u@VnV*Br^1Gh-|%5?cQjD66%|zj4%%4@*&@NrxUFXN{5Ii&PuicaJ&V*r>61uH3PhyU9- zZ_l@1!i3Kory-@ezIH&+*xNNe*Y_qd1==mh^maF{IO5_sYq_|t5`Tf6$I3u(qm&HP zMDm7LtaBQybk_?#vx4w^&HqJ4dBdX($MY%6!Iq~-8zDG-{R23{61)Bh05 z?kAaU{N|3M8F+JGGuaqpE5};G1@1ps#^i2H%p$dhMhMjJ-1H97ECBs3ks_LH-oIOwP z?+Jo0CzD(Y5IgZ*G6W81KJ{dZq~3Yw|8i(6n)OgjcGi?|{9syCLB0xoe`&^m97!?X zj~>ln1|!oh@zX%N#gTXTEa!8QDSo$e)u|A#XdQ%5qzH^d2Hyi~u%mMc%!(x`n#Zcj z3rIWA4z$M&Lm4Hsnp!%O8OL)x160+ARIDUoI9S)JJPI~93;Z7N^f2j8o8`+rQw^*| z5Wx~@+tJ*`%5+wABbm;fGic+8@%jfoiurY1P8_;uc$X3el-{E<$ zLK_gj`+?TJZAxnL#qG@4)@E@4>93!6D29V;itkmNWNq*Pb1GI$(^|#dd>UwyqqhT= zjrDb1j<5@o~Db$F1hn_5jUe}he zP3$EEsA-{5u66=fZ25ZB=#xA@RP~3OaYJGWEKX&BV=fwX<64n^+$fK=aq#A85LnVx zJ>O~pnKRL5a4QI&Ao7_$V?jQnJo&Xq3rSkLT*2vI0@nC9@Jg;2Sl>CVJ1n3}5@X4r zVt^_e3~LF(bTF(*Ih)X&3lyjP#Wi8>e+3)Li;T^YsQx^uvT*dm2LBX>K03ViM5^Ur zGUyDAKq2AWL#q;9YN9bOjRqsc7O2l}&yQDEyMv)THoS-|sGhKD%vgSx!!bD5;6}5M zKpjIx_Gf!CTwF&GlM0q~9=jH!S|mB!Sd4y*RU2BWQmSaokIvKvNl`9CcJkAmBiyC# zA@cBLS&{{D^OC?#a?Ml`jJ>&GdQw$S7B)xq$^61MZaq>$Qp6loL(*L&(yK(1)k3r^ z93A+o9SG~l-M8}C5OKySU(Ms49YD%B)PIkr*)7#qV{df1r?$UK^jw@tKecU3oHt&8 zV*#{{F<6C6QA&j@hu+f*DbUQg$R=^S(Hu9lwa|6~&J~6RQZ%t)lZ2TvM7$cb{Y}x%9l7lQsYYc+}525gKZHQq|QwkV^!~!FHup_$%%HGfN8LU6OWa@oabc@l*m{1>uq2l9QGIE%HKfeW=*giZJTJ(PpPF49$<9 zw8KLmQ`9AwYU65v34gvA z(-RM|3I-|8@Ay}a4Zy8ZdJ;l~i%8Dng~98jV%ku}R&Xv5{*2PA;Iit50>v;Ej_Kae z%IjM8s%PtqmXU(yAhF)&PvAnTMRl-$Z`3E$B23+&iwLi?m&|Ji8rqppv~U2N^ZX=c zc+XJHDbx#wlFun&iMf34#`wyzBH5mbO@rv>qom=DqmiV^L1c9B=|mn>z$*6lv>K+= zG2Y^u)}VF0^4DhMIU^kb8mvMjMc#BuClmly5!xUJsP?yp%$n0l?@%@fnNU?RBRh6t znz22K;y1IOB;5jg9FDsKI)VW&WK(?LIgz}6`3W7%7c&8JfHJyA5>PnLFYp7i|JN_F z0tYv`Fl;?K-dY8N*DrR38ldSo1GwdEnM6C$+=ZL^$+0$7D~0i=N+W*+Em1YPLI4U}kyMgy z`H$E*#YMgoBfeK2y$WVVoLqZ)K@7ja9x`1b2wYLN?eq2NQTz-K>w)qYftd|BtD2rx z09UEZPIFI!;W;p0ZfKP|ZoYR0GgOr|W9jVNxahmGy6XJ-@xE2}-^nSIErm z>1`+2@u5drKp|7MAzZ2eajlaPUl?jRs;gu7fc6su65%0Py!qU8f14Qmlq)y5n<$&l zeGT1me;G4t-SRl({&M;~$=z9Tj{m?;Vv{C$P4e`lp2W^PzMujeLR|rDHLf@}&>J;o z@H(>IAI6-U#QiF)E}mgD7)_#fS$$@9aX_y7fo;{^k(nU8KRxIh3sM_NeF1#?k4AJar13U~LNB zB7?v%pt3H{rJZ%m5=vS!)H*9&rrhVrW09EKH*Ft@f8T!9c>#NsEnzXdGsh&Cx5y^I zAYaQWMzNGtR~_PeJu8mpg_S80a*9jDzgmwTnIDLT@5ibfusR$c3#;0m5m4_H^v9q=3ixngEH#nw%mjSCdN%oN<20OB6 z`Qs_zjjOPW6Wz&mUKAiFRJSlCR#!yI;{s;aQ9nKYRZh(8m(mtykiZJWmE3UC#8MP^ zWE@MRr!#yqxdmN&=F$eexB&@;jDD8XGK|}YToFeMdK?gccNi)92=$wmqB19`cgZCK ze&dZ_Jbpjj_maTM+KeHW`D%GefoN>j+d-K?uj6T6;3abff)}Pe&j0?`Yk7ZcXNiBR zLNSo3e$wy4m5`bj2r$Bvaj-}yW&rG2BvcO!O_yPBZh}&bJeKWlM3mPUkG)Iuo!XpV zvS+*F2LBD;zGv|wKUSq;n(@GZxuC+mWOWMFAOsaYChvq~9)o$-93xxqEw5a++{)sA z9G!KM?LTjQ)pwATk$*Ua#zLOx0L3q~#A!5~5EP0)%~p_1))hGdo0G+{A;Mm{TsDMs z!xt8UaBmaT1#jCahN5b^lVWpLrs}b1VP;l6QrNGE@gEN?$jd#)&L0jV zjmjWDV8Q|~yTLnOegYy4%=b#n@Vv4T2wWr>Fxe0)dy)aB%)vn^ObC!VB}%Rb07kLx z6si=cQ^rbbs}U@8imU02D(bRgU3Nm8)zN)6A*mqZtE(Hjn}R0-sHs{K_nVU>2)SmO zA1D3Yn|w1G;K5aNg#F3D5zMTN_^V1C6sks_FhmTS=s9U^RYG8xgHb+0W;TfbPLd6bpEd>hyo_ z{IkA3fWpT|#=Wo51dd=Hmd6|y8I{-fGi|^_xwvo`I-u7dltdXI|5dyg(6WLXXF8H& z9dlIrjGChKvSt0Rb}@BXX8(?(AOr7sv|Wgm@vV42(G*-vDJ3Q4jMzlG?X{^7529LC z)JS*u+cZ?~|2%02bB7KYxv}Q**$W1^W@4Fqe0;PG4D$Y~C;YFJ>weY9<6HM>3{Qol zWTD_lhsWjC=9HzYD+ai>@uJ(GlZy*1h!?XWS}#_ql}&nd?9%~ITcY;-I|{lkM>V_q z#USo=>}7m&YD-AfNjW?0+wHiGf}u`WSXYHjdb$0932-+FVjhPp=Akc%X)Ma`n&f6_ z`FLYSyk}8lJlp0o$S7DeXWjMrsK(268$D*~l9)eV$wmTRsIWr=vrx91OLdL{@xBpf z*?^?EaAJiec00LVIrZuh7tv@-=F$y^iPC@GnE{cNEb7g=GEdqlGg`VaG)DEwk@**2A|u{rGLyb#>~P7t9c_PrAN6e5FN%Qo<=8Wxg5fd2*R$j?Q@l^9Q15z({HSp zXj#YS-wnvLD#d+Vr4V?hPWwL$09i#GOC8^laf6Pcs>&~&D`AWck0^fJej|$b$>_)L zK{cW>u^4=s3-eb1v7caj#K4|SO@Y`l-1&FHC2xGOBnL9B_G^udCO|+JVD1nGL9&}N z4P=Y0(e*LFb&RHre&;pFs44!-OEP)R3dk?@Nh+%#Eex~Zc5-uMOHn%Kz8%RNqPaMK z=w=|4&)kHAN1t3sfKa|F*HPW$Q$k`3XF0t6r7q^2vKluY@i9H?u5++Z&=-Om$X+$} z_bg;SY>f5DB3CzdpLFD!`@mzunG%(j4Ka@&8R!Xi8DNT83%7Ij8>upQE|PPJ4)V3B7QItxF$etMij;?P=fWg`hmsIX_c+5kyueTiS&pTR7rRarxG zbLfNzf}(fNpy#LuzgPbIkcJ^H!=z63lTv41@HPMJb;|`O zEcspCOkQ6Waf58OiQ`9#UMcFS{4VUt3;0+t%R;}>V$3@~j^aa>AzE2btkAB~G05Tk zujC!fSPp`vnwM=o8y_q9fB!An1`7cIXf*%*FTlU+;#7Zw352C^yhIcy4-YQW@T}It z(gf)O%b$H9Cnu+!cAypU9($r$b6L)q(Q1BGIp+Qt&*U_=T1n1tMmhv=)i%q^3^nGq z{UgnL9gfM33|{ntGq_$o{kIUe@b2Zf^M14aZ=AeYnN^9|9}IGj-SJhBQ5Uvy6!@L9 z;&PJPQf4SP*jJYy|N5qTMM$s%Syt|$uJf}V?u@{JR35GYI8tip>)X!4`vxX9{;Qu@ z;blgg_q}j%^uQn0jrmU>?BmmQ>wZ5D=k|DEz`)4pZfeNe(i!~TXY?^f66ziOd%F|CJp~ki6{9bXQi-|^|9@N5ktaO5JZ?%M1q#AF!R?tH!^9UV~ z;qY6>ijG{ydb?=3J-{T0-J7l~x}i{*86Lj|6V(e@-E#*Dc+QE*cO1|XnYKS@*^3qU zCHJzV1wSX@?P3AvzOTx6p_w-eqUi)ZvO}>dr$ZZ9Cxz$uoVi_bdA;XuDmde7?(s$k zX$JG{x`K!T&O&%L$M&2^`9OefNbzJ7A+HO2*}(O`#$|7B|C%ty#&794nf+{~AxcRq%fk}d z8llM;7^v%J+oYMQhxD?(o;X8Wcg=JF&hq<=ibH(ny6Y`k2^iG#9Cr>El~K2y?5Q2j zgr*!Z^5ooBGPW0&HV*?$RQ(FX6kNUFw6oBnDT)~t6Z2vOn<*w7zQfNe#URD7A$&4qlUlnZZ4|#;qH6F*L zjLI;aRagT)k1DQzyQ$!RHMS=6g%46vL+w7triIoH&49h59!a|8&v3(}!}QRg3}G1{ zVI!a>$KsJ>m(hb1Kn~?`cgNyz%+tp8|A_GXP>F}!g?d)5I{UeQ#4u2#z%&D!Ea1)n z$XAPmW9jj?9mmPhR2|j`Je+XW1(0NSf;SpYI3#R0^J2wD8~knCgC9!{(iwimrTy;l=t;X1E4TSokl=EFfh~Dlmnu?_(52)Vqc1h;~sl4iZ z(%O?Jh7ErQXT44Q=Usp3A?8h~>8p_W!UGc0eCXFAgt7L+#M=0*2Y-yNcdU5lPeToK zuuA>`-M}+`JjCiU5-X>v{tM@ShZuV^8{7ewR9^6^`|v@<(K5Wyy(4lD;qWWWA9m(i z-?A6GOw8vRtf&~%-;I|?*dCm37Mj=5Qs^Acf3>bT>?iul0$ye-TutqBOsSMiP`_k% zx-PSdC`9c?21dm+N9}`Var={TzS%^}lY@qIOF@KC zX{JOm1hlg{(PaDXdz(9P@aRw0Omy&IOG7g}?821LzVG_$vj=o)>rFJBpXXhgf0f!) z+))S4FE<`R{1wRA!SD;vlPK9MZv|9q_s8=7JtJrMPdNOv{-EYvE&5R^><&31Rcb6( zPgRWHk=owu++~Ifdg0xN4~Gj5s#iz2aeSnw?ey_DUV58t^rak`@j~faz>^7t5tA<&$lDvZgmDk6E!WV~9%JZ~*A0jcH{9=LJ!~cbQWT|FUg@h|Ty>xo; z+6uQ{aBmMHZ-X%bwt={Aem};_++A z{h67W-j4De%xzzk2Vv9;oYFZdxoP7H0=gOEy@ke~-X|SEfB+=`QMTR)YXV$pfVgfE zygkWkHkf=9yJkf~XGvx{q!kYXKQTbSWyhO#&mPHEGFjFKY}RY9xMJ-sI6h!ZP`!1q z!990lS06C&b#rkcx)0DF@9h1pxoQNAvK``P-)=vS=t>|~Tv7m)-2U=3x|Zf1OhU8O zsCmHYJScm@Z*E;s9&E;(8VdO&|o~C6<8G( z*N*>NGk{~k6Uma|g{L_zX~CN2!7`%6LNzvUwnXNoe?D>fI9*xdwp_L2ge!!cjSWaMKm z58DTUH4fKszpi=m$mWbTUfKRrl+SYCcs(d^DzeM@xBwnQkf7i_AF*15(mBVq$gAH4(7vCRnu4)pHTx$k@NkhN5>8cOfbsQH0%b1_ z1Mxv?I`sHo`JTau5_;Y%YaY<}5yV;QUzQ_B>SejI4P?lhIuz3$sOX`?fw}|m`5?Sv zFkE4~r_eYetXEUJP9s{%?@x$%r=a;`*)hHIweOOiGvxfWOC25~%wDroO=PA%W~C3* z%WN+w(FRgT7fz>$x&?EX0uO~uPMu^XV29mxo~^-PO@V0ZEgoNVgc@*~``0$M(6jHl z51V>+J8&U>zpatiwJ&N0_U>X@271???_|y=QfDEp_MekT^`=JFa%m68-;~>&P27IIpkOVZ+aq+P0nX_2g@Tn*(I#}~)O+KWpY=1@?#JmovrnrE+XP@V@@Bs4PqnzwibWtrg>o_{1I%#uh zNu#v*A`8+M+23W~CEpIa6d*&Z0RvcwLR>C$ev>}&AuB!n5h~?bO<^Ia=0Rs;1gKB~ z_Z|nZE|~kqZhAPYKZ?USUuQm1=b z3Dh@#-8s@0DIXfu-wva+!A{(h`eyb1HP7A={QfRJ@%w~9(x3gGoq|^9_p;0Lbq`Z9 zsUcS@l)venJcZN}1VVh$UQ6hn^v?VqCepg?0p0)mf^Dx45nt}PfO*Ox54dW)|J zneH)p^tMX1&L%8^^SZIL_hGF~&1t3=F2?LTJY2O<`{>+0nS(+E42`1*y;)l!+OnS? zk)>KFunvG{mfKnHSig6hF6S_^bWz2!-#OL7?SdNht(>8zXR&g$^UyjTHBSz*&ntal2M4i`zZ{r;q9mr&@%}k=exL7&FFv87&ihrs= z-XRN{F}+|`zjMbAG5Es|U?#1gHwRnwQlLZtY$4bjcVmH?8%)(7KXJSpW3iJb7(SmL zmA02x2;Y{X{FM@^FL`%&@G?6LXXPQZK-gE+BPcgHeDq~EXX|FV+MNWsXphtTb&=U( z6-Y@jPA`ivJ|%uigV|{TJ9UL=`CIwN-fk$(sIQgTY)a!C;)|A&# z>>=xNh`MSMF%M+Y0^01}T48_R=m&F`nCa7`&~Qt?5@KFH#dgO2=5l7zaP5XFcV*7x zgzqg%>xxVX_eEmP#=1Atf&a?&oqZh|mX!Fcxd-^SeipBX-OvEJ@a~WTb}m_Ld>zhJ pvnRpOjRAfCzxlsWg!;fQEz1` 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%0A&>dSGP#+aQmFF= z-#fXDsZlqoy6=o2aHygQr|ClDq*KVdL0NmFI};%1IObU#7qsycDwp#uELB&RiJ8^X$5)bj zb{w!AxvKmHqv_$al;PoQi7Mv0DkJZfl3tF1nmaLt9JurjrxYviQxP0B4eR@Q2cN9X znlm@XdwJt$D_H$l^%~oM2HEZ&+&Sy;V*s(w*SyYY(Rr3y>WPInGiL>5~oaR{=X3w?C*)-hdrUzNN4qgIJv5mmrIX#SL4 ze&5LD-t^mbB77&}Wt|pXsc;H^hdQMO^~LBqWRl zY^F#$gM}`{dFpH)gYomC0zrVwlWBcI9(a##wF~@AF5aW*AWR@1Ny)8gmP1WSp&=pT zAAAaBZ>+M5|N7I1OrUDhZ&2bpMOrp3hBPN5zUnh0#$m5>giSG|&n|K@=-rQM6aBLGCRGLs zVdG;E=*u=b6N}^OafkFA9WlLO3A8b>BwuxPi8ghd)%v{!clI61S;yCGvjN+np(l1O z=GM-=^J9wfii(Lt_qkpma^RLsKMPq>T(v|c#Sw6Xl+Ybx7z%MO$MigH!vHu%_zUO2 z>DGla4r3wOTbY_s3-2G>xx3h`sq`F?W8-;Z_0+2UBAnBIxnltfhz?dSJqq2x7Og^T z7UwT;Q{5uNTnku~6Oqi=+R;g`lahRB$MA~%KHPIp$3=uay6-Mv`xy|RX;QlSx`r-B~JLjFdG{yMEBqUJ$UWk_1##0b8IZv*9x-6rBLRy9C9wA?u9MBKIa zWtETnPw((}=NH{d;_EJjqah$`>)aHNpZO2o-{bb`^>fF*%HOvR3&73ASfy#gUxOk$ z30-u0C_*Q3j&V}H$~squv|_Wyy4B242D_Tx?M^!;i98ELGZqK!!Y{htDTou9wWzs7;PEO zIqfe6_-C(|j&;&dMo2vt;jAhlo>>3(lxZt);&RCQ;Z3O6=_oH=y&4MuIkSI*dMn^O zOh+d}NX`s3piL)m z5#M`2oW+mgF*>VKh05^OK}>hQ4h;!}^J{(?EP4#oIUrBRfqy{j>U@)P1< z74y`<^od=7DHnMuB2Kk9;)bjZ!J&`sv3&8jeQe3 zCZmRzr}2Hfg>I<-swTbj1bwr`v1Hy#&ayZ~mNIbvp)b^t58JFMxYFo_Img9*VC2j8 zt%f56Fkc&EbV3dX3REzuofy#H{%n@guz@X-WBJUIjVjRb|}m9V^3aINBB$eW$;|+Bosx z{YjN;T3Uv2qqC~5Hxe)ShpofE4M?%q9z-TYT2Ojy;#DZ=x!ly#m3&%vr_HNT-eTBa z*i*U_ACwFav#IP9*5D&0SR&{j$xQ$h4R9JVOr-2*K(89F$(2=DB+(Q1oEV)hzY$r5}UG}z-zgOUw(p}EF3 z+Rx5MYPdw|)|VNckZY_jGvfL6sAq@PU_=W+Z@!lt+GI8G>+H4R&UJNPt2&M}wqk*7 zVXfyzilD;rgJhe=WSMW}boP3PXLuTaUCr%N4!O23s|PUi3QhjAq`!6v6lJEh7S$g= 1.13.2-25.0.214. + [A] Added sign "Electrical hazzard"/"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/meta/update.json b/meta/update.json index dad7cae..7d69b62 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.7-b1": "[A] 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).", @@ -37,6 +38,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.13.2": { + "1.0.4-b4": "[U] Updated forge dependency: REQUIRES FORGE >= 1.13.2-25.0.214.\n[A] Added sign \"Electrical hazzard\"/\"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.", @@ -47,8 +49,8 @@ }, "promos": { "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.6", + "1.12.2-latest": "1.0.7-b1", "1.13.2-recommended": "", - "1.13.2-latest": "1.0.4-b3" + "1.13.2-latest": "1.0.4-b4" } } \ No newline at end of file From ad93fdb302220706fabcdf2f0f8ba29495751142 Mon Sep 17 00:00:00 2001 From: stfwi Date: Wed, 29 May 2019 19:47:34 +0200 Subject: [PATCH 2/4] Added 'defence sign' (issue #26). Factory dropper GUI adapted (issue #27). Lang files updated. Credits updated. --- 1.12/gradle.properties | 2 +- 1.12/meta/update.json | 7 ++++--- 1.12/readme.md | 10 ++++++++-- .../blocks/BlockDecorDropper.java | 6 +++--- .../wile/engineersdecor/blocks/ModBlocks.java | 10 +++++++++- .../blockstates/sign_defense.json | 9 +++++++++ .../assets/engineersdecor/lang/en_us.lang | 8 +++++--- .../assets/engineersdecor/lang/ru_ru.lang | 6 ++++-- .../models/block/sign/sign_defense_model.json | 4 ++++ .../recipes/sign_defense_recipe.json | 16 ++++++++++++++++ .../sign_hotwire_recipe_backcycle.json | 4 ++-- .../blocks/sign/sign_defense_texture.png | Bin 0 -> 1550 bytes .../textures/gui/factory_dropper_gui.png | Bin 20895 -> 20887 bytes 1.13/readme.md | 2 +- credits.md | 2 ++ meta/update.json | 9 +++++---- 16 files changed, 73 insertions(+), 22 deletions(-) create mode 100644 1.12/src/main/resources/assets/engineersdecor/blockstates/sign_defense.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/models/block/sign/sign_defense_model.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/recipes/sign_defense_recipe.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/textures/blocks/sign/sign_defense_texture.png diff --git a/1.12/gradle.properties b/1.12/gradle.properties index f7c63cd..ca6a25d 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.7-b1 +version_engineersdecor=1.0.7-b2 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 2e8f250..abf540a 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,10 +1,11 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { - "1.0.7-b1": "[A] 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.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.", @@ -39,6 +40,6 @@ }, "promos": { "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.7-b1" + "1.12.2-latest": "1.0.7-b2" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index d055883..53e98f6 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,7 +10,13 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history - - v1.0.7-b1 [A] Factory dropper (config:experimental) button placement fixed, + - 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! @@ -37,7 +43,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/BlockDecorDropper.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java index a4543fc..00212cb 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -231,9 +231,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)); } @@ -306,7 +306,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); 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<LM5Vp4pu{T7G7&^T6-2-qA#wiRASj@!B+kv6YmFdfIlZnH+IHK{k z+X=%A?yd6#L4XK2r-*=BTDFuQM?mo2*}xFBbYZRK z^7&V=#n^G>>Ih3(7W2{m)l_TFDK7nBt#;zXFiTomh!Tfv>TcDx`V8xL`NfxZwhlu9Xy9o}F42|MJ&PVr@ViD^Kj}rMW3n)q6`j@?5%Hz*>t$F~*1oOD(p0 z?;!bHhGPeJkk5xaa`05mk#H^n@OYZCa>U-sjy!gkzkaKa&>F74TdK(ckpKZqd8vp< zRl6@m-uo}!{|o@dQpCdtPSqFz2dX{=wb~EAyK~n6W8c|HXbofIQS}i>ac88)+)wTP zW*eU<^6-IEjE%=teM|BDU_=C0B@9bZGHdrgIdaeR{gVfGqRvq)B~_*Xp8^CDck37S z?0;cS=)Z8^FQ@NAYxw@-+xfwdU#!Xj6Zoq|m9Ppj8!tq2!h7_<-E*E5(s>Q__7+v3 zsRIZ`Oj?FsXexSa;L$@K>DC5mN*tNg`%;vk3hG>S5x^iM$R}5{X*M*t_BwhtEvI=w zj(lCn+aqI478AObHN7Wv{MQrbxK@m@2xN`n^!X89IeV2|J8tLAx2|*XAER`(HSqb* z-dRy_j4`C5$kZ?Dqv*;AZTH^i05~*o7j?N{rV5-Qs#p;r5JA<;?{A0Rz!=!Dwv)as z-30TfopX-yiHM;WhgrM2jnIdksa^DI&9DyKEYfFbpGS;qoIgyBoq>Dzo8+j~AV z@8Z+Q4+Ac~KFTw{xiDw!fq~~ipf2Y{YT(c*CMJ{eUdQ7paSp}sxlgU(M^C@RzpmWi z;v1uESl2lRl=tr&B#s^Z+gGxA;|I9#`Y45oh*!^z@VlWmS-h|gF+L4rV zq=BZ!99uuuMc1kAjafc@_bRek!&685d34VwXl}~!i(kFQ%V(}uO*T;!p{j&o zz<8lpQ4jGAi4w@{a=UX)8z1go#JyjCmi8qLJn_vw0M@K(t%2_hAVg8Zg2r5BDwe5! zph6@!tm`CB99OQ60r1q(eu65yhX)5d9Vd678rB_hTvFf-$l=G&{S5E$V)4cNtt2m^!ktn5&$iV-Ejq@<)XxJ)q;7(*bC zI87H&(t|ItI#dNj5ri<988@lZvs6GGPW|!xzc)HxwcT$r2><{907*qoM6N<$f+4l{ A)&Kwi literal 0 HcmV?d00001 diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png b/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png index 2b85507a7160fbd467f8a795f874021016f33f2d..e09864c497edb847e3ff3794370fb58d437a805c 100644 GIT binary patch delta 18833 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 1.13.2-25.0.214. - [A] Added sign "Electrical hazzard"/"Caution hot wire". + [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. 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 7d69b62..67e7419 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,10 +1,11 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { - "1.0.7-b1": "[A] 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.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.", @@ -38,7 +39,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.13.2": { - "1.0.4-b4": "[U] Updated forge dependency: REQUIRES FORGE >= 1.13.2-25.0.214.\n[A] Added sign \"Electrical hazzard\"/\"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-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.", @@ -49,7 +50,7 @@ }, "promos": { "1.12.2-recommended": "1.0.6", - "1.12.2-latest": "1.0.7-b1", + "1.12.2-latest": "1.0.7-b2", "1.13.2-recommended": "", "1.13.2-latest": "1.0.4-b4" } From e2d799db7ec06350b564de26099421edcdf5bde1 Mon Sep 17 00:00:00 2001 From: stfwi Date: Thu, 30 May 2019 20:26:51 +0200 Subject: [PATCH 3/4] Added standalone recipes for the factory dropper and signs. --- 1.12/gradle.properties | 2 +- 1.12/readme.md | 2 ++ .../blocks/BlockDecorCraftingTable.java | 1 + .../blocks/BlockDecorDropper.java | 1 + .../blocks/BlockDecorFurnace.java | 1 + .../blocks/BlockDecorFurnaceElectrical.java | 1 + .../BlockDecorPassiveFluidAccumulator.java | 3 ++ .../engineersdecor/recipes/_constants.json | 4 +++ .../factory_dropper_recipe_standalone.json | 33 +++++++++++++++++++ .../sign_hotwire_recipe_standalone.json | 24 ++++++++++++++ 1.13/readme.md | 3 ++ meta/update.json | 3 +- readme.md | 11 +++++++ 13 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 1.12/src/main/resources/assets/engineersdecor/recipes/standalone/factory_dropper_recipe_standalone.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/recipes/standalone/sign_hotwire_recipe_standalone.json diff --git a/1.12/gradle.properties b/1.12/gradle.properties index ca6a25d..569025c 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.7-b2 +version_engineersdecor=1.0.7-b3 diff --git a/1.12/readme.md b/1.12/readme.md index 53e98f6..897db87 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,6 +10,8 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history + ~ v1.0.7-b3 [A] Added standalone recipes for signs and factory dropper. + - 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 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 00212cb..55508cb 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -91,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(); } 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/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/resources/assets/engineersdecor/recipes/_constants.json b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json index 17f17d3..439a15a 100644 --- a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json @@ -19,6 +19,10 @@ "ingredient": { "type": "forge:ore_dict", "ore": "ingotIron" }, "name": "ingotIron" }, + { + "ingredient": { "type": "forge:ore_dict", "ore": "nuggetIron" }, + "name": "nuggetIron" + }, { "ingredient": { "type": "forge:ore_dict", "ore": "blockIron" }, "name": "blockIron" diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/factory_dropper_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/factory_dropper_recipe_standalone.json new file mode 100644 index 0000000..8572ef7 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/factory_dropper_recipe_standalone.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:factory_dropper", + "missing": ["immersiveengineering:material"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "WWW", + "WDW", + "WPW" + ], + "key": { + "D": { + "item": "#itemDropper", + "data": 0 + }, + "P": { + "item": "#ingotIron", + "data": 0 + }, + "W": { + "item": "#plankWood", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:factory_dropper", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/sign_hotwire_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/sign_hotwire_recipe_standalone.json new file mode 100644 index 0000000..c1d518f --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/sign_hotwire_recipe_standalone.json @@ -0,0 +1,24 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:sign_hotwire", + "missing": ["immersiveengineering:stone_decoration"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "NSN", + "SPS", + "NSN" + ], + "key": { + "S": { "item": "#stickWood" }, + "P": { "item": "#paperAny" }, + "N": { "item": "#nuggetIron" } + }, + "result": { + "item": "engineersdecor:sign_hotwire", + "count": 1 + } +} diff --git a/1.13/readme.md b/1.13/readme.md index 716da2c..9f3792e 100644 --- a/1.13/readme.md +++ b/1.13/readme.md @@ -10,6 +10,9 @@ Mod sources for Minecraft version 1.13.2. ---- ## Revision history + - v1.0.4-b5 [A] Added Factory Dropper. + [A] Added "Caution Defense System Ahead" sign. + - v1.0.4-b4 [U] Updated forge dependency: REQUIRES FORGE >= 1.13.2-25.0.214. [A] Added sign "Electrical hazard"/"Caution hot wire". [A] Added sign "Caution dangerous there" (skull/bones). diff --git a/meta/update.json b/meta/update.json index 67e7419..fccfebc 100644 --- a/meta/update.json +++ b/meta/update.json @@ -39,6 +39,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.13.2": { + "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.", @@ -52,6 +53,6 @@ "1.12.2-recommended": "1.0.6", "1.12.2-latest": "1.0.7-b2", "1.13.2-recommended": "", - "1.13.2-latest": "1.0.4-b4" + "1.13.2-latest": "1.0.4-b5" } } \ 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. ---- From a0e28b336732c8258d3cb5db516566fe7447def2 Mon Sep 17 00:00:00 2001 From: stfwi Date: Sat, 1 Jun 2019 12:54:52 +0200 Subject: [PATCH 4/4] Standalone recipes added. Sign backgrounds adapted. --- 1.12/gradle.properties | 2 +- 1.12/meta/update.json | 5 +-- 1.12/readme.md | 13 ++++++- ..._electrical_furnace_recipe_standalone.json | 32 ++++++++++++++++++ .../blocks/sign/sign_danger_texture.png | Bin 1280 -> 1303 bytes .../blocks/sign/sign_hotwire_texture.png | Bin 1138 -> 1164 bytes 1.13/readme.md | 11 ++++++ meta/update.json | 9 +++-- 8 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_electrical_furnace_recipe_standalone.json diff --git a/1.12/gradle.properties b/1.12/gradle.properties index 569025c..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.7-b3 +version_engineersdecor=1.0.7 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index abf540a..e72c9da 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,6 +1,7 @@ { "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.", @@ -39,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.7-b2" + "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 897db87..d51f796 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,7 +10,18 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history - ~ v1.0.7-b3 [A] Added standalone recipes for signs and factory dropper. + ------------------------------------------------------------------- + - 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. diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_electrical_furnace_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_electrical_furnace_recipe_standalone.json new file mode 100644 index 0000000..9a4b322 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_electrical_furnace_recipe_standalone.json @@ -0,0 +1,32 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_electrical_furnace", + "required": ["engineersdecor:small_lab_furnace"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + " C ", + "HFH" + ], + "key": { + "F": { + "item": "engineersdecor:small_lab_furnace", + "data": 0 + }, + "C": { + "item": "#ingotIron", + "data": 0 + }, + "H": { + "item": "#anyHopper", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_electrical_furnace", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/sign/sign_danger_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/sign/sign_danger_texture.png index eca97c571ba93b96c426a8021e0936055ebd774d..9d62f0bd5b119b48b7640af6eb337eef2c4fc7fb 100644 GIT binary patch delta 1244 zcmV<21S9)^3YQ9yOMkaXL_t(o!_AjVY?M_L$A9PEuQO9Deay6!XFIghmq3KXK$;36 z#u6ohvAS_-2n$G9O1eQYY)DL4vgv{qi3@c@f{6>GMtsB=k*Fx?11zm+N?#P}wDaA2 zTzuoS4Q-)gwBF6!d}r==|L1@I|8wpqoy{ASH5`UD9{&h{Q-8s&6#x+^+uA@)!_$bY z0RV$zYGQ(1ZVpTFG75@W6nX`L_{=!>AC8i+76+*QM*sw{1`Zx=1>mcXZ$VC>2quDJ zvJb>_@aPWGO(_6k@ispF;AiHFV8Ild{r2V*s*0+zX_PEf3!0OB+8u|RSIvScDtiP_ z1dZkzfvL}=R?UK0efAOiXaphBf)uhoaCCKAFssSFWmhfV_twzf`SyGuKc0K(EI;&b zShW@&3&43LW+UILDyL4Kpej`||Ni`5RjCqAojid6`+p8)o|uKl0uT|z7}8BiZVc3s ztcnqer}Ncr9%K^$bar(UiYHkW<9dG`jjc6L%z~_RA@M-MDEp7Jk#0(&s@xc;C)3(W z5Cm+lO)@u^V|Zi?7dr0r_p!TS5C!^v9p&q*x0utFtK-V0SQY0S=}Z!14BjhsHKSCP zKg+(oyMKtqVuWGH9$;YL55oK3MD_$4TdVo@litVnh-Ht!D_A`3FSh2FE9w<%9eZ}S zaQt{Tlao_qv$GsKc6y#tBZ!F#)RWYOVEN<~3^eW75Q#DLAVTN_YXf?E&U59;X8`o{ zoM&`&nu+N$YAUkPdJpNQ6xRZ?A`7-LRd#l%vwx2p<-p5rR3=L?Mhfd+dE+g5`|fe+ z()(Py_8q_d)=O{i0M*r1bag#X-!ESxc?OLL<*9WH-MWWg6$2VEkZwvLs(25tzxf{1 z_s2=5G7JxYL`TP7Iy&}}NF>N+vt+X~BvTnWySiClp5((zr}3)PH6|lREW^ShF334g z+mTk4TFyPFYb6At3w&EU6g|c{#hjVeJX4doPY$@l?oxuhn zLxUrHarGSp=)X0#tRu`)zRwFe`c>h=#mfv0jxd`Y0ib2e5LN4EsV>iwh&fVaGc;_7 zVzb#1h6YEtaPczgJc^KRTE0gtV!$huT7PIi+)RBY75!cE0t9XjZD(iQ?LsqJ&=mMv z>ObA7XJ_5*C{qE|$Pt76<4dyehz3kxu-0&QU?Ng!VDQdktfA6hXJpt$u5gMAJMm!eh^D8$|?+8^<1u>Sm0kHwjIe)AH z#9{>Sj%=uSb*Ku)8sb(8aq%9EB@9FCrUt6waRzVx$W!r>#Q+i|0h426RM*r{nFvq` z@Lq9FF-8ciMMQ93u*ODL09C96tcyEB7d^Aa5ZJ|WhsWE1k%TgwUo?E z^5FLgLX~-v^189cVQNOCMevl^`M43mYyKE?oau+-_yuAN<|onH zJQ7j+NOkgs??C6=!jchLNwn}}VchAW@&W>h!2Ex{j{gENlpxJV7&p8C0000IFm79VTvT##D+EOW&Zrr%2P!LL`77=3oNMn3xJ~V1y zl9_wDnCVMmVoY93(-{Wl-OJ29|KItabKl6DFElDEcorV{lVx_S^Xh%p!e z5nA1QY-6?0$dQ6ig-RqlIJb@r}TY z7m$B9fJfDX&MX{z;BVQTJ$sf#!7Nw(wc+b*-SJLYx*(vib^8{s4c{P}TONfc1`s+W zX&oE3^#XA4z@AYls z;p8*`y?vVq#Np?X3=ZF-#`l*@K^FT%;()YKI<|IG-_i;QgSU#buUUiVc{DfpOifL5 zvp7N+gk1mq3QspRqA2%9M)>ioFPYNC_lU*&fGS}al5cK7W7PS&EOpsx)_1%_GMOX@ z0@eXnuYV46Z{!vlpEWsuNqyn5DR2rF$NH|G_<02dV}x}tzsSCQpE5pvmr`kxy?Z~2 z1CFt(pumP5yPxO<@A2Xl4ERkg<@J$>h_xR5{YN-``YZtb{YSWcdx8glmZ+|(Mv1s* zmO#Nim#_Y8q1>m8(y?VbRoPlVUQ5>0UZcz&Js$e>Fq^$DlTV43gtym-U_U)vlt${G`ICSVR zVt<6%>Q$&JNiWG%FvY{tG}F@ohYugZdI3X&MZP(C3g;XXW22n^?&}3B!YowxPNBA; z301|Za`e~}M6bVFLIPD(L5wA3K&%&)p#j8V1aKjxKyezPDi~`>St-wpbAMng zK@eb@R+CGm7`$|WOe!%qfONuRd}M?|eLZz)4;2sRlrU6`5j<-V5ke=gr(iZ*xSsp5L2Y`8zNS!`Uq(DkahK$n5!0 j=d>3PNPFi0^L6|e9FhmxUqg%p00000NkvXXu0mjfx~N8} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/sign/sign_hotwire_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/sign/sign_hotwire_texture.png index 293b5c5a20031ae3c775fbe72d4cd89cb2e4b231..a925fd45d794005aee33d3ee163a44bda842c303 100644 GIT binary patch delta 1104 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 diff --git a/1.13/readme.md b/1.13/readme.md index 9f3792e..024e00e 100644 --- a/1.13/readme.md +++ b/1.13/readme.md @@ -10,6 +10,17 @@ Mod sources for Minecraft version 1.13.2. ---- ## Revision history + - v1.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. + [A] Sign background colors adapted. + + - v1.0.4-b6 [A] Added Small Electrical Furnace. + [A] Added Small Waste Incinerator. + [A] Experimental: Added fluid check valve. + [A] Experimental: Added fluid redstone controlled valve. + [A] Experimental: Added fluid redstone analog valve. + [A] Experimental: Added passive fluid accumulator. + - v1.0.4-b5 [A] Added Factory Dropper. [A] Added "Caution Defense System Ahead" sign. diff --git a/meta/update.json b/meta/update.json index fccfebc..6965b17 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,6 +1,7 @@ { "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.", @@ -39,6 +40,8 @@ "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.", @@ -50,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.7-b2", + "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-b5" + "1.13.2-latest": "1.0.7-b3" } } \ No newline at end of file