v1.1.0 release merge.
This commit is contained in:
commit
856204990b
42 changed files with 791 additions and 167 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()
|
||||
{}
|
||||
|
||||
|
|
|
@ -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); }
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
{}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
}
|
|
@ -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 }
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -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": "Встраиваемый осветитель",
|
||||
|
|
|
@ -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": "嵌入灯",
|
||||
|
|
|
@ -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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{ "parent": "engineersdecor:block/light/bulb_light_model" }
|
|
@ -0,0 +1 @@
|
|||
{ "parent": "engineersdecor:block/light/ceiling_edge_light_model" }
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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
14
1.16/meta/update.json
Normal 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"
|
||||
}
|
||||
}
|
|
@ -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" },
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.",
|
||||
|
|
Loading…
Reference in a new issue