Release merge v1.0.7-mc1.12.2.

This commit is contained in:
stfwi 2019-06-01 12:56:03 +02:00
commit e3a9a52c91
31 changed files with 311 additions and 76 deletions

View file

@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
version_minecraft=1.12.2
version_forge=14.23.5.2768
version_jei=4.10.0.198
version_engineersdecor=1.0.6
version_engineersdecor=1.0.7

View file

@ -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"
}
}

View file

@ -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.

View file

@ -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(); }

View file

@ -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<ItemStack> stacks_;
@ -477,16 +484,15 @@ public class BlockDecorDropper extends BlockDecorDirected
}
public BTileEntity()
{ reset(); }
protected void reset()
{
stacks_ = NonNullList.<ItemStack>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<filter_matches_.length; ++i) filter_matches_[i] = 0;
}
@ -736,7 +742,7 @@ public class BlockDecorDropper extends BlockDecorDirected
double vdx = 1e-2 * MathHelper.clamp(xdeviation, -100, 100);
double vdy = 1e-2 * MathHelper.clamp(ydeviation, -100, 100);
switch(facing) { // switch-case faster than coorsys fwd transform
case DOWN: v0 = v0.add( vdx, 0, vdy); break; // down/up: use xz
case DOWN: v0 = v0.add( vdx, 0,-vdy); break;
case NORTH: v0 = v0.add( vdx, vdy, 0); break;
case SOUTH: v0 = v0.add(-vdx, vdy, 0); break;
case EAST: v0 = v0.add(0, vdy, vdx); break;
@ -796,7 +802,6 @@ public class BlockDecorDropper extends BlockDecorDirected
boolean redstone_trigger = (block_power_signal_ && block_power_updated_);
boolean filter_trigger;
boolean trigger;
int filter_trigger_slots[] = {-1,-1,-1};
// Trigger logic
{
boolean droppable_slot_found = false;
@ -814,12 +819,14 @@ public class BlockDecorDropper extends BlockDecorDirected
if(cmp_stack.isEmpty()) continue;
filter_matches_[ci] = 1;
final int cmp_stack_count = cmp_stack.getCount();
int inventory_item_count = 0;
int slot = drop_slot_index_;
for(int i=INPUT_SLOTS_FIRST; i<(INPUT_SLOTS_FIRST+INPUT_SLOTS_SIZE); ++i) {
final ItemStack inp_stack = stacks_.get(slot);
if((inp_stack.getCount() < cmp_stack_count) || (!inp_stack.isItemEqual(cmp_stack))) { slot = next_slot(slot); continue; }
if(!inp_stack.isItemEqual(cmp_stack)) { slot = next_slot(slot); continue; }
inventory_item_count += inp_stack.getCount();
if(inventory_item_count < cmp_stack_count) { slot = next_slot(slot); continue; }
filter_matches_[ci] = 2;
filter_trigger_slots[ci] = slot;
break;
}
}
@ -847,58 +854,71 @@ public class BlockDecorDropper extends BlockDecorDirected
}
}
// edge detection for next cycle
if(trigger) {
{
boolean tr = world.isBlockPowered(pos);
block_power_updated_ = (block_power_signal_ != tr);
block_power_signal_ = tr;
dirty = true;
if(block_power_updated_) dirty = true;
}
}
// block state update
final IBlockState state = update_blockstate();
if(state == null) { block_power_signal_= false; return; }
// dispense action
if(trigger) {
if(trigger && (drop_timer_ <= 0)) {
// drop stack for non-filter triggers
ItemStack drop_stacks[] = {ItemStack.EMPTY,ItemStack.EMPTY,ItemStack.EMPTY};
if(!filter_trigger) {
Arrays.fill(filter_trigger_slots,-1);
for(int i=0; i<INPUT_SLOTS_SIZE; ++i) {
if(drop_slot_index_ >= 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<filter_matches_.length; ++fi) {
if(filter_matches_[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();

View file

@ -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(); }

View file

@ -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(); }

View file

@ -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<AxisAlignedBB>(Arrays.asList(
// Effective bounding box
ModAuxiliaries.getRotatedAABB(unrotatedAABB.grow(2.0/16, 0, 0), EnumFacing.NORTH, true),

View file

@ -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(); }

View file

@ -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<<BlockDecor.CFG_LIGHT_VALUE_SHIFT),
Material.WOOD, 0.1f, 1f, SoundType.WOOD,
ModAuxiliaries.getPixeledAABB(2,2,15.6, 14,14,16)
);
public static final BlockDecorWasteIncinerator SMALL_WASTE_INCINERATOR = new BlockDecorWasteIncinerator(
"small_waste_incinerator",
BlockDecor.CFG_DEFAULT|BlockDecor.CFG_ELECTRICAL,
@ -332,11 +339,12 @@ public class ModBlocks
SMALL_ELECTRICAL_FURNACE, SMALL_ELECTRICAL_FURNACE_TEI,
SIGN_HOTWIRE, SIGN_DANGER,
SMALL_WASTE_INCINERATOR, WASTE_INCINERATOR_TEI,
SIGN_DEFENSE,
FACTORY_DROPPER, FACTORY_DROPPER_TEI
};
private static final Object dev_content[] = {
SIGN_MINDSTEP,
FACTORY_DROPPER, FACTORY_DROPPER_TEI
};
//--------------------------------------------------------------------------------------------------------------------

View file

@ -0,0 +1,9 @@
{
"forge_marker": 1,
"defaults": { "model": "engineersdecor:sign/sign_defense_model" },
"variants": {
"normal": [{}],
"inventory": [{}],
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":0}, "down": {"x":0} }
}
}

View file

@ -122,16 +122,23 @@ 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.
tile.engineersdecor.sign_hotwire.name=Sign "Caution Hot Wire"
tile.engineersdecor.sign_hotwire.help=§6Placable on walls (horizontally).
tile.engineersdecor.sign_hotwire.help=§6Electrical hazard warning. Don't forget to place around HV, or you'll have a mark in the next audit.
tile.engineersdecor.sign_mindstep.name=Sign "Mind The Step"
tile.engineersdecor.sign_mindstep.help=§6Placable on walls (horizontally).
tile.engineersdecor.sign_danger.name=Sign "Caution Really dangerous there"
tile.engineersdecor.sign_danger.help=§6Placable on walls (horizontally).
tile.engineersdecor.sign_danger.name=Sign "Caution Really Dangerous There"
tile.engineersdecor.sign_danger.help=§6General danger warning.
tile.engineersdecor.sign_defense.name=Sign "Caution Defense System Ahead"
tile.engineersdecor.sign_defense.help=§6Warning sign for turrets, Tesla Coils, and traps.
#-----------------------------------------------------------------------------------------------------------
# EOF

View file

@ -115,16 +115,23 @@ 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.
tile.engineersdecor.sign_hotwire.name=Sign "Caution hot wire"
#tile.engineersdecor.sign_hotwire.help=§6Placable on walls (horizontally).
#tile.engineersdecor.sign_hotwire.help=§6Electrical hazard warning. Don't forget to place around HV, or you'll have a mark in the next audit.
tile.engineersdecor.sign_mindstep.name=Sign "Mind the step"
#tile.engineersdecor.sign_mindstep.help=§6Placable on walls (horizontally).
tile.engineersdecor.sign_danger.name=Sign "Caution really dangerous there"
#tile.engineersdecor.sign_danger.help=§6Placable on walls (horizontally).
#tile.engineersdecor.sign_danger.help=§6General danger warning.
tile.engineersdecor.sign_defense.name=Sign "Caution Defense System Ahead"
#tile.engineersdecor.sign_defense.help=§6Warning sign for turrets, Tesla Coils, and traps.
#-----------------------------------------------------------------------------------------------------------
# EOF

View file

@ -0,0 +1,4 @@
{
"parent": "engineersdecor:block/sign/sign_decor_model",
"textures": { "f": "engineersdecor:blocks/sign/sign_defense_texture" }
}

View file

@ -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"

View file

@ -0,0 +1,16 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:sign_defense",
"required": ["engineersdecor:sign_danger"]
}
],
"type": "minecraft:crafting_shapeless",
"ingredients": [
{ "item": "engineersdecor:sign_danger" }
],
"result": {
"item": "engineersdecor:sign_defense"
}
}

View file

@ -3,12 +3,12 @@
{
"type": "engineersdecor:grc",
"result": "engineersdecor:sign_hotwire",
"required": ["engineersdecor:sign_danger"]
"required": ["engineersdecor:sign_defense"]
}
],
"type": "minecraft:crafting_shapeless",
"ingredients": [
{ "item": "engineersdecor:sign_danger" }
{ "item": "engineersdecor:sign_defense" }
],
"result": {
"item": "engineersdecor:sign_hotwire"

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 B

After

Width:  |  Height:  |  Size: 556 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

1
1.13/.gitignore vendored
View file

@ -34,3 +34,4 @@ desktop.ini
Thumbs.db
forge*changelog.txt
/*.txt
mcmodsrepo

View file

@ -10,6 +10,25 @@ 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.
- 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).
[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.

View file

@ -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 ..."

View file

@ -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.

View file

@ -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"
}
}

View file

@ -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.
----