Release merge v1.0.7-mc1.12.2.
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -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} }
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"parent": "engineersdecor:block/sign/sign_decor_model",
|
||||
"textures": { "f": "engineersdecor:blocks/sign/sign_defense_texture" }
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 556 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
1
1.13/.gitignore
vendored
|
@ -34,3 +34,4 @@ desktop.ini
|
|||
Thumbs.db
|
||||
forge*changelog.txt
|
||||
/*.txt
|
||||
mcmodsrepo
|
|
@ -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.
|
||||
|
|
2
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 ..."
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
11
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.
|
||||
|
||||
----
|
||||
|
|