v1.1.0 release merge.

This commit is contained in:
stfwi 2020-08-02 15:45:53 +02:00
commit 856204990b
42 changed files with 791 additions and 167 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.1.0
version_engineersdecor=1.1.2-b1

View file

@ -1,6 +1,8 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.12.2": {
"1.1.1": "[R] Maintenance release.\n[F] Fixed Snow laying on Steel Mesh Fence (issue #107, thx TheTinyPebble).",
"1.1.1-b1": "[F] Fixed java related startup problem (issue #103, thx madmax3004, erebus42, StormbringerGTX, teagan75).",
"1.1.0": "[R] Maintenance Release build v1.1.0. Changes: * Compatibility fixes. * E-Furnace speed selection bug fixed. * Block Placer improvements. ~ v1.1.0-b3 [/] Version skipped for 1.12.2.",
"1.1.0-b2": "[F] Block Placer defers placements if collidable entities are in the way (issue #98, thx DrakoAlcarus).\n[F] Added Block verification during TE ticking in case devices are moved (issue #101, thx D0CTOR-ZED).",
"1.1.0-b1": "[F] Fixed Electrical Furnace speed sanitizing bug (issue #97, thx therobotmenace).\n[M] Changed Labeled Crate Nesting to circumvent server crashing in combination with the Sponge mod.",
@ -91,7 +93,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.1.0",
"1.12.2-latest": "1.1.0"
"1.12.2-recommended": "1.1.1",
"1.12.2-latest": "1.1.1"
}
}

View file

@ -10,6 +10,14 @@ Mod sources for Minecraft version 1.12.2.
----
## Version history
~ v1.1.2-b1 [F]
- v1.1.1 [R] Maintenance release.
[F] Fixed Snow laying on Steel Mesh Fence (issue #107, thx TheTinyPebble).
- v1.1.1-b1 [F] Fixed java related startup problem (issue #103, thx madmax3004, erebus42,
StormbringerGTX, teagan75).
-------------------------------------------------------------------
- v1.1.0 [R] Maintenance Release build v1.1.0. Changes:
* Compatibility fixes.

View file

@ -13,6 +13,7 @@
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.BlockSnow;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.ModAuxiliaries;
import net.minecraft.block.SoundType;

View file

@ -40,6 +40,37 @@ import java.util.Random;
public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
public static final int IDLE_TICK_INTERVAL = 40;
public static final int TICK_INTERVAL = 5;
public static final int BOOST_FACTOR = 8;
public static final int DEFAULT_BOOST_ENERGY = 64;
public static final int DEFAULT_BREAKING_RELUCTANCE = 17;
public static final int DEFAULT_MIN_BREAKING_TIME = 15;
public static final int MAX_BREAKING_TIME = 800;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
private static int energy_max = 10000;
private static int breaking_reluctance = DEFAULT_BREAKING_RELUCTANCE;
private static int min_breaking_time = DEFAULT_MIN_BREAKING_TIME;
private static boolean requires_power = false;
public static void on_config(int boost_energy_per_tick, int breaking_time_per_hardness, int min_breaking_time_ticks, boolean power_required)
{
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
energy_max = Math.max(boost_energy_consumption * 10, 10000);
breaking_reluctance = MathHelper.clamp(breaking_time_per_hardness, 5, 50);
min_breaking_time = MathHelper.clamp(min_breaking_time_ticks, 10, 100);
requires_power = power_required;
ModEngineersDecor.logger.info("Config block breaker: Boost energy consumption:" + (boost_energy_consumption/TICK_INTERVAL) + "rf/t, reluctance=" + breaking_reluctance + "t/hrdn, break time offset=" + min_breaking_time + "t");
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyBool ACTIVE = PropertyBool.create("active");
public BlockDecorBreaker(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
@ -115,34 +146,12 @@ public class BlockDecorBreaker extends BlockDecorDirectedHorizontal
public static class BTileEntity extends TileEntity implements ITickable, IEnergyStorage
{
public static final int IDLE_TICK_INTERVAL = 40;
public static final int TICK_INTERVAL = 5;
public static final int BOOST_FACTOR = 8;
public static final int DEFAULT_BOOST_ENERGY = 64;
public static final int DEFAULT_BREAKING_RELUCTANCE = 17;
public static final int DEFAULT_MIN_BREAKING_TIME = 15;
public static final int MAX_BREAKING_TIME = 800;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
private static int energy_max = 10000;
private static int breaking_reluctance = DEFAULT_BREAKING_RELUCTANCE;
private static int min_breaking_time = DEFAULT_MIN_BREAKING_TIME;
private static boolean requires_power = false;
private int tick_timer_;
private int active_timer_;
private int proc_time_elapsed_;
private int time_needed_;
private int energy_;
public static void on_config(int boost_energy_per_tick, int breaking_time_per_hardness, int min_breaking_time_ticks, boolean power_required)
{
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
energy_max = Math.max(boost_energy_consumption * 10, 10000);
breaking_reluctance = MathHelper.clamp(breaking_time_per_hardness, 5, 50);
min_breaking_time = MathHelper.clamp(min_breaking_time_ticks, 10, 100);
requires_power = power_required;
ModEngineersDecor.logger.info("Config block breaker: Boost energy consumption:" + (boost_energy_consumption/TICK_INTERVAL) + "rf/t, reluctance=" + breaking_reluctance + "t/hrdn, break time offset=" + min_breaking_time + "t");
}
public BTileEntity()
{}

View file

@ -30,6 +30,10 @@ import java.util.Random;
public class BlockDecorChair extends BlockDecorDirected
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
private static boolean sitting_enabled = true;
private static double sitting_probability = 0.1;
private static double standup_probability = 0.01;
@ -42,6 +46,10 @@ public class BlockDecorChair extends BlockDecorDirected
ModEngineersDecor.logger.info("Config chairs: " + sitting_enabled + ", sit: " + sitting_probability, ", stand up: " + standup_probability);
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public BlockDecorChair(@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); setLightOpacity(0); setTickRandomly(true); }

View file

@ -64,6 +64,10 @@ import java.util.List;
public class BlockDecorCraftingTable extends BlockDecorDirected
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
public static boolean with_assist = true;
public static boolean with_assist_direct_history_refab = false;
public static boolean with_assist_quickmove_buttons = false;
@ -79,6 +83,10 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
CraftingHistory.max_history_size(32);
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public BlockDecorCraftingTable(@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);

View file

@ -56,7 +56,7 @@ public class BlockDecorFence extends BlockDecorWall
@Override
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return (face==EnumFacing.UP) ? (BlockFaceShape.SOLID) : ((face!=EnumFacing.DOWN) ? (BlockFaceShape.MIDDLE_POLE_THIN) : (BlockFaceShape.CENTER_SMALL)); }
{ return (face==EnumFacing.UP) ? (BlockFaceShape.CENTER) : ((face!=EnumFacing.DOWN) ? (BlockFaceShape.MIDDLE_POLE_THIN) : (BlockFaceShape.CENTER_SMALL)); }
@Override
protected BlockStateContainer createBlockState()

View file

@ -58,6 +58,34 @@ import java.util.Random;
public class BlockDecorFurnace extends BlockDecorDirected
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
public static final int TICK_INTERVAL = 4;
public static final int FIFO_INTERVAL = 20;
public static final int MAX_BURNTIME = 0x7fff;
public static final int DEFAULT_BOOST_ENERGY = 32;
public static final int VANILLA_FURNACE_SPEED_INTERVAL = 200;
public static final int DEFAULT_SPEED_INTERVAL = 150;
private static double proc_fuel_efficiency_ = 1.0;
private static int proc_speed_interval_ = DEFAULT_SPEED_INTERVAL;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY * TICK_INTERVAL;
public static void on_config(int speed_percent, int fuel_efficiency_percent, int boost_energy_per_tick)
{
double ratio = (100.0 / MathHelper.clamp(speed_percent, 10, 500)) ;
proc_speed_interval_ = MathHelper.clamp((int)(ratio * VANILLA_FURNACE_SPEED_INTERVAL), 20, 400);
proc_fuel_efficiency_ = ((double) MathHelper.clamp(fuel_efficiency_percent, 10, 500)) / 100;
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
ModEngineersDecor.logger.info("Config lab furnace interval:" + proc_speed_interval_ + ", efficiency:" + proc_fuel_efficiency_);
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyBool LIT = PropertyBool.create("lit");
public BlockDecorFurnace(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
@ -226,7 +254,7 @@ public class BlockDecorFurnace extends BlockDecorDirected
{ final int tc=te.getField(2), T=te.getField(3); return ((T>0) && (tc>0)) ? (tc * pixels / T) : (0); }
private int flame_px(int pixels)
{ int ibt = te.getField(1); return ((te.getField(0) * pixels) / ((ibt>0) ? (ibt) : (BTileEntity.proc_speed_interval_))); }
{ int ibt = te.getField(1); return ((te.getField(0) * pixels) / ((ibt>0) ? (ibt) : (proc_speed_interval_))); }
}
//--------------------------------------------------------------------------------------------------------------------
@ -434,12 +462,6 @@ public class BlockDecorFurnace extends BlockDecorDirected
public static class BTileEntity extends TileEntity implements ITickable, ISidedInventory, IEnergyStorage
{
public static final int TICK_INTERVAL = 4;
public static final int FIFO_INTERVAL = 20;
public static final int MAX_BURNTIME = 0x7fff;
public static final int DEFAULT_BOOST_ENERGY = 32;
public static final int VANILLA_FURNACE_SPEED_INTERVAL = 200;
public static final int DEFAULT_SPEED_INTERVAL = 150;
public static final int NUM_OF_SLOTS = 11;
public static final int SMELTING_INPUT_SLOT_NO = 0;
public static final int SMELTING_FUEL_SLOT_NO = 1;
@ -453,10 +475,6 @@ public class BlockDecorFurnace extends BlockDecorDirected
public static final int AUX_0_SLOT_NO = 9;
public static final int AUX_1_SLOT_NO =10;
private static double proc_fuel_efficiency_ = 1.0;
private static int proc_speed_interval_ = DEFAULT_SPEED_INTERVAL;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY * TICK_INTERVAL;
private int tick_timer_;
private int fifo_timer_;
private int burntime_left_;
@ -468,15 +486,6 @@ public class BlockDecorFurnace extends BlockDecorDirected
protected ItemStack current_smelting_input_stack_ = ItemStack.EMPTY;
protected NonNullList<ItemStack> stacks_;
public static void on_config(int speed_percent, int fuel_efficiency_percent, int boost_energy_per_tick)
{
double ratio = (100.0 / MathHelper.clamp(speed_percent, 10, 500)) ;
proc_speed_interval_ = MathHelper.clamp((int)(ratio * VANILLA_FURNACE_SPEED_INTERVAL), 20, 400);
proc_fuel_efficiency_ = ((double) MathHelper.clamp(fuel_efficiency_percent, 10, 500)) / 100;
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
ModEngineersDecor.logger.info("Config lab furnace interval:" + proc_speed_interval_ + ", efficiency:" + proc_fuel_efficiency_);
}
public BTileEntity()
{ reset(); }
@ -809,8 +818,7 @@ public class BlockDecorFurnace extends BlockDecorDirected
{
if(--tick_timer_ > 0) return;
tick_timer_ = TICK_INTERVAL;
final IBlockState state = world.getBlockState(pos);
if(!(state.getBlock() instanceof BlockDecorFurnace)) return;
if(!((world.getBlockState(getPos()).getBlock()) instanceof BlockDecorFurnace)) return;
final boolean was_burning = isBurning();
if(was_burning) burntime_left_ -= TICK_INTERVAL;
if(fuel_burntime_ < 0) fuel_burntime_ = getItemBurnTime(stacks_.get(SMELTING_FUEL_SLOT_NO));
@ -868,7 +876,7 @@ public class BlockDecorFurnace extends BlockDecorDirected
}
if(was_burning != isBurning()) {
dirty = true;
world.setBlockState(pos, state.withProperty(LIT, isBurning()));
world.setBlockState(pos, world.getBlockState(pos).withProperty(LIT, isBurning()));
}
if(dirty) markDirty();
}

View file

@ -11,6 +11,7 @@ package wile.engineersdecor.blocks;
import wile.engineersdecor.ModContent;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.Networking;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
@ -39,7 +40,6 @@ import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import wile.engineersdecor.detail.Networking;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@ -48,6 +48,29 @@ import java.util.Random;
public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
private static int energy_consumption_ = BTileEntity.DEFAULT_SCALED_ENERGY_CONSUMPTION;
private static int transfer_energy_consumption_ = BTileEntity.DEFAULT_SCALED_ENERGY_CONSUMPTION/8;
private static int proc_speed_percent_ = BTileEntity.DEFAULT_SPEED_PERCENT;
private static double speed_setting_factor_[] = {0.0, 1.0, 1.5, 2.0};
private static boolean with_automatic_inventory_pulling_ = false;
public static void on_config(int speed_percent, int standard_energy_per_tick, boolean with_automatic_inventory_pulling)
{
proc_speed_percent_ = MathHelper.clamp(speed_percent, 10, 500);
energy_consumption_ = MathHelper.clamp(standard_energy_per_tick, 10, 256) * BTileEntity.HEAT_INCREMENT * proc_speed_percent_ / 100;
transfer_energy_consumption_ = MathHelper.clamp(energy_consumption_/8, 8, BTileEntity.HEAT_INCREMENT);
with_automatic_inventory_pulling_ = with_automatic_inventory_pulling;
ModEngineersDecor.logger.info("Config electrical furnace speed:" + proc_speed_percent_ + ", power consumption:" + energy_consumption_);
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public BlockDecorFurnaceElectrical(@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);
@ -328,23 +351,6 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
public static final int DEFAULT_ENERGY_CONSUMPTION = 16 ;
public static final int DEFAULT_SCALED_ENERGY_CONSUMPTION = DEFAULT_ENERGY_CONSUMPTION * HEAT_INCREMENT * DEFAULT_SPEED_PERCENT/100;
// Config ----------------------------------------------------------------------------------
private static int energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION;
private static int transfer_energy_consumption_ = DEFAULT_SCALED_ENERGY_CONSUMPTION/8;
private static int proc_speed_percent_ = DEFAULT_SPEED_PERCENT;
private static double speed_setting_factor_[] = {0.0, 1.0, 1.5, 2.0};
private static boolean with_automatic_inventory_pulling_ = false;
public static void on_config(int speed_percent, int standard_energy_per_tick, boolean with_automatic_inventory_pulling)
{
proc_speed_percent_ = MathHelper.clamp(speed_percent, 10, 500);
energy_consumption_ = MathHelper.clamp(standard_energy_per_tick, 10, 256) * HEAT_INCREMENT * proc_speed_percent_ / 100;
transfer_energy_consumption_ = MathHelper.clamp(energy_consumption_/8, 8, HEAT_INCREMENT);
with_automatic_inventory_pulling_ = with_automatic_inventory_pulling;
ModEngineersDecor.logger.info("Config electrical furnace speed:" + proc_speed_percent_ + ", power consumption:" + energy_consumption_);
}
// BTileEntity ------------------------------------------------------------------------------
private int burntime_left_;

View file

@ -40,15 +40,26 @@ import java.util.List;
public class BlockDecorLadder extends BlockLadder
{
protected static final AxisAlignedBB EDLADDER_SOUTH_AABB = ModAuxiliaries.getPixeledAABB(3, 0, 0, 13, 16, 3);
protected static final AxisAlignedBB EDLADDER_EAST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.EAST, false);
protected static final AxisAlignedBB EDLADDER_WEST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.WEST, false);
protected static final AxisAlignedBB EDLADDER_NORTH_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.NORTH, false);
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
protected static final double ladder_speed = 0.7;
protected static boolean with_ladder_speed_boost = true;
public static final void on_config(boolean without_ladder_speed_boost)
{ with_ladder_speed_boost = !without_ladder_speed_boost; }
{
with_ladder_speed_boost = !without_ladder_speed_boost;
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
protected static final AxisAlignedBB EDLADDER_SOUTH_AABB = ModAuxiliaries.getPixeledAABB(3, 0, 0, 13, 16, 3);
protected static final AxisAlignedBB EDLADDER_EAST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.EAST, false);
protected static final AxisAlignedBB EDLADDER_WEST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.WEST, false);
protected static final AxisAlignedBB EDLADDER_NORTH_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.NORTH, false);
public BlockDecorLadder(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{

View file

@ -60,6 +60,45 @@ import java.util.Map;
public class BlockDecorMilker extends BlockDecorDirectedHorizontal
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
public static final int BUCKET_SIZE = 1000;
public static final int TICK_INTERVAL = 80;
public static final int PROCESSING_TICK_INTERVAL = 20;
public static final int TANK_CAPACITY = BUCKET_SIZE * 12;
public static final int MAX_MILKING_TANK_LEVEL = TANK_CAPACITY-500;
public static final int FILLED_INDICATION_THRESHOLD = BUCKET_SIZE;
public static final int MAX_ENERGY_BUFFER = 16000;
public static final int MAX_ENERGY_TRANSFER = 512;
public static final int DEFAULT_ENERGY_CONSUMPTION = 0;
private static FluidStack milk_fluid_ = new FluidStack(FluidRegistry.WATER, 0);
private static HashMap<ItemStack, ItemStack> milk_containers_ = new HashMap<>();
private static int energy_consumption = DEFAULT_ENERGY_CONSUMPTION;
public static void on_config(int energy_consumption_per_tick)
{
energy_consumption = MathHelper.clamp(energy_consumption_per_tick, 0, 128);
{
Fluid milk = FluidRegistry.getFluid("milk");
if(milk != null) milk_fluid_ = new FluidStack(milk, BUCKET_SIZE);
}
{
milk_containers_.put(new ItemStack(Items.BUCKET), new ItemStack(Items.MILK_BUCKET));
if(ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE!=null) milk_containers_.put(new ItemStack(Items.GLASS_BOTTLE), new ItemStack(ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE));
}
ModEngineersDecor.logger.info(
"Config milker energy consumption:" + energy_consumption + "rf/t"
+ ((milk_fluid_==null)?"":" [milk fluid available]")
+ ((ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE==null)?"":" [bottledmilk mod available]")
);
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyBool FILLED = PropertyBool.create("filled");
public static final PropertyBool ACTIVE = PropertyBool.create("active");
@ -103,7 +142,7 @@ public class BlockDecorMilker extends BlockDecorDirectedHorizontal
public int getComparatorInputOverride(IBlockState state, World world, BlockPos pos)
{
BTileEntity te = getTe(world, pos);
return (te==null) ? 0 : MathHelper.clamp((16 * te.fluid_level())/BTileEntity.TANK_CAPACITY, 0, 15);
return (te==null) ? 0 : MathHelper.clamp((16 * te.fluid_level())/TANK_CAPACITY, 0, 15);
}
@Override
@ -149,11 +188,11 @@ public class BlockDecorMilker extends BlockDecorDirectedHorizontal
if(out_stack.isEmpty()) return FluidUtil.interactWithFluidHandler(player, hand, te.fluid_handler());
boolean drained = false;
IItemHandler player_inventory = new PlayerMainInvWrapper(player.inventory);
if(te.fluid_level() >= BTileEntity.BUCKET_SIZE) {
if(te.fluid_level() >= BUCKET_SIZE) {
final ItemStack insert_stack = out_stack.copy();
ItemStack remainder = ItemHandlerHelper.insertItemStacked(player_inventory, insert_stack, false);
if(remainder.getCount() < insert_stack.getCount()) {
te.drain(BTileEntity.BUCKET_SIZE);
te.drain(BUCKET_SIZE);
in_stack.shrink(1);
drained = true;
if(remainder.getCount() > 0) {
@ -181,21 +220,9 @@ public class BlockDecorMilker extends BlockDecorDirectedHorizontal
public static class BTileEntity extends TileEntity implements ITickable, ICapabilityProvider, IEnergyStorage
{
public static final int BUCKET_SIZE = 1000;
public static final int TICK_INTERVAL = 80;
public static final int PROCESSING_TICK_INTERVAL = 20;
public static final int TANK_CAPACITY = BUCKET_SIZE * 12;
public static final int MAX_MILKING_TANK_LEVEL = TANK_CAPACITY-500;
public static final int FILLED_INDICATION_THRESHOLD = BUCKET_SIZE;
public static final int MAX_ENERGY_BUFFER = 16000;
public static final int MAX_ENERGY_TRANSFER = 512;
public static final int DEFAULT_ENERGY_CONSUMPTION = 0;
private static final EnumFacing FLUID_TRANSFER_DIRECTRIONS[] = {EnumFacing.DOWN,EnumFacing.EAST,EnumFacing.SOUTH,EnumFacing.WEST,EnumFacing.NORTH};
private enum MilkingState { IDLE, PICKED, COMING, POSITIONING, MILKING, LEAVING, WAITING }
private static FluidStack milk_fluid_ = new FluidStack(FluidRegistry.WATER, 0);
private static HashMap<ItemStack, ItemStack> milk_containers_ = new HashMap<>();
private static int energy_consumption = DEFAULT_ENERGY_CONSUMPTION;
private int tick_timer_;
private int energy_stored_;
private int tank_level_ = 0;
@ -205,24 +232,6 @@ public class BlockDecorMilker extends BlockDecorDirectedHorizontal
private int state_timer_ = 0;
private BlockPos tracked_cow_original_position_ = null;
public static void on_config(int energy_consumption_per_tick)
{
energy_consumption = MathHelper.clamp(energy_consumption_per_tick, 0, 128);
{
Fluid milk = FluidRegistry.getFluid("milk");
if(milk != null) milk_fluid_ = new FluidStack(milk, BUCKET_SIZE);
}
{
milk_containers_.put(new ItemStack(Items.BUCKET), new ItemStack(Items.MILK_BUCKET));
if(ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE!=null) milk_containers_.put(new ItemStack(Items.GLASS_BOTTLE), new ItemStack(ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE));
}
ModEngineersDecor.logger.info(
"Config milker energy consumption:" + energy_consumption + "rf/t"
+ ((milk_fluid_==null)?"":" [milk fluid available]")
+ ((ExtItems.BOTTLED_MILK_BOTTLE_DRINKLABLE==null)?"":" [bottledmilk mod available]")
);
}
public BTileEntity()
{ reset(); }

View file

@ -42,15 +42,26 @@ import javax.annotation.Nullable;
public class BlockDecorPipeValve extends BlockDecorDirected
{
public static final PropertyInteger RS_CONNECTION_DIR = PropertyInteger.create("rsdir", 0,4);
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
private static int fluid_maxflow_mb = 1000;
private static int redstone_flow_slope_mb = 1000/15;
public static void on_config(int container_size_decl, int redstone_slope)
{
BTileEntity.fluid_maxflow_mb = MathHelper.clamp(container_size_decl, 1, 10000);
BTileEntity.redstone_flow_slope_mb = MathHelper.clamp(redstone_slope, 1, 10000);
ModEngineersDecor.logger.info("Config pipe valve: maxflow:" + BTileEntity.fluid_maxflow_mb + "mb, redstone amp:" + BTileEntity.redstone_flow_slope_mb + "mb/sig");
fluid_maxflow_mb = MathHelper.clamp(container_size_decl, 1, 10000);
redstone_flow_slope_mb = MathHelper.clamp(redstone_slope, 1, 10000);
ModEngineersDecor.logger.info("Config pipe valve: maxflow:" + fluid_maxflow_mb + "mb, redstone amp:" + redstone_flow_slope_mb + "mb/sig");
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyInteger RS_CONNECTION_DIR = PropertyInteger.create("rsdir", 0,4);
public BlockDecorPipeValve(@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); }
@ -131,8 +142,6 @@ public class BlockDecorPipeValve extends BlockDecorDirected
public static class BTileEntity extends TileEntity implements IFluidHandler, IFluidTankProperties, ICapabilityProvider, IFluidPipe
{
private static final BackFlowHandler back_flow_handler_ = new BackFlowHandler();
protected static int fluid_maxflow_mb = 1000;
protected static int redstone_flow_slope_mb = 1000/15;
private final IFluidTankProperties[] fluid_props_ = {this};
private EnumFacing block_facing_ = EnumFacing.NORTH;
private boolean filling_ = false;

View file

@ -38,6 +38,25 @@ import javax.annotation.Nullable;
public class BlockDecorSolarPanel extends BlockDecor
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
private static int peak_power_per_tick_ = BTileEntity.DEFAULT_PEAK_POWER;
private static int max_power_storage_ = 10000;
private static int max_feed_power = 128;
public static void on_config(int peak_power_per_tick, int max_feed_power_per_tick)
{
peak_power_per_tick_ = peak_power_per_tick;
max_feed_power = max_feed_power_per_tick;
ModEngineersDecor.logger.info("Config small solar panel: Peak production:" + peak_power_per_tick_ + "/tick");
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyInteger EXPOSITION = PropertyInteger.create("exposition", 0, 4);
public BlockDecorSolarPanel(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
@ -116,21 +135,12 @@ public class BlockDecorSolarPanel extends BlockDecor
public static final int TICK_INTERVAL = 8;
public static final int ACCUMULATION_INTERVAL = 4;
private static final EnumFacing transfer_directions_[] = {EnumFacing.DOWN, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.NORTH };
private static int peak_power_per_tick_ = DEFAULT_PEAK_POWER;
private static int max_power_storage_ = 10000;
private static int max_feed_power = 128;
private int current_production_ = 0;
private int tick_timer_ = 0;
private int recalc_timer_ = 0;
private int accumulated_power_ = 0;
private int current_feedin_ = 0;
public static void on_config(int peak_power_per_tick)
{
peak_power_per_tick_ = peak_power_per_tick;
ModEngineersDecor.logger.info("Config small solar panel: Peak production:" + peak_power_per_tick_ + "/tick");
}
//------------------------------------------------------------------------------------------------------------------
public BTileEntity()

View file

@ -38,6 +38,34 @@ import java.util.Random;
public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
{
//--------------------------------------------------------------------------------------------------------------------
// Config
//--------------------------------------------------------------------------------------------------------------------
public static final int IDLE_TICK_INTERVAL = 40;
public static final int TICK_INTERVAL = 5;
public static final int BOOST_FACTOR = 6;
public static final int DEFAULT_BOOST_ENERGY = 64;
public static final int DEFAULT_CUTTING_TIME_NEEDED = 60; // 60 secs, so that people don't come to the bright idea to carry one with them.
private static int energy_max = DEFAULT_BOOST_ENERGY * 20;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
private static int cutting_time_needed = 20 * DEFAULT_CUTTING_TIME_NEEDED;
private static boolean requires_power = false;
public static void on_config(int boost_energy_per_tick, int cutting_time_seconds, boolean power_required)
{
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
energy_max = Math.max(boost_energy_consumption * 10, 10000);
cutting_time_needed = 20 * MathHelper.clamp(cutting_time_seconds, 10, 240);
requires_power = power_required;
ModEngineersDecor.logger.info("Config tree cutter: Boost energy consumption:" + boost_energy_consumption + "rf/t" + (requires_power?" (power required for operation) ":"") + ", cutting time " + cutting_time_needed + "t." );
}
//--------------------------------------------------------------------------------------------------------------------
// Block
//--------------------------------------------------------------------------------------------------------------------
public static final PropertyBool ACTIVE = PropertyBool.create("active");
public BlockDecorTreeCutter(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
@ -104,30 +132,11 @@ public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal
public static class BTileEntity extends TileEntity implements ITickable, IEnergyStorage
{
public static final int IDLE_TICK_INTERVAL = 40;
public static final int TICK_INTERVAL = 5;
public static final int BOOST_FACTOR = 6;
public static final int DEFAULT_BOOST_ENERGY = 64;
public static final int DEFAULT_CUTTING_TIME_NEEDED = 60; // 60 secs, so that people don't come to the bright idea to carry one with them.
private static int energy_max = DEFAULT_BOOST_ENERGY * 20;
private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY;
private static int cutting_time_needed = 20 * DEFAULT_CUTTING_TIME_NEEDED;
private static boolean requires_power = false;
private int tick_timer_;
private int active_timer_;
private int proc_time_elapsed_; // small, not saved in nbt.
private int energy_; // small, not saved in nbt.
public static void on_config(int boost_energy_per_tick, int cutting_time_seconds, boolean power_required)
{
boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512);
energy_max = Math.max(boost_energy_consumption * 10, 10000);
cutting_time_needed = 20 * MathHelper.clamp(cutting_time_seconds, 10, 240);
requires_power = power_required;
ModEngineersDecor.logger.info("Config tree cutter: Boost energy consumption:" + boost_energy_consumption + "rf/t" + (requires_power?" (power required for operation) ":"") + ", cutting time " + cutting_time_needed + "t." );
}
public BTileEntity()
{}

View file

@ -219,7 +219,7 @@ public class BlockDecorWall extends BlockDecor
@Override
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return (face==EnumFacing.UP) ? (BlockFaceShape.SOLID) : ((face!=EnumFacing.DOWN) ? (BlockFaceShape.MIDDLE_POLE_THICK) : (BlockFaceShape.CENTER_BIG)); }
{ return (face==EnumFacing.UP) ? (BlockFaceShape.CENTER) : ((face!=EnumFacing.DOWN) ? (BlockFaceShape.MIDDLE_POLE_THICK) : (BlockFaceShape.CENTER_BIG)); }
@Override
public boolean canBeConnectedTo(IBlockAccess world, BlockPos pos, EnumFacing facing)

View file

@ -22,7 +22,6 @@ import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import wile.engineersdecor.blocks.BlockDecorMilker.BTileEntity;
import javax.annotation.Nullable;
import java.util.ArrayList;
@ -400,7 +399,7 @@ public class ModConfig
})
@Config.Name("Block Breaker: Power consumption")
@Config.RangeInt(min=16, max=512)
public int block_breaker_power_consumption = BlockDecorBreaker.BTileEntity.DEFAULT_BOOST_ENERGY;
public int block_breaker_power_consumption = BlockDecorBreaker.DEFAULT_BOOST_ENERGY;
@Config.Comment({
"Defines how much time the Small Block Breaker needs per block hardness, " +
@ -410,7 +409,7 @@ public class ModConfig
})
@Config.Name("Block Breaker: Breaking reluctance")
@Config.RangeInt(min=5, max=50)
public int block_breaker_reluctance = BlockDecorBreaker.BTileEntity.DEFAULT_BREAKING_RELUCTANCE;
public int block_breaker_reluctance = BlockDecorBreaker.DEFAULT_BREAKING_RELUCTANCE;
@Config.Comment({
"Defines how much time the Small Block Breaker needs at least, better said it's an offset: " +
@ -420,7 +419,7 @@ public class ModConfig
})
@Config.Name("Block Breaker: Min breaking time")
@Config.RangeInt(min=10, max=100)
public int block_breaker_min_breaking_time = BlockDecorBreaker.BTileEntity.DEFAULT_MIN_BREAKING_TIME;
public int block_breaker_min_breaking_time = BlockDecorBreaker.DEFAULT_MIN_BREAKING_TIME;
@Config.Comment({
"Defines if the Small Block Breaker does not work without RF power."
@ -434,7 +433,7 @@ public class ModConfig
})
@Config.Name("Tree Cutter: Power consumption")
@Config.RangeInt(min=16, max=512)
public int tree_cuttter_energy_consumption = BlockDecorTreeCutter.BTileEntity.DEFAULT_BOOST_ENERGY;
public int tree_cuttter_energy_consumption = BlockDecorTreeCutter.DEFAULT_BOOST_ENERGY;
@Config.Comment({
"Defines how much time the Small Tree Cutter needs to cut a tree without RF power. " +
@ -443,7 +442,7 @@ public class ModConfig
})
@Config.Name("Tree Cutter: Cutting time")
@Config.RangeInt(min=10, max=240)
public int tree_cuttter_cutting_time_needed = BlockDecorTreeCutter.BTileEntity.DEFAULT_CUTTING_TIME_NEEDED;
public int tree_cuttter_cutting_time_needed = BlockDecorTreeCutter.DEFAULT_CUTTING_TIME_NEEDED;
@Config.Comment({
"Defines if the Small Tree Cutter does not work without RF power."
@ -459,7 +458,7 @@ public class ModConfig
})
@Config.Name("Milker: Power consumption")
@Config.RangeInt(min=0, max=128)
public int milker_energy_consumption = BTileEntity.DEFAULT_ENERGY_CONSUMPTION;
public int milker_energy_consumption = BlockDecorMilker.DEFAULT_ENERGY_CONSUMPTION;
}
@SuppressWarnings("unused")
@ -612,16 +611,16 @@ public class ModConfig
public static final void apply()
{
BlockDecorFurnace.BTileEntity.on_config(tweaks.furnace_smelting_speed_percent, tweaks.furnace_fuel_efficiency_percent, tweaks.furnace_boost_energy_consumption);
BlockDecorFurnace.on_config(tweaks.furnace_smelting_speed_percent, tweaks.furnace_fuel_efficiency_percent, tweaks.furnace_boost_energy_consumption);
BlockDecorChair.on_config(optout.without_chair_sitting, optout.without_mob_chair_sitting, tweaks.chair_mob_sitting_probability_percent, tweaks.chair_mob_standup_probability_percent);
BlockDecorLadder.on_config(optout.without_ladder_speed_boost);
BlockDecorCraftingTable.on_config(optout.without_crafting_table_history, false, tweaks.with_crafting_quickmove_buttons, tweaks.without_crafting_mouse_scrolling);
BlockDecorPipeValve.on_config(tweaks.pipevalve_max_flowrate, tweaks.pipevalve_redstone_slope);
BlockDecorFurnaceElectrical.BTileEntity.on_config(tweaks.e_furnace_speed_percent, tweaks.e_furnace_power_consumption, false);
BlockDecorSolarPanel.BTileEntity.on_config(tweaks.solar_panel_peak_power);
BlockDecorBreaker.BTileEntity.on_config(tweaks.block_breaker_power_consumption, tweaks.block_breaker_reluctance, tweaks.block_breaker_min_breaking_time, tweaks.block_breaker_requires_power);
BlockDecorTreeCutter.BTileEntity.on_config(tweaks.tree_cuttter_energy_consumption, tweaks.tree_cuttter_cutting_time_needed, tweaks.tree_cuttter_requires_power);
BlockDecorMilker.BTileEntity.on_config(tweaks.milker_energy_consumption);
BlockDecorFurnaceElectrical.on_config(tweaks.e_furnace_speed_percent, tweaks.e_furnace_power_consumption, false);
BlockDecorSolarPanel.on_config(tweaks.solar_panel_peak_power, 128);
BlockDecorBreaker.on_config(tweaks.block_breaker_power_consumption, tweaks.block_breaker_reluctance, tweaks.block_breaker_min_breaking_time, tweaks.block_breaker_requires_power);
BlockDecorTreeCutter.on_config(tweaks.tree_cuttter_energy_consumption, tweaks.tree_cuttter_cutting_time_needed, tweaks.tree_cuttter_requires_power);
BlockDecorMilker.on_config(tweaks.milker_energy_consumption);
BlockDecorPlacer.BTileEntity.on_config();
{
// Check if the config is already synchronized or has to be synchronised.

View file

@ -5,4 +5,4 @@ version_minecraft=1.14.4
version_forge_minecraft=1.14.4-28.2.3
version_fml_mappings=20190719-1.14.3
version_jei=1.14.4:6.0.0.10
version_engineersdecor=1.1.0
version_engineersdecor=1.1.1-b1

View file

@ -11,6 +11,8 @@ Mod sources for Minecraft version 1.14.4.
## Version history
~ v1.1.1-b1 [F]
-------------------------------------------------------------------
- v1.1.0 [R] Release build v1.1.0. Changes:
* GUI button/slider tooltips added (1.5s delay).

View file

@ -2,7 +2,7 @@
org.gradle.daemon=false
org.gradle.jvmargs=-Xmx8G
version_minecraft=1.15.2
version_forge_minecraft=1.15.2-31.2.20
version_forge_minecraft=1.15.2-31.2.31
version_fml_mappings=20200514-1.15.1
version_jei=1.15.2:6.0.0.2
version_engineersdecor=1.1.0
version_engineersdecor=1.1.1

View file

@ -1,6 +1,8 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.15.2": {
"1.1.1": "[R] Release build v1.1.1. Changes: * Dense Grit Dirt added. * Ceiling Edge Light added. * Iron Bulb Light added.",
"1.1.1-b1": "[A] Dense Grit Dirt added.\n[A] Ceiling Edge Light added.\n[A] Iron Bulb Light added.",
"1.1.0": "[R] Release build v1.1.0. Changes: * GUI button/slider tooltips added (1.5s delay). * IE Sheet Metal Slab Slices added. * Config options extended/updated. * Block Placer improvements. * Block Breaker drop trajectory improved. * Dense Grit Sand textures enhanced. * Pipe Valve redstone connector display fixes. * Compatibility bug fixes.\n[F] Block Placer also defers placements if falling item stacks are in front of it (thx Cid).",
"1.1.0-b3": "[!] Forge update, requires Forge 1.15.2-31.2.20.\n[F] Block Placer defers placements if collidable entities are in the way (issue #98, thx DrakoAlcarus).\n[M] Block Breaker item drop trajectories have lower speed (fall slightly straighter down).\n[M] Pipe Valves redstone connector also shown if the adjacent block can connect redstone in general.\n[F] Added Block verification during TE ticking in case devices are moved (issue #101, thx D0CTOR-ZED).",
"1.1.0-b2": "[A] Added tooltips for buttons/settings in device GUIs (1.5s display delay).\n[U] Updated Forge/Mappings.",
@ -24,7 +26,7 @@
"1.0.17-b2": "[A] Initial port."
},
"promos": {
"1.15.2-recommended": "1.1.0",
"1.15.2-latest": "1.1.0"
"1.15.2-recommended": "1.1.1",
"1.15.2-latest": "1.1.1"
}
}

View file

@ -11,6 +11,17 @@ Mod sources for Minecraft version 1.15.1.
## Version history
-------------------------------------------------------------------
- v1.1.1 [R] Release build v1.1.1. Changes:
* Dense Grit Dirt added.
* Ceiling Edge Light added.
* Iron Bulb Light added.
-------------------------------------------------------------------
- v1.1.1-b1 [A] Dense Grit Dirt added.
[A] Ceiling Edge Light added.
[A] Iron Bulb Light added.
-------------------------------------------------------------------
- v1.1.0 [R] Release build v1.1.0. Changes:
* GUI button/slider tooltips added (1.5s delay).

View file

@ -288,6 +288,26 @@ public class ModContent
Auxiliaries.getPixeledAABB(5,0,0, 11,2,0.5)
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_floor_edge_light"));
public static final DecorBlock.DirectedWaterLoggable CEILING_EDGE_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL,
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15).notSolid(),
new AxisAlignedBB[]{
Auxiliaries.getPixeledAABB( 0,15.5,0, 16,16,2.0),
Auxiliaries.getPixeledAABB( 0,14.0,0, 16,16,0.5),
Auxiliaries.getPixeledAABB( 0,14.0,0, 1,16,2.0),
Auxiliaries.getPixeledAABB(15,14.0,0, 16,16,2.0),
}
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_ceiling_edge_light"));
public static final DecorBlock.DirectedWaterLoggable BULB_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable(
DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT,
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15).notSolid(),
new AxisAlignedBB[]{
Auxiliaries.getPixeledAABB(6.5,6.5,1, 9.5,9.5,4),
Auxiliaries.getPixeledAABB(6.0,6.0,0, 10.0,10.0,1.0)
}
)).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_bulb_light"));
public static final DecorBlock.WaterLoggable STEEL_TABLE = (DecorBlock.WaterLoggable)(new DecorBlock.WaterLoggable(
DecorBlock.CFG_CUTOUT,
Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(),
@ -702,6 +722,7 @@ public class ModContent
PASSIVE_FLUID_ACCUMULATOR,
SMALL_FLUID_FUNNEL,
DENSE_GRIT_SAND,
DENSE_GRIT_DIRT,
CLINKER_BRICK_BLOCK,
CLINKER_BRICK_SLAB,
CLINKER_BRICK_STAIRS,
@ -749,6 +770,8 @@ public class ModContent
STEEL_TABLE,
INSET_LIGHT_IRON,
FLOOR_EDGE_LIGHT_IRON,
CEILING_EDGE_LIGHT_IRON,
BULB_LIGHT_IRON,
STEEL_FLOOR_GRATING,
STEEL_MESH_FENCE,
STEEL_MESH_FENCE_GATE,
@ -769,7 +792,6 @@ public class ModContent
};
private static final Block devBlocks[] = {
DENSE_GRIT_DIRT // texture needs improvments, looks too blurry yet.
//TEST_BLOCK
};

View file

@ -11,7 +11,7 @@ displayName="Engineer's Decor"
description="Adds cosmetic blocks for the engineer's workshop, factory and home."
authors="wilechaote"
credits="BluSunrize, Damien Hazard, malte0811, et al., the Forge Smiths, the Modders of the World."
updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/develop/meta/update.json"
updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/develop/1.15/meta/update.json"
displayURL="https://github.com/stfwi/engineers-decor/"
logoFile="logo.png"

View file

@ -0,0 +1,10 @@
{
"variants": {
"facing=north": { "model": "engineersdecor:block/light/bulb_light_model" },
"facing=south": { "model": "engineersdecor:block/light/bulb_light_model", "y":180 },
"facing=west": { "model": "engineersdecor:block/light/bulb_light_model", "y":270 },
"facing=east": { "model": "engineersdecor:block/light/bulb_light_model", "y":90 },
"facing=up": { "model": "engineersdecor:block/light/bulb_light_model", "x":270 },
"facing=down": { "model": "engineersdecor:block/light/bulb_light_model", "x":90 }
}
}

View file

@ -0,0 +1,10 @@
{
"variants": {
"facing=north": { "model": "engineersdecor:block/light/ceiling_edge_light_model" },
"facing=south": { "model": "engineersdecor:block/light/ceiling_edge_light_model", "y":180 },
"facing=west": { "model": "engineersdecor:block/light/ceiling_edge_light_model", "y":270 },
"facing=east": { "model": "engineersdecor:block/light/ceiling_edge_light_model", "y":90 },
"facing=up": { "model": "engineersdecor:block/light/ceiling_edge_light_model", "x":270 },
"facing=down": { "model": "engineersdecor:block/light/ceiling_edge_light_model", "x":90 }
}
}

View file

@ -121,6 +121,10 @@
"block.engineersdecor.halfslab_sheetmetal_steel.help": "§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.",
"block.engineersdecor.halfslab_treated_wood": "Treated Wood Slice",
"block.engineersdecor.halfslab_treated_wood.help": "§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.",
"block.engineersdecor.iron_bulb_light": "Iron Bulb Light",
"block.engineersdecor.iron_bulb_light.help": "§6Small glowstone light source§r, placed on the ceiling, walls, fence posts or metal poles.",
"block.engineersdecor.iron_ceiling_edge_light": "Ceiling Edge Light",
"block.engineersdecor.iron_ceiling_edge_light.help": "§6Small glowstone light source§r, placed at the edge of a ceiling block.",
"block.engineersdecor.iron_floor_edge_light": "Inset Floor Edge Light",
"block.engineersdecor.iron_floor_edge_light.help": "§6Small glowstone light source, placed at the edge of a floor block.§r\n Useful to light up places where electrical light installations are problematic.",
"block.engineersdecor.iron_inset_light": "Inset Light",

View file

@ -121,6 +121,10 @@
"block.engineersdecor.halfslab_sheetmetal_steel.help": "§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.",
"block.engineersdecor.halfslab_treated_wood": "Часть обработанного дерева",
"block.engineersdecor.halfslab_treated_wood.help": "§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.",
"block.engineersdecor.iron_bulb_light": "Iron Bulb Light",
"block.engineersdecor.iron_bulb_light.help": "§6Small glowstone light source§r, placed on the ceiling, walls, fence posts or metal poles.",
"block.engineersdecor.iron_ceiling_edge_light": "Ceiling Edge Light",
"block.engineersdecor.iron_ceiling_edge_light.help": "§6Small glowstone light source§r, placed at the edge of a ceiling block.",
"block.engineersdecor.iron_floor_edge_light": "Встраиваемый снизу осветитель",
"block.engineersdecor.iron_floor_edge_light.help": "§6Маленький источник света, интегрируемый в нижнюю грань блока.§r\n Полезно для освещения мест, где проблематичны электрические осветительные установки.",
"block.engineersdecor.iron_inset_light": "Встраиваемый осветитель",

View file

@ -121,6 +121,10 @@
"block.engineersdecor.halfslab_sheetmetal_steel.help": "§6可垂直堆叠的切片。§r手持切片右/左击切片堆叠的顶端或底部来添加/移除切片。",
"block.engineersdecor.halfslab_treated_wood": "防腐木切片",
"block.engineersdecor.halfslab_treated_wood.help": "§6可垂直堆叠的切片。§r手持切片右/左击切片堆叠的顶端或底部来添加/移除切片。",
"block.engineersdecor.iron_bulb_light": "Iron Bulb Light",
"block.engineersdecor.iron_bulb_light.help": "§6Small glowstone light source§r, placed on the ceiling, walls, fence posts or metal poles.",
"block.engineersdecor.iron_ceiling_edge_light": "Ceiling Edge Light",
"block.engineersdecor.iron_ceiling_edge_light.help": "§6Small glowstone light source§r, placed at the edge of a ceiling block.",
"block.engineersdecor.iron_floor_edge_light": "嵌入地板边缘灯",
"block.engineersdecor.iron_floor_edge_light.help": "§6小型荧石光源置于地板方块边缘。§r\n 用于照亮电力光源难以安装的地方。",
"block.engineersdecor.iron_inset_light": "嵌入灯",

View file

@ -0,0 +1,267 @@
{
"parent": "block/block",
"textures": {
"light": "engineersdecor:block/light/lamp_glass_warm_square_texture",
"particle": "engineersdecor:block/iestyle/steel_texture",
"side": "engineersdecor:block/iestyle/steel_texture"
},
"elements": [
{
"from": [6.5, 6.5, 1],
"to": [9.5, 9.5, 4],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 11]},
"faces": {
"north": {"uv": [6.5, 6.5, 9.5, 9.5], "texture": "#light"},
"east": {"uv": [12, 6.5, 15, 9.5], "texture": "#light"},
"south": {"uv": [6.5, 6.5, 9.5, 9.5], "texture": "#light"},
"west": {"uv": [1, 6.5, 4, 9.5], "texture": "#light"},
"up": {"uv": [6.5, 1, 9.5, 4], "texture": "#light"},
"down": {"uv": [6.5, 12, 9.5, 15], "texture": "#light"}
}
},
{
"from": [7, 9.5, 1],
"to": [7.25, 9.75, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [7, 6.5, 4],
"to": [7.25, 9.5, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.75, 17]},
"faces": {
"north": {"uv": [8.75, 6.5, 9, 9.5], "texture": "#side"},
"east": {"uv": [11.75, 6.5, 12, 9.5], "texture": "#side"},
"south": {"uv": [7, 6.5, 7.25, 9.5], "texture": "#side"},
"west": {"uv": [4, 6.5, 4.25, 9.5], "texture": "#side"},
"up": {"uv": [7, 4, 7.25, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.75, 7.25, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [8.75, 6.5, 4],
"to": [9, 9.5, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [9.75, 7.75, 17]},
"faces": {
"north": {"uv": [7, 6.5, 7.25, 9.5], "texture": "#side"},
"east": {"uv": [11.75, 6.5, 12, 9.5], "texture": "#side"},
"south": {"uv": [8.75, 6.5, 9, 9.5], "texture": "#side"},
"west": {"uv": [4, 6.5, 4.25, 9.5], "texture": "#side"},
"up": {"uv": [8.75, 4, 9, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [8.75, 11.75, 9, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [9, 8.75, 4],
"to": [9.5, 9, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [10.125, 7.75, 17]},
"faces": {
"north": {"uv": [6.5, 7, 7, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [9, 7, 9.5, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [9, 4, 9.5, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [9, 11.75, 9.5, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [9, 7, 4],
"to": [9.5, 7.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [10.125, 6, 17]},
"faces": {
"north": {"uv": [6.5, 7, 7, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [9, 7, 9.5, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [9, 4, 9.5, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [9, 11.75, 9.5, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [7.25, 8.75, 4],
"to": [8.75, 9, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [9.375, 7.75, 17]},
"faces": {
"north": {"uv": [7.25, 7, 8.75, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [7.25, 7, 8.75, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [7.25, 4, 8.75, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [7.25, 11.75, 8.75, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [7.25, 7, 4],
"to": [8.75, 7.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [9.375, 6, 17]},
"faces": {
"north": {"uv": [7.25, 7, 8.75, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [7.25, 7, 8.75, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [7.25, 4, 8.75, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [7.25, 11.75, 8.75, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [6.5, 8.75, 4],
"to": [7, 9, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 7.75, 17]},
"faces": {
"north": {"uv": [9, 7, 9.5, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [6.5, 7, 7, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [6.5, 4, 7, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [6.5, 11.75, 7, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [6.5, 7, 4],
"to": [7, 7.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8.5, 6, 17]},
"faces": {
"north": {"uv": [9, 7, 9.5, 7.25], "texture": "#side"},
"east": {"uv": [11.75, 7, 12, 7.25], "texture": "#side"},
"south": {"uv": [6.5, 7, 7, 7.25], "texture": "#side"},
"west": {"uv": [4, 7, 4.25, 7.25], "texture": "#side"},
"up": {"uv": [6.5, 4, 7, 4.25], "rotation": 180, "texture": "#side"},
"down": {"uv": [6.5, 11.75, 7, 12], "rotation": 180, "texture": "#side"}
}
},
{
"from": [7, 6.25, 1],
"to": [7.25, 6.5, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4.75, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [8.75, 9.5, 1],
"to": [9, 9.75, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [9.5, 8, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [9.5, 8.75, 1],
"to": [9.75, 9, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, 7.25, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [6.25, 8.75, 1],
"to": [6.5, 9, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [7.25, 7.25, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [9.5, 7, 1],
"to": [9.75, 7.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [10.5, 5.5, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [6.25, 7, 1],
"to": [6.5, 7.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [7.25, 5.5, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [8.75, 6.25, 1],
"to": [9, 6.5, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [9.5, 4.75, 14]},
"faces": {
"north": {"uv": [8.5, 6, 9, 6.5], "texture": "#side"},
"east": {"uv": [11.625, 6, 15, 6.25], "texture": "#side"},
"south": {"uv": [7, 6, 7.5, 6.5], "texture": "#side"},
"west": {"uv": [1, 6, 4.375, 6.5], "texture": "#side"},
"up": {"uv": [7, 1, 7.5, 4.375], "rotation": 180, "texture": "#side"},
"down": {"uv": [7, 11.625, 7.5, 15], "rotation": 180, "texture": "#side"}
}
},
{
"from": [6, 6, 0],
"to": [10, 10, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]},
"faces": {
"north": {"uv": [6, 6, 10, 10], "texture": "#side"},
"east": {"uv": [15, 6, 16, 10], "texture": "#side"},
"south": {"uv": [6, 6, 10, 10], "texture": "#side"},
"west": {"uv": [0, 6, 1, 10], "texture": "#side"},
"up": {"uv": [6, 0, 10, 1], "rotation": 180, "texture": "#side"},
"down": {"uv": [6, 15, 10, 16], "rotation": 180, "texture": "#side"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [-3, -60, 0],
"translation": [-5, 0, 2.25],
"scale": [0.7, 0.7, 0.7]
},
"firstperson_righthand": {
"rotation": [5, -52, 0],
"translation": [-3, -0.75, 1.25]
},
"ground": {
"translation": [0, 1.5, 6],
"scale": [0.7, 0.7, 0.7]
},
"gui": {
"rotation": [16, 30, 0],
"translation": [3.75, -1.5, 0]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 0, -8.05]
}
}
}

View file

@ -0,0 +1,96 @@
{
"parent": "block/block",
"textures": {
"light": "engineersdecor:block/light/lamp_glass_warm_square_texture",
"particle": "engineersdecor:block/iestyle/steel_texture",
"side": "engineersdecor:block/iestyle/steel_texture"
},
"elements": [
{
"from": [1, 14, 0.75],
"to": [15, 16, 1.25],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 15, 1]},
"faces": {
"north": {"uv": [1, 0, 15, 2], "texture": "#light"},
"east": {"uv": [14.75, 0, 15.25, 2], "texture": "#light"},
"south": {"uv": [1, 8, 15, 10], "texture": "#light"},
"west": {"uv": [0.75, 0, 1.25, 2], "texture": "#light"},
"up": {"uv": [1, 0.75, 15, 1.25], "texture": "#light"},
"down": {"uv": [1, 14.75, 15, 15.25], "texture": "#light"}
}
},
{
"from": [15, 14, 0],
"to": [16, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [15.5, 15, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#side"},
"east": {"uv": [14, 0, 16, 2], "texture": "#side"},
"south": {"uv": [15, 0, 16, 2], "texture": "#side"},
"west": {"uv": [0, 0, 2, 2], "texture": "#side"},
"up": {"uv": [15, 0, 16, 2], "texture": "#side"},
"down": {"uv": [15, 14, 16, 16], "texture": "#side"}
}
},
{
"from": [0, 14, 0],
"to": [1, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [0.5, 15, 1]},
"faces": {
"north": {"uv": [15, 0, 16, 2], "texture": "#side"},
"east": {"uv": [14, 0, 16, 2], "texture": "#side"},
"south": {"uv": [0, 0, 1, 2], "texture": "#side"},
"west": {"uv": [0, 0, 2, 2], "texture": "#side"},
"up": {"uv": [0, 0, 1, 2], "texture": "#side"},
"down": {"uv": [0, 14, 1, 16], "texture": "#side"}
}
},
{
"from": [1, 15.5, 0],
"to": [15, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [1.5, 16.5, 1]},
"faces": {
"north": {"uv": [1, 0, 15, 0.5], "texture": "#side"},
"south": {"uv": [1, 0, 15, 0.5], "texture": "#side"},
"up": {"uv": [1, 0, 15, 2], "texture": "#side"},
"down": {"uv": [1, 14, 15, 16], "texture": "#side"}
}
},
{
"from": [1, 14, 0],
"to": [15, 15.5, 0.5],
"rotation": {"angle": 0, "axis": "y", "origin": [1.5, 16, 1]},
"faces": {
"north": {"uv": [1, 0.5, 15, 2], "texture": "#side"},
"south": {"uv": [1, 0.5, 15, 2], "texture": "#side"},
"up": {"uv": [1, 0, 15, 0.5], "texture": "#side"},
"down": {"uv": [1, 15.5, 15, 16], "texture": "#side"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [-15, -180, -55],
"translation": [-8.25, 0, -2.5],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_righthand": {
"rotation": [-3, -72, -25],
"translation": [-5, -0.75, 3.75],
"scale": [0.6, 0.6, 0.6]
},
"ground": {
"translation": [0, -1.5, 2.75],
"scale": [0.4, 0.4, 0.4]
},
"gui": {
"rotation": [30, 30, 0],
"translation": [2, -2.75, 0],
"scale": [0.7, 0.7, 0.7]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 0, -7.8]
}
}
}

View file

@ -0,0 +1 @@
{ "parent": "engineersdecor:block/light/bulb_light_model" }

View file

@ -0,0 +1 @@
{ "parent": "engineersdecor:block/light/ceiling_edge_light_model" }

View file

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "iron_bulb_light_dlt",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:copy_name",
"source": "block_entity"
}
],
"name": "engineersdecor:iron_bulb_light"
}
]
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"name": "iron_ceiling_edge_light_dlt",
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:copy_name",
"source": "block_entity"
}
],
"name": "engineersdecor:iron_ceiling_edge_light"
}
]
}
]
}

View file

@ -0,0 +1,16 @@
{
"conditions": [
{
"type": "engineersdecor:optional",
"result": "engineersdecor:iron_bulb_light",
"required": ["engineersdecor:iron_ceiling_edge_light"]
}
],
"type": "minecraft:crafting_shapeless",
"ingredients": [
{ "item": "engineersdecor:iron_ceiling_edge_light" }
],
"result": {
"item": "engineersdecor:iron_bulb_light"
}
}

View file

@ -0,0 +1,16 @@
{
"conditions": [
{
"type": "engineersdecor:optional",
"result": "engineersdecor:iron_ceiling_edge_light",
"required": ["engineersdecor:iron_floor_edge_light"]
}
],
"type": "minecraft:crafting_shapeless",
"ingredients": [
{ "item": "engineersdecor:iron_floor_edge_light" }
],
"result": {
"item": "engineersdecor:iron_ceiling_edge_light"
}
}

View file

@ -3,12 +3,12 @@
{
"type": "engineersdecor:optional",
"result": "engineersdecor:iron_inset_light",
"required": ["engineersdecor:iron_floor_edge_light"]
"required": ["engineersdecor:iron_bulb_light"]
}
],
"type": "minecraft:crafting_shapeless",
"ingredients": [
{ "item": "engineersdecor:iron_floor_edge_light" }
{ "item": "engineersdecor:iron_bulb_light" }
],
"result": {
"item": "engineersdecor:iron_inset_light"

14
1.16/meta/update.json Normal file
View file

@ -0,0 +1,14 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.16.1": {
"1.1.1-b4": "[F] Fixed Fluid Barrel tooltip text duplicate.\n[F] Fixed IE hard-dependency opt-out.\n[M] Side Table model and shape refined.\n[A] Dense Grit Dirt added.\n[M] Wood textures slightly darker, obsolete textures removed.",
"1.1.1-b3": "[A] Ceiling Edge Light added.\n[A] Iron Bulb Light added.\n[A] Iron Hatch added.\n[A] Fluid Barrel added.\n[M] Gas Concrete texture made slightly darker.",
"1.1.1-b2": "[M] Nerfed Solar Panel output default config value from 45RF/t to 40RF/t.\n[F] Fixed conditional IE tag dependency of alternative/standalone recipes.",
"1.1.1-b1": "[A] JEI integration ported.\n[M] Logical server side config moved from COMMON to SERVER (world/serverconfig).\n[F] Labeled Crate recipe condition for missing Immersive Engineering fixed.\n[F] Mouse scrolling works for Labeled Crate and TW Crafting Table.",
"1.1.1-a1": "[A] Initial port."
},
"promos": {
"1.16.1-recommended": "1.1.1-b4",
"1.16.1-latest": "1.1.1-b4"
}
}

View file

@ -10,7 +10,7 @@
c.gradle_property_version_forge = function() { return "version_forge"; }
c.project_download_inet_page = function() { return "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/"; }
c.options = {
// without_ref_repository_check: true
without_ref_repository_check: true
};
c.languages = {
"en_us": { code:"en_us", name:"English", region:"United States" },

View file

@ -324,6 +324,7 @@
var latest_beta = "";
for(var ver in history) { latest_beta=ver; break; }
for(var ver in history) if(ver.search(/(rc|b|a)/) < 0) { latest_release=ver; break; }
if(latest_release=="") latest_release = latest_beta;
var update_json = {}
update_json["homepage"] = constants.project_download_inet_page();
update_json[mc_version] = history;

View file

@ -1,14 +1,16 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"promos": {
"1.12.2-recommended": "1.1.0",
"1.12.2-latest": "1.1.0",
"1.12.2-recommended": "1.1.1",
"1.12.2-latest": "1.1.1",
"1.14.4-recommended": "1.1.0",
"1.14.4-latest": "1.1.0",
"1.15.2-recommended": "1.1.0",
"1.15.2-latest": "1.1.0"
"1.15.2-recommended": "1.1.1",
"1.15.2-latest": "1.1.1"
},
"1.12.2": {
"1.1.1": "[R] Maintenance release.\n[F] Fixed Snow laying on Steel Mesh Fence (issue #107, thx TheTinyPebble).",
"1.1.1-b1": "[F] Fixed java related startup problem (issue #103, thx madmax3004, erebus42, StormbringerGTX, teagan75).",
"1.1.0": "[R] Maintenance Release build v1.1.0. Changes: * Compatibility fixes. * E-Furnace speed selection bug fixed. * Block Placer improvements. ~ v1.1.0-b3 [/] Version skipped for 1.12.2.",
"1.1.0-b2": "[F] Block Placer defers placements if collidable entities are in the way (issue #98, thx DrakoAlcarus).\n[F] Added Block verification during TE ticking in case devices are moved (issue #101, thx D0CTOR-ZED).",
"1.1.0-b1": "[F] Fixed Electrical Furnace speed sanitizing bug (issue #97, thx therobotmenace).\n[M] Changed Labeled Crate Nesting to circumvent server crashing in combination with the Sponge mod.",
@ -157,6 +159,8 @@
"1.0.7-b3": "[A] Initial 1.14.2 port of decorative blocks."
},
"1.15.2": {
"1.1.1": "[R] Release build v1.1.1. Changes: * Dense Grit Dirt added. * Ceiling Edge Light added. * Iron Bulb Light added.",
"1.1.1-b1": "[A] Dense Grit Dirt added.\n[A] Ceiling Edge Light added.\n[A] Iron Bulb Light added.",
"1.1.0": "[R] Release build v1.1.0. Changes: * GUI button/slider tooltips added (1.5s delay). * IE Sheet Metal Slab Slices added. * Config options extended/updated. * Block Placer improvements. * Block Breaker drop trajectory improved. * Dense Grit Sand textures enhanced. * Pipe Valve redstone connector display fixes. * Compatibility bug fixes.\n[F] Block Placer also defers placements if falling item stacks are in front of it (thx Cid).",
"1.1.0-b3": "[!] Forge update, requires Forge 1.15.2-31.2.20.\n[F] Block Placer defers placements if collidable entities are in the way (issue #98, thx DrakoAlcarus).\n[M] Block Breaker item drop trajectories have lower speed (fall slightly straighter down).\n[M] Pipe Valves redstone connector also shown if the adjacent block can connect redstone in general.\n[F] Added Block verification during TE ticking in case devices are moved (issue #101, thx D0CTOR-ZED).",
"1.1.0-b2": "[A] Added tooltips for buttons/settings in device GUIs (1.5s display delay).\n[U] Updated Forge/Mappings.",