v1.1.0-b1 commit: E-Furnace fixed (issue #97). 1.14/1.15: Sheet Metal Slab Slices added, Config handling unified, Dense Grid Sand textures tweaked.
This commit is contained in:
parent
2805e59d26
commit
7cf182652b
261 changed files with 1161 additions and 902 deletions
|
@ -12,23 +12,20 @@ MOD_JAR=$(filter-out %-sources.jar,$(wildcard build/libs/${MOD_JAR_PREFIX}*.jar)
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
GRADLE=gradlew.bat --no-daemon
|
GRADLE=gradlew.bat --no-daemon
|
||||||
GRADLE_STOP=gradlew.bat --stop
|
GRADLE_STOP=gradlew.bat --stop
|
||||||
INSTALL_DIR=$(realpath ${APPDATA}/.minecraft)
|
|
||||||
SERVER_INSTALL_DIR=$(realpath ${APPDATA}/minecraft-server-forge-1.12.2-14.23.5.2768)
|
|
||||||
DJS=djs
|
DJS=djs
|
||||||
else
|
else
|
||||||
GRADLE=./gradlew --no-daemon
|
GRADLE=./gradlew --no-daemon
|
||||||
GRADLE_STOP=./gradlew --stop
|
GRADLE_STOP=./gradlew --stop
|
||||||
INSTALL_DIR=~/.minecraft
|
|
||||||
SERVER_INSTALL_DIR=~/.minecraft-server-forge-1.12.2-14.23.5.2768
|
|
||||||
DJS=djs
|
DJS=djs
|
||||||
endif
|
endif
|
||||||
|
TASK=$(DJS) ../meta/lib/tasks.js
|
||||||
|
|
||||||
wildcardr=$(foreach d,$(wildcard $1*),$(call wildcardr,$d/,$2) $(filter $(subst *,%,$2),$d))
|
wildcardr=$(foreach d,$(wildcard $1*),$(call wildcardr,$d/,$2) $(filter $(subst *,%,$2),$d))
|
||||||
|
|
||||||
#
|
#
|
||||||
# Targets
|
# Targets
|
||||||
#
|
#
|
||||||
.PHONY: default mod init clean clean-all mrproper all run install sanatize dist-check dist dist-files start-server port-languages
|
.PHONY: default mod init clean clean-all mrproper all run install sanitize dist-check dist dist-files start-server
|
||||||
|
|
||||||
default: mod
|
default: mod
|
||||||
|
|
||||||
|
@ -65,42 +62,28 @@ run:
|
||||||
@echo "[1.12] Running client ..."
|
@echo "[1.12] Running client ..."
|
||||||
@$(GRADLE) runClient
|
@$(GRADLE) runClient
|
||||||
|
|
||||||
install: $(MOD_JAR) |
|
sanitize:
|
||||||
@sleep 2s
|
|
||||||
@if [ ! -d "$(INSTALL_DIR)" ]; then echo "Cannot find installation minecraft directory."; false; fi
|
|
||||||
@echo "[1.12] Installing '$(MOD_JAR)' to '$(INSTALL_DIR)/mods' ..."
|
|
||||||
@[ -d "$(INSTALL_DIR)/mods" ] || mkdir "$(INSTALL_DIR)/mods"
|
|
||||||
@rm -f "$(INSTALL_DIR)/mods/${MOD_JAR_PREFIX}"*.jar
|
|
||||||
@cp -f "$(MOD_JAR)" "$(INSTALL_DIR)/mods/"
|
|
||||||
@echo "[1.12] Installing '$(MOD_JAR)' to '$(SERVER_INSTALL_DIR)/mods' ..."
|
|
||||||
@rm -f "$(SERVER_INSTALL_DIR)/mods/${MOD_JAR_PREFIX}"*.jar
|
|
||||||
@[ -d "$(SERVER_INSTALL_DIR)/mods" ] && cp -f "$(MOD_JAR)" "$(SERVER_INSTALL_DIR)/mods/"
|
|
||||||
|
|
||||||
start-server:
|
|
||||||
-@make -s install
|
|
||||||
@echo "[1.12] Starting local dedicated server ..."
|
|
||||||
@cd "$(SERVER_INSTALL_DIR)" && java -jar forge-1.12.2-14.23.5.2768-universal.jar nogui
|
|
||||||
|
|
||||||
sanatize:
|
|
||||||
@echo "[1.12] Running sanatising tasks ..."
|
@echo "[1.12] Running sanatising tasks ..."
|
||||||
@djs tasks.js sanatize
|
@$(TASK) sanitize
|
||||||
@djs tasks.js sync-languages
|
@$(TASK) sync-languages
|
||||||
@djs tasks.js version-check
|
@$(TASK) version-check
|
||||||
@djs tasks.js update-json
|
@$(TASK) update-json
|
||||||
@git status -s .
|
@git status -s .
|
||||||
|
|
||||||
|
install: $(MOD_JAR) |
|
||||||
|
@$(TASK) install
|
||||||
|
|
||||||
|
start-server: install
|
||||||
|
@$(TASK) start-server
|
||||||
|
|
||||||
dist-check:
|
dist-check:
|
||||||
@echo "[1.12] Running dist checks ..."
|
@echo "[1.12] Running dist checks ..."
|
||||||
@djs tasks.js dist-check
|
@$(TASK) dist-check
|
||||||
|
|
||||||
dist-files: clean-all init mod
|
dist-files: clean-all init mod
|
||||||
@echo "[1.12] Distribution files ..."
|
@echo "[1.12] Distribution files ..."
|
||||||
@mkdir -p dist
|
@mkdir -p dist
|
||||||
@cp build/libs/$(MOD_JAR_PREFIX)* dist/
|
@cp build/libs/$(MOD_JAR_PREFIX)* dist/
|
||||||
@djs tasks.js dist
|
@$(TASK) dist
|
||||||
|
|
||||||
dist: sanatize dist-check dist-files
|
dist: sanitize dist-check dist-files
|
||||||
|
|
||||||
port-languages:
|
|
||||||
@echo "[1.12] Porting language files to 1.14 ..."
|
|
||||||
@djs tasks.js port-languages
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||||
"1.12.2": {
|
"1.12.2": {
|
||||||
|
"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.",
|
||||||
"1.0.20": "[R] Release based on v1.0.20-b6. Release-to-release changes: * Manual back ported. * Steel Mesh Fence Gate back ported. * E-Furnace speed selection switch back ported. * Labeled Crate back ported. * Minor bug fixes, compatibility changes.",
|
"1.0.20": "[R] Release based on v1.0.20-b6. Release-to-release changes: * Manual back ported. * Steel Mesh Fence Gate back ported. * E-Furnace speed selection switch back ported. * Labeled Crate back ported. * Minor bug fixes, compatibility changes.",
|
||||||
"1.0.20-b6": "[F] Implemented compat related to issue #91.",
|
"1.0.20-b6": "[F] Implemented compat related to issue #91.",
|
||||||
"1.0.20-b5": "[A] Back-ported Patchouli based Manual (you need to install Vazkii_'s Patchouli, too).\n[A] Back-ported Steel Mesh Fence Gate.\n[M] Minor back-porting compatibility refractoring.",
|
"1.0.20-b5": "[A] Back-ported Patchouli based Manual (you need to install Vazkii_'s Patchouli, too).\n[A] Back-ported Steel Mesh Fence Gate.\n[M] Minor back-porting compatibility refractoring.",
|
||||||
|
@ -89,6 +90,6 @@
|
||||||
},
|
},
|
||||||
"promos": {
|
"promos": {
|
||||||
"1.12.2-recommended": "1.0.20",
|
"1.12.2-recommended": "1.0.20",
|
||||||
"1.12.2-latest": "1.0.20"
|
"1.12.2-latest": "1.1.0-b1"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,7 +10,9 @@ Mod sources for Minecraft version 1.12.2.
|
||||||
----
|
----
|
||||||
## Version history
|
## Version history
|
||||||
|
|
||||||
~ v1.1.0-b1 [M]
|
- v1.1.0-b1 [F] Fixed Electrical Furnace speed sanitizing bug (issue #97, thx therobotmenace).
|
||||||
|
[M] Changed Labeled Crate Nesting to circumvent server crashing
|
||||||
|
in combination with the Sponge mod.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
- v1.0.20 [R] Release based on v1.0.20-b6. Release-to-release changes:
|
- v1.0.20 [R] Release based on v1.0.20-b6. Release-to-release changes:
|
||||||
|
|
|
@ -212,7 +212,7 @@ public class ModContent
|
||||||
ModAuxiliaries.getPixeledAABB(0,0,0, 16,16,16)
|
ModAuxiliaries.getPixeledAABB(0,0,0, 16,16,16)
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final BlockDecorLabeledCrate.DecorLabeledCrateBlock LABELED_CRATE = new BlockDecorLabeledCrate.DecorLabeledCrateBlock(
|
public static final BlockDecorLabeledCrate LABELED_CRATE = new BlockDecorLabeledCrate(
|
||||||
"labeled_crate",
|
"labeled_crate",
|
||||||
BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT,
|
BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT,
|
||||||
Material.WOOD, 0.5f, 128f, SoundType.METAL,
|
Material.WOOD, 0.5f, 128f, SoundType.METAL,
|
||||||
|
|
|
@ -9,10 +9,8 @@
|
||||||
package wile.engineersdecor.blocks;
|
package wile.engineersdecor.blocks;
|
||||||
|
|
||||||
|
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import wile.engineersdecor.ModContent;
|
import wile.engineersdecor.ModContent;
|
||||||
import wile.engineersdecor.ModEngineersDecor;
|
import wile.engineersdecor.ModEngineersDecor;
|
||||||
|
|
||||||
import net.minecraft.block.SoundType;
|
import net.minecraft.block.SoundType;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -32,6 +30,7 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.*;
|
import net.minecraft.util.*;
|
||||||
import net.minecraft.stats.StatList;
|
import net.minecraft.stats.StatList;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
@ -316,7 +315,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
|
||||||
public static final int HEAT_INCREMENT = 20;
|
public static final int HEAT_INCREMENT = 20;
|
||||||
public static final int MAX_ENERGY_TRANSFER = 256;
|
public static final int MAX_ENERGY_TRANSFER = 256;
|
||||||
public static final int MAX_ENERGY_BUFFER = 32000;
|
public static final int MAX_ENERGY_BUFFER = 32000;
|
||||||
public static final int MAX_SPEED_SETTING = 2;
|
public static final int MAX_SPEED_SETTING = 3;
|
||||||
public static final int NUM_OF_SLOTS = 7;
|
public static final int NUM_OF_SLOTS = 7;
|
||||||
public static final int SMELTING_INPUT_SLOT_NO = 0;
|
public static final int SMELTING_INPUT_SLOT_NO = 0;
|
||||||
public static final int SMELTING_AUX_SLOT_NO = 1;
|
public static final int SMELTING_AUX_SLOT_NO = 1;
|
||||||
|
@ -382,7 +381,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
|
||||||
proc_time_needed_ = compound.getInteger("CookTimeTotal");
|
proc_time_needed_ = compound.getInteger("CookTimeTotal");
|
||||||
energy_stored_ = compound.getInteger("Energy");
|
energy_stored_ = compound.getInteger("Energy");
|
||||||
speed_ = compound.getInteger("SpeedSetting");
|
speed_ = compound.getInteger("SpeedSetting");
|
||||||
speed_ = (speed_ < 0) ? (1) : ((speed_>3) ? 3 : speed_);
|
speed_ = (speed_ < 0) ? (1) : ((speed_>MAX_SPEED_SETTING) ? MAX_SPEED_SETTING : speed_);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void writenbt(NBTTagCompound compound)
|
protected void writenbt(NBTTagCompound compound)
|
||||||
|
@ -391,7 +390,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
|
||||||
compound.setInteger("CookTime", MathHelper.clamp(proc_time_elapsed_, 0, MAX_BURNTIME));
|
compound.setInteger("CookTime", MathHelper.clamp(proc_time_elapsed_, 0, MAX_BURNTIME));
|
||||||
compound.setInteger("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 0, MAX_BURNTIME));
|
compound.setInteger("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 0, MAX_BURNTIME));
|
||||||
compound.setInteger("Energy", MathHelper.clamp(energy_stored_,0 , MAX_ENERGY_BUFFER));
|
compound.setInteger("Energy", MathHelper.clamp(energy_stored_,0 , MAX_ENERGY_BUFFER));
|
||||||
compound.setInteger("SpeedSetting", MathHelper.clamp(speed_, -1, MAX_SPEED_SETTING));
|
compound.setInteger("SpeedSetting", MathHelper.clamp(speed_, 0, MAX_SPEED_SETTING));
|
||||||
ItemStackHelper.saveAllItems(compound, stacks_);
|
ItemStackHelper.saveAllItems(compound, stacks_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,7 +654,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
|
||||||
@Override
|
@Override
|
||||||
public void onClientPacketReceived(EntityPlayer player, NBTTagCompound nbt)
|
public void onClientPacketReceived(EntityPlayer player, NBTTagCompound nbt)
|
||||||
{
|
{
|
||||||
if(nbt.hasKey("speed")) speed_ = MathHelper.clamp(nbt.getInteger("speed"), 0, 3);
|
if(nbt.hasKey("speed")) speed_ = MathHelper.clamp(nbt.getInteger("speed"), 0, MAX_SPEED_SETTING);
|
||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,7 +760,7 @@ public class BlockDecorFurnaceElectrical extends BlockDecorFurnace
|
||||||
}
|
}
|
||||||
final ItemStack last_inp_stack = current_smelting_input_stack_;
|
final ItemStack last_inp_stack = current_smelting_input_stack_;
|
||||||
current_smelting_input_stack_ = stacks_.get(SMELTING_INPUT_SLOT_NO);
|
current_smelting_input_stack_ = stacks_.get(SMELTING_INPUT_SLOT_NO);
|
||||||
if((!current_smelting_input_stack_.isEmpty()) && (enabled_) && (speed_>0) && (speed_<4)) {
|
if((!current_smelting_input_stack_.isEmpty()) && (enabled_) && (speed_>0) && (speed_<=MAX_SPEED_SETTING)) {
|
||||||
if(!current_smelting_input_stack_.isItemEqual(current_smelting_input_stack_)) {
|
if(!current_smelting_input_stack_.isItemEqual(current_smelting_input_stack_)) {
|
||||||
proc_time_elapsed_ = 0;
|
proc_time_elapsed_ = 0;
|
||||||
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
|
proc_time_needed_ = getCookTime(current_smelting_input_stack_);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
*/
|
*/
|
||||||
package wile.engineersdecor.blocks;
|
package wile.engineersdecor.blocks;
|
||||||
|
|
||||||
|
import wile.engineersdecor.ModEngineersDecor;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.SoundType;
|
import net.minecraft.block.SoundType;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
@ -40,13 +41,12 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import wile.engineersdecor.ModEngineersDecor;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
|
||||||
public class BlockDecorLabeledCrate
|
public class BlockDecorLabeledCrate extends BlockDecorDirectedHorizontal
|
||||||
{
|
{
|
||||||
public static void on_config(int stack_limit)
|
public static void on_config(int stack_limit)
|
||||||
{
|
{
|
||||||
|
@ -56,9 +56,7 @@ public class BlockDecorLabeledCrate
|
||||||
// Block
|
// Block
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public static class DecorLabeledCrateBlock extends BlockDecorDirectedHorizontal
|
public BlockDecorLabeledCrate(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
|
||||||
{
|
|
||||||
public DecorLabeledCrateBlock(@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); }
|
{ super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -144,6 +142,43 @@ public class BlockDecorLabeledCrate
|
||||||
public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos)
|
public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos)
|
||||||
{ return Container.calcRedstone(world.getTileEntity(pos)); }
|
{ return Container.calcRedstone(world.getTileEntity(pos)); }
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
// GUI
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
private static class BGui extends GuiContainer
|
||||||
|
{
|
||||||
|
private final LabeledCrateTileEntity te;
|
||||||
|
|
||||||
|
public BGui(InventoryPlayer playerInventory, World world, BlockPos pos, LabeledCrateTileEntity te)
|
||||||
|
{
|
||||||
|
super(new BContainer(playerInventory, world, pos, te));
|
||||||
|
this.te = te;
|
||||||
|
xSize = 213;
|
||||||
|
ySize = 206;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui()
|
||||||
|
{ super.initGui(); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawScreen(int mouseX, int mouseY, float partialTicks)
|
||||||
|
{
|
||||||
|
drawDefaultBackground();
|
||||||
|
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||||
|
renderHoveredToolTip(mouseX, mouseY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
|
||||||
|
{
|
||||||
|
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
mc.getTextureManager().bindTexture(new ResourceLocation(ModEngineersDecor.MODID, "textures/gui/labeled_crate_gui.png"));
|
||||||
|
final int x0=guiLeft, y0=guiTop, w=xSize, h=ySize;
|
||||||
|
drawTexturedModalRect(x0, y0, 0, 0, w, h);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -184,7 +219,7 @@ public class BlockDecorLabeledCrate
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
||||||
{ return (os.getBlock()!=ns.getBlock())||(!(ns.getBlock() instanceof DecorLabeledCrateBlock));}
|
{ return (os.getBlock()!=ns.getBlock())||(!(ns.getBlock() instanceof BlockDecorLabeledCrate));}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound compound)
|
public void readFromNBT(NBTTagCompound compound)
|
||||||
|
@ -445,45 +480,6 @@ public class BlockDecorLabeledCrate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
|
||||||
// GUI
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
private static class BGui extends GuiContainer
|
|
||||||
{
|
|
||||||
private final LabeledCrateTileEntity te;
|
|
||||||
|
|
||||||
public BGui(InventoryPlayer playerInventory, World world, BlockPos pos, LabeledCrateTileEntity te)
|
|
||||||
{
|
|
||||||
super(new BContainer(playerInventory, world, pos, te));
|
|
||||||
this.te = te;
|
|
||||||
xSize = 213;
|
|
||||||
ySize = 206;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void initGui()
|
|
||||||
{ super.initGui(); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void drawScreen(int mouseX, int mouseY, float partialTicks)
|
|
||||||
{
|
|
||||||
drawDefaultBackground();
|
|
||||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
|
||||||
renderHoveredToolTip(mouseX, mouseY);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
|
|
||||||
{
|
|
||||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
mc.getTextureManager().bindTexture(new ResourceLocation(ModEngineersDecor.MODID, "textures/gui/labeled_crate_gui.png"));
|
|
||||||
final int x0=guiLeft, y0=guiTop, w=xSize, h=ySize;
|
|
||||||
drawTexturedModalRect(x0, y0, 0, 0, w, h);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
// Container
|
// Container
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -542,7 +538,7 @@ public class BlockDecorLabeledCrate
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player)
|
public boolean canInteractWith(EntityPlayer player)
|
||||||
{ return (world.getBlockState(pos).getBlock() instanceof DecorLabeledCrateBlock) && (player.getDistanceSq(pos) <= 64); }
|
{ return (world.getBlockState(pos).getBlock() instanceof BlockDecorLabeledCrate) && (player.getDistanceSq(pos) <= 64); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canMergeSlot(ItemStack stack, Slot slot)
|
public boolean canMergeSlot(ItemStack stack, Slot slot)
|
||||||
|
|
|
@ -28,7 +28,6 @@ import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import wile.engineersdecor.blocks.BlockDecorLabeledCrate;
|
import wile.engineersdecor.blocks.BlockDecorLabeledCrate;
|
||||||
import wile.engineersdecor.blocks.BlockDecorLabeledCrate.DecorLabeledCrateBlock;
|
|
||||||
import wile.engineersdecor.blocks.BlockDecorTest;
|
import wile.engineersdecor.blocks.BlockDecorTest;
|
||||||
|
|
||||||
public class ModTesrs
|
public class ModTesrs
|
||||||
|
@ -114,7 +113,7 @@ public class ModTesrs
|
||||||
try {
|
try {
|
||||||
final ItemStack stack = te.getItemFrameStack();
|
final ItemStack stack = te.getItemFrameStack();
|
||||||
if(stack.isEmpty()) return;
|
if(stack.isEmpty()) return;
|
||||||
final int di = MathHelper.clamp(te.getWorld().getBlockState(te.getPos()).getValue(DecorLabeledCrateBlock.FACING).getHorizontalIndex(), 0, 3);
|
final int di = MathHelper.clamp(te.getWorld().getBlockState(te.getPos()).getValue(BlockDecorLabeledCrate.FACING).getHorizontalIndex(), 0, 3);
|
||||||
double ox = tr[di][0], oy = tr[di][1], oz = tr[di][2], ry = tr[di][3];
|
double ox = tr[di][0], oy = tr[di][1], oz = tr[di][2], ry = tr[di][3];
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
GlStateManager.disableLighting();
|
GlStateManager.disableLighting();
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/usr/bin/djs
|
|
||||||
// Note for reviewers/clones: This file is a auxiliary script for my setup. It's not needed to build the mod.
|
|
||||||
"use strict";
|
|
||||||
const constants = include("../meta/lib/constants.js")();
|
|
||||||
const libtask = include("../meta/lib/libtask.js")(constants);
|
|
||||||
const liblang = include("../meta/lib/liblang.1.12.js")(constants);
|
|
||||||
const liblang13 = include("../meta/lib/liblang.1.13.js")(constants);
|
|
||||||
const liblang14 = include("../meta/lib/liblang.1.13.js")(constants);
|
|
||||||
var tasks = {};
|
|
||||||
|
|
||||||
tasks["sync-languages"] = function() {
|
|
||||||
liblang.sync_languages();
|
|
||||||
};
|
|
||||||
|
|
||||||
tasks["port-languages"] = function() {
|
|
||||||
fs.find("src/main/resources/assets/"+ constants.mod_registry_name() +"/lang", '*.lang', function(path){
|
|
||||||
const unified = liblang.load(path);
|
|
||||||
path = path.replace(/\.lang$/,"");
|
|
||||||
liblang13.save("../1.13/"+path+".json", unified);
|
|
||||||
liblang14.save("../1.14/"+path+".json", unified);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
libtask.run(tasks, sys.args);
|
|
|
@ -18,13 +18,14 @@ GRADLE=./gradlew --no-daemon
|
||||||
GRADLE_STOP=./gradlew --stop
|
GRADLE_STOP=./gradlew --stop
|
||||||
DJS=djs
|
DJS=djs
|
||||||
endif
|
endif
|
||||||
|
TASK=$(DJS) ../meta/lib/tasks.js
|
||||||
|
|
||||||
wildcardr=$(foreach d,$(wildcard $1*),$(call wildcardr,$d/,$2) $(filter $(subst *,%,$2),$d))
|
wildcardr=$(foreach d,$(wildcard $1*),$(call wildcardr,$d/,$2) $(filter $(subst *,%,$2),$d))
|
||||||
|
|
||||||
#
|
#
|
||||||
# Targets
|
# Targets
|
||||||
#
|
#
|
||||||
.PHONY: default mod data init clean clean-all mrproper all run install sanatize dist-check dist start-server assets
|
.PHONY: default mod data init clean clean-all mrproper all run install sanitize dist-check dist start-server assets
|
||||||
|
|
||||||
default: mod
|
default: mod
|
||||||
|
|
||||||
|
@ -34,9 +35,13 @@ mod:
|
||||||
@echo "[1.14] Building mod using gradle ..."
|
@echo "[1.14] Building mod using gradle ..."
|
||||||
@$(GRADLE) build $(GRADLE_OPTS)
|
@$(GRADLE) build $(GRADLE_OPTS)
|
||||||
|
|
||||||
|
assets:
|
||||||
|
@echo "[1.14] Running asset generators ..."
|
||||||
|
@$(TASK) assets
|
||||||
|
|
||||||
data:
|
data:
|
||||||
@echo "[1.14] Running data generators ..."
|
@echo "[1.14] Running data generators ..."
|
||||||
@djs tasks.js datagen
|
@$(TASK) datagen
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo "[1.14] Cleaning ..."
|
@echo "[1.14] Cleaning ..."
|
||||||
|
@ -64,28 +69,28 @@ init:
|
||||||
@echo "[1.14] Initialising eclipse workspace using gradle ..."
|
@echo "[1.14] Initialising eclipse workspace using gradle ..."
|
||||||
@$(GRADLE) eclipse
|
@$(GRADLE) eclipse
|
||||||
|
|
||||||
sanatize:
|
sanitize:
|
||||||
@echo "[1.14] Running sanatising tasks ..."
|
@echo "[1.14] Running sanatising tasks ..."
|
||||||
@djs tasks.js sanatize
|
@$(TASK) sanitize
|
||||||
@djs tasks.js sync-languages
|
@$(TASK) sync-languages
|
||||||
@djs tasks.js version-check
|
@$(TASK) version-check
|
||||||
@djs tasks.js update-json
|
@$(TASK) update-json
|
||||||
@git status -s .
|
@git status -s .
|
||||||
|
|
||||||
|
install: $(MOD_JAR) |
|
||||||
|
@$(TASK) install
|
||||||
|
|
||||||
|
start-server: install
|
||||||
|
@$(TASK) start-server
|
||||||
|
|
||||||
dist-check:
|
dist-check:
|
||||||
@echo "[1.14] Running dist checks ..."
|
@echo "[1.14] Running dist checks ..."
|
||||||
@djs tasks.js dist-check
|
@$(TASK) dist-check
|
||||||
|
|
||||||
dist-files: clean-all init data mod
|
dist-files: clean-all init data mod
|
||||||
@echo "[1.14] Distribution files ..."
|
@echo "[1.14] Distribution files ..."
|
||||||
@mkdir -p dist
|
@mkdir -p dist
|
||||||
@cp build/libs/$(MOD_JAR_PREFIX)* dist/
|
@cp build/libs/$(MOD_JAR_PREFIX)* dist/
|
||||||
@djs tasks.js dist
|
@$(TASK) dist
|
||||||
|
|
||||||
dist: sanatize dist-check dist-files
|
dist: sanitize dist-check dist-files
|
||||||
|
|
||||||
assets:
|
|
||||||
@echo "[1.14] Running asset generators ..."
|
|
||||||
@djs tasks.js create-slab-assets
|
|
||||||
@djs tasks.js create-half-slab-assets
|
|
||||||
@djs tasks.js assets
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||||
"1.14.4": {
|
"1.14.4": {
|
||||||
|
"1.1.0-b1": "[F] Fixed Electrical Furnace speed sanitizing bug (issue #97, thx therobotmenace).\n[A] Sheet Metal Slab Slices added (only available if IE is installed).\n[M] Config options extended/updated.\n[M] Dense Grit Sand textures altered to get slightly more visible structure from distance.",
|
||||||
"1.0.20-b7": "[A] Dense Grit Sand added.\n[!] Variant Slab compatibility fix. *This may alter placed slabs of this mod, data fixers don't work yet unfortunately*.",
|
"1.0.20-b7": "[A] Dense Grit Sand added.\n[!] Variant Slab compatibility fix. *This may alter placed slabs of this mod, data fixers don't work yet unfortunately*.",
|
||||||
"1.0.20-b6": "[M] Slab Slice placement improved.\n[M] Quite some naming/refractoring under the hood.",
|
"1.0.20-b6": "[M] Slab Slice placement improved.\n[M] Quite some naming/refractoring under the hood.",
|
||||||
"1.0.20-b5": "[A] Electrical Furnace can draw in smelting input items from an adjacent inventory when a Hopper is placed in the auxiliary slot.\n[M] Wrapped Labeled Crate label slot to prevent sorting mods from altering the label.",
|
"1.0.20-b5": "[A] Electrical Furnace can draw in smelting input items from an adjacent inventory when a Hopper is placed in the auxiliary slot.\n[M] Wrapped Labeled Crate label slot to prevent sorting mods from altering the label.",
|
||||||
|
@ -56,6 +57,6 @@
|
||||||
},
|
},
|
||||||
"promos": {
|
"promos": {
|
||||||
"1.14.4-recommended": "",
|
"1.14.4-recommended": "",
|
||||||
"1.14.4-latest": "1.0.20-b7"
|
"1.14.4-latest": "1.1.0-b1"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,7 +11,11 @@ Mod sources for Minecraft version 1.14.4.
|
||||||
|
|
||||||
## Version history
|
## Version history
|
||||||
|
|
||||||
~ v1.1.0-b1 [M]
|
- v1.1.0-b1 [F] Fixed Electrical Furnace speed sanitizing bug (issue #97, thx therobotmenace).
|
||||||
|
[A] Sheet Metal Slab Slices added (only available if IE is installed).
|
||||||
|
[M] Config options extended/updated.
|
||||||
|
[M] Dense Grit Sand textures altered to get slightly more visible structure
|
||||||
|
from distance.
|
||||||
|
|
||||||
- v1.0.20-b7 [A] Dense Grit Sand added.
|
- v1.0.20-b7 [A] Dense Grit Sand added.
|
||||||
[!] Variant Slab compatibility fix. *This may alter placed slabs of this mod,
|
[!] Variant Slab compatibility fix. *This may alter placed slabs of this mod,
|
||||||
|
|
|
@ -12,20 +12,22 @@ package wile.engineersdecor;
|
||||||
import wile.engineersdecor.blocks.*;
|
import wile.engineersdecor.blocks.*;
|
||||||
import wile.engineersdecor.libmc.blocks.StandardBlocks;
|
import wile.engineersdecor.libmc.blocks.StandardBlocks;
|
||||||
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
||||||
import wile.engineersdecor.libmc.detail.OptionalRecipeCondition;
|
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraftforge.common.ForgeConfigSpec;
|
import net.minecraftforge.common.ForgeConfigSpec;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class ModConfig
|
public class ModConfig
|
||||||
{
|
{
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
private static final Logger LOGGER = ModEngineersDecor.logger();
|
||||||
|
private static final String MODID = ModEngineersDecor.MODID;
|
||||||
public static final CommonConfig COMMON;
|
public static final CommonConfig COMMON;
|
||||||
public static final ServerConfig SERVER;
|
public static final ServerConfig SERVER;
|
||||||
public static final ClientConfig CLIENT;
|
public static final ClientConfig CLIENT;
|
||||||
|
@ -61,11 +63,11 @@ public class ModConfig
|
||||||
builder.comment("Opt-out settings")
|
builder.comment("Opt-out settings")
|
||||||
.push("optout");
|
.push("optout");
|
||||||
without_tooltips = builder
|
without_tooltips = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_tooltips")
|
.translation(MODID + ".config.without_tooltips")
|
||||||
.comment("Disable CTRL-SHIFT item tooltip display.")
|
.comment("Disable CTRL-SHIFT item tooltip display.")
|
||||||
.define("without_tooltips", false);
|
.define("without_tooltips", false);
|
||||||
without_ters = builder
|
without_ters = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_ters")
|
.translation(MODID + ".config.without_ters")
|
||||||
.comment("Disable all TERs (tile entity renderers).")
|
.comment("Disable all TERs (tile entity renderers).")
|
||||||
.define("without_ters", false);
|
.define("without_ters", false);
|
||||||
}
|
}
|
||||||
|
@ -95,12 +97,14 @@ public class ModConfig
|
||||||
public final ForgeConfigSpec.BooleanValue without_clinker_bricks;
|
public final ForgeConfigSpec.BooleanValue without_clinker_bricks;
|
||||||
public final ForgeConfigSpec.BooleanValue without_slag_bricks;
|
public final ForgeConfigSpec.BooleanValue without_slag_bricks;
|
||||||
public final ForgeConfigSpec.BooleanValue without_rebar_concrete;
|
public final ForgeConfigSpec.BooleanValue without_rebar_concrete;
|
||||||
|
public final ForgeConfigSpec.BooleanValue without_gas_concrete;
|
||||||
public final ForgeConfigSpec.BooleanValue without_walls;
|
public final ForgeConfigSpec.BooleanValue without_walls;
|
||||||
public final ForgeConfigSpec.BooleanValue without_stairs;
|
public final ForgeConfigSpec.BooleanValue without_stairs;
|
||||||
public final ForgeConfigSpec.BooleanValue without_ie_concrete_wall;
|
public final ForgeConfigSpec.BooleanValue without_ie_concrete_wall;
|
||||||
public final ForgeConfigSpec.BooleanValue without_panzer_glass;
|
public final ForgeConfigSpec.BooleanValue without_panzer_glass;
|
||||||
public final ForgeConfigSpec.BooleanValue without_ladders;
|
public final ForgeConfigSpec.BooleanValue without_ladders;
|
||||||
public final ForgeConfigSpec.BooleanValue without_treated_wood_furniture;
|
public final ForgeConfigSpec.BooleanValue without_treated_wood_furniture;
|
||||||
|
public final ForgeConfigSpec.BooleanValue without_metal_furniture;
|
||||||
public final ForgeConfigSpec.BooleanValue without_windows;
|
public final ForgeConfigSpec.BooleanValue without_windows;
|
||||||
public final ForgeConfigSpec.BooleanValue without_light_sources;
|
public final ForgeConfigSpec.BooleanValue without_light_sources;
|
||||||
public final ForgeConfigSpec.BooleanValue without_slabs;
|
public final ForgeConfigSpec.BooleanValue without_slabs;
|
||||||
|
@ -124,6 +128,8 @@ public class ModConfig
|
||||||
public final ForgeConfigSpec.BooleanValue without_mineral_smelter;
|
public final ForgeConfigSpec.BooleanValue without_mineral_smelter;
|
||||||
public final ForgeConfigSpec.BooleanValue without_milking_machine;
|
public final ForgeConfigSpec.BooleanValue without_milking_machine;
|
||||||
public final ForgeConfigSpec.BooleanValue without_tree_cutter;
|
public final ForgeConfigSpec.BooleanValue without_tree_cutter;
|
||||||
|
public final ForgeConfigSpec.BooleanValue without_labeled_crate;
|
||||||
|
public final ForgeConfigSpec.BooleanValue without_fences;
|
||||||
public final ForgeConfigSpec.BooleanValue without_chair_sitting;
|
public final ForgeConfigSpec.BooleanValue without_chair_sitting;
|
||||||
public final ForgeConfigSpec.BooleanValue without_mob_chair_sitting;
|
public final ForgeConfigSpec.BooleanValue without_mob_chair_sitting;
|
||||||
public final ForgeConfigSpec.BooleanValue without_ladder_speed_boost;
|
public final ForgeConfigSpec.BooleanValue without_ladder_speed_boost;
|
||||||
|
@ -166,7 +172,7 @@ public class ModConfig
|
||||||
builder.comment("Opt-out settings")
|
builder.comment("Opt-out settings")
|
||||||
.push("optout");
|
.push("optout");
|
||||||
pattern_excludes = builder
|
pattern_excludes = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.pattern_excludes")
|
.translation(MODID + ".config.pattern_excludes")
|
||||||
.comment("Opt-out any block by its registry name ('*' wildcard matching, "
|
.comment("Opt-out any block by its registry name ('*' wildcard matching, "
|
||||||
+ "comma separated list, whitespaces ignored. You must match the whole name, "
|
+ "comma separated list, whitespaces ignored. You must match the whole name, "
|
||||||
+ "means maybe add '*' also at the begin and end. Example: '*wood*,*steel*' "
|
+ "means maybe add '*' also at the begin and end. Example: '*wood*,*steel*' "
|
||||||
|
@ -174,7 +180,7 @@ public class ModConfig
|
||||||
+ "The matching result is also traced in the log file. ")
|
+ "The matching result is also traced in the log file. ")
|
||||||
.define("pattern_excludes", "");
|
.define("pattern_excludes", "");
|
||||||
pattern_includes = builder
|
pattern_includes = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.pattern_includes")
|
.translation(MODID + ".config.pattern_includes")
|
||||||
.comment("Prevent blocks from being opt'ed by registry name ('*' wildcard matching, "
|
.comment("Prevent blocks from being opt'ed by registry name ('*' wildcard matching, "
|
||||||
+ "comma separated list, whitespaces ignored. Evaluated before all other opt-out checks. "
|
+ "comma separated list, whitespaces ignored. Evaluated before all other opt-out checks. "
|
||||||
+ "You must match the whole name, means maybe add '*' also at the begin and end. Example: "
|
+ "You must match the whole name, means maybe add '*' also at the begin and end. Example: "
|
||||||
|
@ -182,153 +188,169 @@ public class ModConfig
|
||||||
+ "The matching result is also traced in the log file.")
|
+ "The matching result is also traced in the log file.")
|
||||||
.define("pattern_includes", "");
|
.define("pattern_includes", "");
|
||||||
without_clinker_bricks = builder
|
without_clinker_bricks = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_clinker_bricks")
|
.translation(MODID + ".config.without_clinker_bricks")
|
||||||
.comment("Disable clinker bricks and derived blocks.")
|
.comment("Disable clinker bricks and derived blocks.")
|
||||||
.define("without_clinker_bricks", false);
|
.define("without_clinker_bricks", false);
|
||||||
without_slag_bricks = builder
|
without_slag_bricks = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_slag_bricks")
|
.translation(MODID + ".config.without_slag_bricks")
|
||||||
.comment("Disable slag bricks and derived blocks.")
|
.comment("Disable slag bricks and derived blocks.")
|
||||||
.define("without_slag_bricks", false);
|
.define("without_slag_bricks", false);
|
||||||
without_rebar_concrete = builder
|
without_rebar_concrete = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_rebar_concrete")
|
.translation(MODID + ".config.without_rebar_concrete")
|
||||||
.comment("Disable rebar concrete and derived blocks.")
|
.comment("Disable rebar concrete and derived blocks.")
|
||||||
.define("without_rebar_concrete", false);
|
.define("without_rebar_concrete", false);
|
||||||
|
without_gas_concrete = builder
|
||||||
|
.translation(MODID + ".config.without_gas_concrete")
|
||||||
|
.comment("Disable gas concrete and derived blocks.")
|
||||||
|
.define("without_gas_concrete", false);
|
||||||
without_walls = builder
|
without_walls = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_walls")
|
.translation(MODID + ".config.without_walls")
|
||||||
.comment("Disable all mod wall blocks.")
|
.comment("Disable all mod wall blocks.")
|
||||||
.define("without_walls", false);
|
.define("without_walls", false);
|
||||||
without_stairs = builder
|
without_stairs = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_stairs")
|
.translation(MODID + ".config.without_stairs")
|
||||||
.comment("Disable all mod stairs blocks.")
|
.comment("Disable all mod stairs blocks.")
|
||||||
.define("without_stairs", false);
|
.define("without_stairs", false);
|
||||||
without_ie_concrete_wall = builder
|
without_ie_concrete_wall = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_ie_concrete_wall")
|
.translation(MODID + ".config.without_ie_concrete_wall")
|
||||||
.comment("Disable IE concrete wall.")
|
.comment("Disable IE concrete wall.")
|
||||||
.define("without_ie_concrete_wall", false);
|
.define("without_ie_concrete_wall", false);
|
||||||
without_panzer_glass = builder
|
without_panzer_glass = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_panzer_glass")
|
.translation(MODID + ".config.without_panzer_glass")
|
||||||
.comment("Disable panzer glass and derived blocks.")
|
.comment("Disable panzer glass and derived blocks.")
|
||||||
.define("without_panzer_glass", false);
|
.define("without_panzer_glass", false);
|
||||||
without_crafting_table = builder
|
without_crafting_table = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_crafting_table")
|
.translation(MODID + ".config.without_crafting_table")
|
||||||
.comment("Disable treated wood crafting table.")
|
.comment("Disable treated wood crafting table.")
|
||||||
.define("without_crafting_table", false);
|
.define("without_crafting_table", false);
|
||||||
without_lab_furnace = builder
|
without_lab_furnace = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_lab_furnace")
|
.translation(MODID + ".config.without_lab_furnace")
|
||||||
.comment("Disable small lab furnace.")
|
.comment("Disable small lab furnace.")
|
||||||
.define("without_lab_furnace", false);
|
.define("without_lab_furnace", false);
|
||||||
without_electrical_furnace = builder
|
without_electrical_furnace = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_electrical_furnace")
|
.translation(MODID + ".config.without_electrical_furnace")
|
||||||
.comment("Disable small electrical pass-through furnace.")
|
.comment("Disable small electrical pass-through furnace.")
|
||||||
.define("without_electrical_furnace", false);
|
.define("without_electrical_furnace", false);
|
||||||
without_treated_wood_furniture = builder
|
without_treated_wood_furniture = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_treated_wood_furniture")
|
.translation(MODID + ".config.without_treated_wood_furniture")
|
||||||
.comment("Disable treated wood table, stool, windowsill, etc.")
|
.comment("Disable treated wood table, stool, windowsill, etc.")
|
||||||
.define("without_treated_wood_furniture", false);
|
.define("without_treated_wood_furniture", false);
|
||||||
|
without_metal_furniture = builder
|
||||||
|
.translation(MODID + ".config.without_metal_furniture")
|
||||||
|
.comment("Disable metal tables, etc.")
|
||||||
|
.define("without_metal_furniture", false);
|
||||||
without_windows = builder
|
without_windows = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_windows")
|
.translation(MODID + ".config.without_windows")
|
||||||
.comment("Disable treated wood window, etc.")
|
.comment("Disable treated wood window, etc.")
|
||||||
.define("without_windows", false);
|
.define("without_windows", false);
|
||||||
without_light_sources = builder
|
without_light_sources = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_light_sources")
|
.translation(MODID + ".config.without_light_sources")
|
||||||
.comment("Disable light sources")
|
.comment("Disable light sources")
|
||||||
.define("without_light_sources", false);
|
.define("without_light_sources", false);
|
||||||
without_ladders = builder
|
without_ladders = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_ladders")
|
.translation(MODID + ".config.without_ladders")
|
||||||
.comment("Disable ladders")
|
.comment("Disable ladders")
|
||||||
.define("without_ladders", false);
|
.define("without_ladders", false);
|
||||||
without_chair_sitting = builder
|
without_chair_sitting = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_chair_sitting")
|
.translation(MODID + ".config.without_chair_sitting")
|
||||||
.comment("Disable possibility to sit on stools and chairs.")
|
.comment("Disable possibility to sit on stools and chairs.")
|
||||||
.define("without_chair_sitting", false);
|
.define("without_chair_sitting", false);
|
||||||
without_mob_chair_sitting = builder
|
without_mob_chair_sitting = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_mob_chair_sitting")
|
.translation(MODID + ".config.without_mob_chair_sitting")
|
||||||
.comment("Disable that mobs will sit on chairs and stools.")
|
.comment("Disable that mobs will sit on chairs and stools.")
|
||||||
.define("without_mob_chair_sitting", false);
|
.define("without_mob_chair_sitting", false);
|
||||||
without_ladder_speed_boost = builder
|
without_ladder_speed_boost = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_ladder_speed_boost")
|
.translation(MODID + ".config.without_ladder_speed_boost")
|
||||||
.comment("Disable the speed boost of ladders in this mod.")
|
.comment("Disable the speed boost of ladders in this mod.")
|
||||||
.define("without_ladder_speed_boost", false);
|
.define("without_ladder_speed_boost", false);
|
||||||
without_crafting_table_history = builder
|
without_crafting_table_history = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_crafting_table_history")
|
.translation(MODID + ".config.without_crafting_table_history")
|
||||||
.comment("Disable history refabrication feature of the treated wood crafting table.")
|
.comment("Disable history refabrication feature of the treated wood crafting table.")
|
||||||
.define("without_crafting_table_history", false);
|
.define("without_crafting_table_history", false);
|
||||||
without_valves = builder
|
without_valves = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_valves")
|
.translation(MODID + ".config.without_valves")
|
||||||
.comment("Disable check valve, and redstone controlled valves.")
|
.comment("Disable check valve, and redstone controlled valves.")
|
||||||
.define("without_valves", false);
|
.define("without_valves", false);
|
||||||
without_passive_fluid_accumulator = builder
|
without_passive_fluid_accumulator = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_passive_fluid_accumulator")
|
.translation(MODID + ".config.without_passive_fluid_accumulator")
|
||||||
.comment("Disable the passive fluid accumulator.")
|
.comment("Disable the passive fluid accumulator.")
|
||||||
.define("without_passive_fluid_accumulator", false);
|
.define("without_passive_fluid_accumulator", false);
|
||||||
without_waste_incinerator = builder
|
without_waste_incinerator = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_waste_incinerator")
|
.translation(MODID + ".config.without_waste_incinerator")
|
||||||
.comment("Disable item disposal/trash/void incinerator device.")
|
.comment("Disable item disposal/trash/void incinerator device.")
|
||||||
.define("without_waste_incinerator", false);
|
.define("without_waste_incinerator", false);
|
||||||
without_sign_plates = builder
|
without_sign_plates = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_sign_plates")
|
.translation(MODID + ".config.without_sign_plates")
|
||||||
.comment("Disable decorative sign plates (caution, hazards, etc).")
|
.comment("Disable decorative sign plates (caution, hazards, etc).")
|
||||||
.define("without_sign_plates", false);
|
.define("without_sign_plates", false);
|
||||||
without_floor_grating = builder
|
without_floor_grating = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_floor_grating")
|
.translation(MODID + ".config.without_floor_grating")
|
||||||
.comment("Disable floor gratings.")
|
.comment("Disable floor gratings.")
|
||||||
.define("without_floor_grating", false);
|
.define("without_floor_grating", false);
|
||||||
without_factory_dropper = builder
|
without_factory_dropper = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_factory_dropper")
|
.translation(MODID + ".config.without_factory_dropper")
|
||||||
.comment("Disable the factory dropper.")
|
.comment("Disable the factory dropper.")
|
||||||
.define("without_factory_dropper", false);
|
.define("without_factory_dropper", false);
|
||||||
without_factory_hopper = builder
|
without_factory_hopper = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_factory_hopper")
|
.translation(MODID + ".config.without_factory_hopper")
|
||||||
.comment("Disable the factory hopper.")
|
.comment("Disable the factory hopper.")
|
||||||
.define("without_factory_hopper", false);
|
.define("without_factory_hopper", false);
|
||||||
without_factory_placer = builder
|
without_factory_placer = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_factory_placer")
|
.translation(MODID + ".config.without_factory_placer")
|
||||||
.comment("Disable the factory placer.")
|
.comment("Disable the factory placer.")
|
||||||
.define("without_factory_placer", false);
|
.define("without_factory_placer", false);
|
||||||
without_block_breaker = builder
|
without_block_breaker = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_block_breaker")
|
.translation(MODID + ".config.without_block_breaker")
|
||||||
.comment("Disable the small block breaker.")
|
.comment("Disable the small block breaker.")
|
||||||
.define("without_block_breaker", false);
|
.define("without_block_breaker", false);
|
||||||
without_solar_panel = builder
|
without_solar_panel = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_solar_panel")
|
.translation(MODID + ".config.without_solar_panel")
|
||||||
.comment("Disable the small solar panel.")
|
.comment("Disable the small solar panel.")
|
||||||
.define("without_solar_panel", false);
|
.define("without_solar_panel", false);
|
||||||
without_fluid_funnel = builder
|
without_fluid_funnel = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_fluid_funnel")
|
.translation(MODID + ".config.without_fluid_funnel")
|
||||||
.comment("Disable the small fluid collection funnel.")
|
.comment("Disable the small fluid collection funnel.")
|
||||||
.define("without_fluid_funnel", false);
|
.define("without_fluid_funnel", false);
|
||||||
without_mineral_smelter = builder
|
without_mineral_smelter = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_mineral_smelter")
|
.translation(MODID + ".config.without_mineral_smelter")
|
||||||
.comment("Disable the small mineral smelter.")
|
.comment("Disable the small mineral smelter.")
|
||||||
.define("without_mineral_smelter", false);
|
.define("without_mineral_smelter", false);
|
||||||
without_milking_machine = builder
|
without_milking_machine = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_milking_machine")
|
.translation(MODID + ".config.without_milking_machine")
|
||||||
.comment("Disable the small milking machine.")
|
.comment("Disable the small milking machine.")
|
||||||
.define("without_milking_machine", false);
|
.define("without_milking_machine", false);
|
||||||
without_tree_cutter = builder
|
without_tree_cutter = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_tree_cutter")
|
.translation(MODID + ".config.without_tree_cutter")
|
||||||
.comment("Disable the small tree cutter.")
|
.comment("Disable the small tree cutter.")
|
||||||
.define("without_tree_cutter", false);
|
.define("without_tree_cutter", false);
|
||||||
|
without_labeled_crate = builder
|
||||||
|
.translation(MODID + ".config.without_labeled_crate")
|
||||||
|
.comment("Disable labeled crate.")
|
||||||
|
.define("without_labeled_crate", false);
|
||||||
without_slabs = builder
|
without_slabs = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_slabs")
|
.translation(MODID + ".config.without_slabs")
|
||||||
.comment("Disable horizontal half-block slab.")
|
.comment("Disable horizontal half-block slab.")
|
||||||
.define("without_slabs", false);
|
.define("without_slabs", false);
|
||||||
without_halfslabs = builder
|
without_halfslabs = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_halfslabs")
|
.translation(MODID + ".config.without_halfslabs")
|
||||||
.comment("Disable stackable 1/8 block slices.")
|
.comment("Disable stackable 1/8 block slices.")
|
||||||
.define("without_halfslabs", false);
|
.define("without_halfslabs", false);
|
||||||
without_poles = builder
|
without_poles = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_poles")
|
.translation(MODID + ".config.without_poles")
|
||||||
.comment("Disable poles of any material.")
|
.comment("Disable poles of any material.")
|
||||||
.define("without_poles", false);
|
.define("without_poles", false);
|
||||||
without_hsupports = builder
|
without_hsupports = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_hsupports")
|
.translation(MODID + ".config.without_hsupports")
|
||||||
.comment("Disable horizontal supports like the double-T support.")
|
.comment("Disable horizontal supports like the double-T support.")
|
||||||
.define("without_hsupports", false);
|
.define("without_hsupports", false);
|
||||||
without_recipes = builder
|
without_recipes = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_recipes")
|
.translation(MODID + ".config.without_recipes")
|
||||||
.comment("Disable all internal recipes, allowing to use alternative pack recipes.")
|
.comment("Disable all internal recipes, allowing to use alternative pack recipes.")
|
||||||
.define("without_recipes", false);
|
.define("without_recipes", false);
|
||||||
|
without_fences = builder
|
||||||
|
.translation(MODID + ".config.without_fences")
|
||||||
|
.comment("Disable all fences and fence gates.")
|
||||||
|
.define("without_fences", false);
|
||||||
builder.pop();
|
builder.pop();
|
||||||
}
|
}
|
||||||
// --- MISC ---------------------------------------------------------------
|
// --- MISC ---------------------------------------------------------------
|
||||||
|
@ -336,16 +358,16 @@ public class ModConfig
|
||||||
builder.comment("Miscellaneous settings")
|
builder.comment("Miscellaneous settings")
|
||||||
.push("miscellaneous");
|
.push("miscellaneous");
|
||||||
with_experimental = builder
|
with_experimental = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.with_experimental")
|
.translation(MODID + ".config.with_experimental")
|
||||||
.comment("Enables experimental features. Use at own risk.")
|
.comment("Enables experimental features. Use at own risk.")
|
||||||
.define("with_experimental", false);
|
.define("with_experimental", false);
|
||||||
without_direct_slab_pickup = builder
|
without_direct_slab_pickup = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_direct_slab_pickup")
|
.translation(MODID + ".config.without_direct_slab_pickup")
|
||||||
.comment("Disable directly picking up layers from slabs and slab " +
|
.comment("Disable directly picking up layers from slabs and slab " +
|
||||||
" slices by left clicking while looking up/down.")
|
" slices by left clicking while looking up/down.")
|
||||||
.define("without_direct_slab_pickup", false);
|
.define("without_direct_slab_pickup", false);
|
||||||
with_creative_mode_device_drops = builder
|
with_creative_mode_device_drops = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.with_creative_mode_device_drops")
|
.translation(MODID + ".config.with_creative_mode_device_drops")
|
||||||
.comment("Enable that devices are dropped as item also in creative mode, allowing " +
|
.comment("Enable that devices are dropped as item also in creative mode, allowing " +
|
||||||
" to relocate them with contents and settings.")
|
" to relocate them with contents and settings.")
|
||||||
.define("with_creative_mode_device_drops", false);
|
.define("with_creative_mode_device_drops", false);
|
||||||
|
@ -356,130 +378,130 @@ public class ModConfig
|
||||||
builder.comment("Tweaks")
|
builder.comment("Tweaks")
|
||||||
.push("tweaks");
|
.push("tweaks");
|
||||||
furnace_smelting_speed_percent = builder
|
furnace_smelting_speed_percent = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.furnace_smelting_speed_percent")
|
.translation(MODID + ".config.furnace_smelting_speed_percent")
|
||||||
.comment("Defines, in percent, how fast the lab furnace smelts compared to " +
|
.comment("Defines, in percent, how fast the lab furnace smelts compared to " +
|
||||||
"a vanilla furnace. 100% means vanilla furnace speed, 150% means the " +
|
"a vanilla furnace. 100% means vanilla furnace speed, 150% means the " +
|
||||||
"lab furnace is faster. The value can be changed on-the-fly for tuning.")
|
"lab furnace is faster. The value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("furnace_smelting_speed_percent", 130, 50, 800);
|
.defineInRange("furnace_smelting_speed_percent", 130, 50, 800);
|
||||||
furnace_fuel_efficiency_percent = builder
|
furnace_fuel_efficiency_percent = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.furnace_fuel_efficiency_percent")
|
.translation(MODID + ".config.furnace_fuel_efficiency_percent")
|
||||||
.comment("Defines, in percent, how fuel efficient the lab furnace is, compared " +
|
.comment("Defines, in percent, how fuel efficient the lab furnace is, compared " +
|
||||||
"to a vanilla furnace. 100% means vanilla furnace consumiton, 200% means " +
|
"to a vanilla furnace. 100% means vanilla furnace consumiton, 200% means " +
|
||||||
"the lab furnace needs about half the fuel of a vanilla furnace, " +
|
"the lab furnace needs about half the fuel of a vanilla furnace, " +
|
||||||
"The value can be changed on-the-fly for tuning.")
|
"The value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("furnace_fuel_efficiency_percent", 100, 50, 400);
|
.defineInRange("furnace_fuel_efficiency_percent", 100, 50, 400);
|
||||||
furnace_boost_energy_consumption = builder
|
furnace_boost_energy_consumption = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.furnace_boost_energy_consumption")
|
.translation(MODID + ".config.furnace_boost_energy_consumption")
|
||||||
.comment("Defines the energy consumption (per tick) for speeding up the smelting process. " +
|
.comment("Defines the energy consumption (per tick) for speeding up the smelting process. " +
|
||||||
"If IE is installed, an external heater has to be inserted into an auxiliary slot " +
|
"If IE is installed, an external heater has to be inserted into an auxiliary slot " +
|
||||||
"of the lab furnace. The power source needs to be able to provide at least 4 times " +
|
"of the lab furnace. The power source needs to be able to provide at least 4 times " +
|
||||||
"this consumption (fixed threshold value). The value can be changed on-the-fly for tuning. " +
|
"this consumption (fixed threshold value). The value can be changed on-the-fly for tuning. " +
|
||||||
"The default value corresponds to the IE heater consumption.")
|
"The default value corresponds to the IE heater consumption.")
|
||||||
.defineInRange("furnace_boost_energy_consumption", 24, 8, 1024);
|
.defineInRange("furnace_boost_energy_consumption", 24, 2, 1024);
|
||||||
chair_mob_sitting_probability_percent = builder
|
chair_mob_sitting_probability_percent = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.chair_mob_sitting_probability_percent")
|
.translation(MODID + ".config.chair_mob_sitting_probability_percent")
|
||||||
.comment("Defines, in percent, how high the probability is that a mob sits on a chair " +
|
.comment("Defines, in percent, how high the probability is that a mob sits on a chair " +
|
||||||
"when colliding with it. Can be changed on-the-fly for tuning.")
|
"when colliding with it. Can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("chair_mob_sitting_probability_percent", 10.0, 0.0, 80.0);
|
.defineInRange("chair_mob_sitting_probability_percent", 10.0, 0.0, 80.0);
|
||||||
chair_mob_standup_probability_percent = builder
|
chair_mob_standup_probability_percent = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.chair_mob_standup_probability_percent")
|
.translation(MODID + ".config.chair_mob_standup_probability_percent")
|
||||||
.comment("Defines, in percent, probable it is that a mob leaves a chair when sitting " +
|
.comment("Defines, in percent, probable it is that a mob leaves a chair when sitting " +
|
||||||
"on it. The 'dice is rolled' about every 20 ticks. There is also a minimum " +
|
"on it. The 'dice is rolled' about every 20 ticks. There is also a minimum " +
|
||||||
"Sitting time of about 3s. The config value can be changed on-the-fly for tuning.")
|
"Sitting time of about 3s. The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("chair_mob_standup_probability_percent", 1.0, 1e-3, 10.0);
|
.defineInRange("chair_mob_standup_probability_percent", 1.0, 1e-3, 10.0);
|
||||||
with_crafting_quickmove_buttons = builder
|
with_crafting_quickmove_buttons = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.with_crafting_quickmove_buttons")
|
.translation(MODID + ".config.with_crafting_quickmove_buttons")
|
||||||
.comment("Enables small quick-move arrows from/to player/block storage. " +
|
.comment("Enables small quick-move arrows from/to player/block storage. " +
|
||||||
"Makes the UI a bit too busy, therefore disabled by default.")
|
"Makes the UI a bit too busy, therefore disabled by default.")
|
||||||
.define("with_crafting_quickmove_buttons", false);
|
.define("with_crafting_quickmove_buttons", false);
|
||||||
without_crafting_mouse_scrolling = builder
|
without_crafting_mouse_scrolling = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.without_crafting_mouse_scrolling")
|
.translation(MODID + ".config.without_crafting_mouse_scrolling")
|
||||||
.comment("Disables increasing/decreasing the crafting grid items by scrolling over the crafting result slot.")
|
.comment("Disables increasing/decreasing the crafting grid items by scrolling over the crafting result slot.")
|
||||||
.define("without_crafting_mouse_scrolling", false);
|
.define("without_crafting_mouse_scrolling", false);
|
||||||
pipevalve_max_flowrate = builder
|
pipevalve_max_flowrate = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.pipevalve_max_flowrate")
|
.translation(MODID + ".config.pipevalve_max_flowrate")
|
||||||
.comment("Defines how many millibuckets can be transferred (per tick) through the valves. " +
|
.comment("Defines how many millibuckets can be transferred (per tick) through the valves. " +
|
||||||
"That is technically the 'storage size' specified for blocks that want to fill " +
|
"That is technically the 'storage size' specified for blocks that want to fill " +
|
||||||
"fluids into the valve (the valve has no container and forward that to the output " +
|
"fluids into the valve (the valve has no container and forward that to the output " +
|
||||||
"block), The value can be changed on-the-fly for tuning. ")
|
"block), The value can be changed on-the-fly for tuning. ")
|
||||||
.defineInRange("pipevalve_max_flowrate", 1000, 1, 32000);
|
.defineInRange("pipevalve_max_flowrate", 1000, 1, 32000);
|
||||||
pipevalve_redstone_gain = builder
|
pipevalve_redstone_gain = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.pipevalve_redstone_gain")
|
.translation(MODID + ".config.pipevalve_redstone_gain")
|
||||||
.comment("Defines how many millibuckets per redstone signal strength can be transferred per tick " +
|
.comment("Defines how many millibuckets per redstone signal strength can be transferred per tick " +
|
||||||
"through the analog redstone controlled valves. Note: power 0 is always off, power 15 is always " +
|
"through the analog redstone controlled valves. Note: power 0 is always off, power 15 is always " +
|
||||||
"the max flow rate. Between power 1 and 14 this scaler will result in a flow = 'redstone slope' * 'current redstone power'. " +
|
"the max flow rate. Between power 1 and 14 this scaler will result in a flow = 'redstone slope' * 'current redstone power'. " +
|
||||||
"The value can be changed on-the-fly for tuning. ")
|
"The value can be changed on-the-fly for tuning. ")
|
||||||
.defineInRange("pipevalve_redstone_gain", 20, 1, 32000);
|
.defineInRange("pipevalve_redstone_gain", 20, 1, 32000);
|
||||||
e_furnace_speed_percent = builder
|
e_furnace_speed_percent = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.e_furnace_speed_percent")
|
.translation(MODID + ".config.e_furnace_speed_percent")
|
||||||
.comment("Defines, in percent, how fast the electrical furnace smelts compared to " +
|
.comment("Defines, in percent, how fast the electrical furnace smelts compared to " +
|
||||||
"a vanilla furnace. 100% means vanilla furnace speed, 150% means the " +
|
"a vanilla furnace. 100% means vanilla furnace speed, 150% means the " +
|
||||||
"electrical furnace is faster. The value can be changed on-the-fly for tuning.")
|
"electrical furnace is faster. The value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("e_furnace_speed_percent", EdElectricalFurnace.ElectricalFurnaceTileEntity.DEFAULT_SPEED_PERCENT, 50, 800);
|
.defineInRange("e_furnace_speed_percent", EdElectricalFurnace.ElectricalFurnaceTileEntity.DEFAULT_SPEED_PERCENT, 50, 800);
|
||||||
e_furnace_power_consumption = builder
|
e_furnace_power_consumption = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.e_furnace_power_consumption")
|
.translation(MODID + ".config.e_furnace_power_consumption")
|
||||||
.comment("Defines how much RF per tick the the electrical furnace consumed (average) for smelting. " +
|
.comment("Defines how much RF per tick the the electrical furnace consumed (average) for smelting. " +
|
||||||
"The feeders transferring items from/to adjacent have this consumption/8 for each stack transaction. " +
|
"The feeders transferring items from/to adjacent have this consumption/8 for each stack transaction. " +
|
||||||
"The default value is only slightly higher than a furnace with an IE external heater (and no burning fuel inside)." +
|
"The default value is only slightly higher than a furnace with an IE external heater (and no burning fuel inside)." +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("e_furnace_power_consumption", EdElectricalFurnace.ElectricalFurnaceTileEntity.DEFAULT_ENERGY_CONSUMPTION, 8, 4096);
|
.defineInRange("e_furnace_power_consumption", EdElectricalFurnace.ElectricalFurnaceTileEntity.DEFAULT_ENERGY_CONSUMPTION, 8, 4096);
|
||||||
e_furnace_automatic_pulling = builder
|
e_furnace_automatic_pulling = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.e_furnace_automatic_pulling")
|
.translation(MODID + ".config.e_furnace_automatic_pulling")
|
||||||
.comment("Defines if the electrical furnace automatically pulls items from an inventory at the input side." +
|
.comment("Defines if the electrical furnace automatically pulls items from an inventory at the input side." +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.define("e_furnace_automatic_pulling", false);
|
.define("e_furnace_automatic_pulling", false);
|
||||||
small_solar_panel_peak_production = builder
|
small_solar_panel_peak_production = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.small_solar_panel_peak_production")
|
.translation(MODID + ".config.small_solar_panel_peak_production")
|
||||||
.comment("Defines the peak power production (at noon) of the Small Solar Panel. " +
|
.comment("Defines the peak power production (at noon) of the Small Solar Panel. " +
|
||||||
"Note that the agerage power is much less, as no power is produced at all during the night, " +
|
"Note that the agerage power is much less, as no power is produced at all during the night, " +
|
||||||
"and the power curve is nonlinear rising/falling during the day. Bad weather conditions also " +
|
"and the power curve is nonlinear rising/falling during the day. Bad weather conditions also " +
|
||||||
"decrease the production. The config value can be changed on-the-fly for tuning.")
|
"decrease the production. The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("small_solar_panel_peak_production", EdSolarPanel.SolarPanelTileEntity.DEFAULT_PEAK_POWER, 2, 4096);
|
.defineInRange("small_solar_panel_peak_production", EdSolarPanel.SolarPanelTileEntity.DEFAULT_PEAK_POWER, 2, 4096);
|
||||||
block_breaker_power_consumption = builder
|
block_breaker_power_consumption = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.block_breaker_power_consumption")
|
.translation(MODID + ".config.block_breaker_power_consumption")
|
||||||
.comment("Defines how much RF power the Small Block Breaker requires to magnificently increase the processing speed. " +
|
.comment("Defines how much RF power the Small Block Breaker requires to magnificently increase the processing speed. " +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("block_breaker_power_consumption", EdBreaker.BreakerTileEntity.DEFAULT_BOOST_ENERGY, 4, 1024);
|
.defineInRange("block_breaker_power_consumption", EdBreaker.BreakerTileEntity.DEFAULT_BOOST_ENERGY, 4, 1024);
|
||||||
block_breaker_reluctance = builder
|
block_breaker_reluctance = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.block_breaker_reluctance")
|
.translation(MODID + ".config.block_breaker_reluctance")
|
||||||
.comment("Defines how much time the Small Block Breaker needs per block hardness, " +
|
.comment("Defines how much time the Small Block Breaker needs per block hardness, " +
|
||||||
"means: 'reluctance' * hardness + min_time, you change the 'reluctance' here." +
|
"means: 'reluctance' * hardness + min_time, you change the 'reluctance' here." +
|
||||||
"The unit is ticks/hardness. " + "The config value can be changed on-the-fly for tuning.")
|
"The unit is ticks/hardness. " + "The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("block_breaker_reluctance", EdBreaker.BreakerTileEntity.DEFAULT_BREAKING_RELUCTANCE, 5, 50);
|
.defineInRange("block_breaker_reluctance", EdBreaker.BreakerTileEntity.DEFAULT_BREAKING_RELUCTANCE, 5, 50);
|
||||||
block_breaker_min_breaking_time = builder
|
block_breaker_min_breaking_time = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.block_breaker_min_breaking_time")
|
.translation(MODID + ".config.block_breaker_min_breaking_time")
|
||||||
.comment("Defines how much time the Small Block Breaker needs at least, better said it's an offset: " +
|
.comment("Defines how much time the Small Block Breaker needs at least, better said it's an offset: " +
|
||||||
"'reluctance' * hardness + min_time, you change the 'min_time' here, value " +
|
"'reluctance' * hardness + min_time, you change the 'min_time' here, value " +
|
||||||
"in ticks." + "The config value can be changed on-the-fly for tuning.")
|
"in ticks." + "The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("block_breaker_min_breaking_time", EdBreaker.BreakerTileEntity.DEFAULT_MIN_BREAKING_TIME, 10, 100);
|
.defineInRange("block_breaker_min_breaking_time", EdBreaker.BreakerTileEntity.DEFAULT_MIN_BREAKING_TIME, 10, 100);
|
||||||
block_breaker_requires_power = builder
|
block_breaker_requires_power = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.block_breaker_requires_power")
|
.translation(MODID + ".config.block_breaker_requires_power")
|
||||||
.comment("Defines if the Small Block Breaker does not work without RF power.")
|
.comment("Defines if the Small Block Breaker does not work without RF power.")
|
||||||
.define("block_breaker_requires_power", false);
|
.define("block_breaker_requires_power", false);
|
||||||
tree_cuttter_energy_consumption = builder
|
tree_cuttter_energy_consumption = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.tree_cuttter_energy_consumption")
|
.translation(MODID + ".config.tree_cuttter_energy_consumption")
|
||||||
.comment("Defines how much RF power the Small Tree Cutter requires to magnificently increase the processing speed. " +
|
.comment("Defines how much RF power the Small Tree Cutter requires to magnificently increase the processing speed. " +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("tree_cuttter_energy_consumption", EdTreeCutter.TreeCutterTileEntity.DEFAULT_BOOST_ENERGY, 4, 1024);
|
.defineInRange("tree_cuttter_energy_consumption", EdTreeCutter.TreeCutterTileEntity.DEFAULT_BOOST_ENERGY, 4, 1024);
|
||||||
tree_cuttter_cutting_time_needed = builder
|
tree_cuttter_cutting_time_needed = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.tree_cuttter_cutting_time_needed")
|
.translation(MODID + ".config.tree_cuttter_cutting_time_needed")
|
||||||
.comment("Defines how much time the Small Tree Cutter needs to cut a tree without RF power. " +
|
.comment("Defines how much time the Small Tree Cutter needs to cut a tree without RF power. " +
|
||||||
"The value is in seconds. With energy it is 6 times faster. " +
|
"The value is in seconds. With energy it is 6 times faster. " +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("tree_cuttter_cutting_time_needed", EdTreeCutter.TreeCutterTileEntity.DEFAULT_CUTTING_TIME_NEEDED, 10, 240);
|
.defineInRange("tree_cuttter_cutting_time_needed", EdTreeCutter.TreeCutterTileEntity.DEFAULT_CUTTING_TIME_NEEDED, 10, 240);
|
||||||
tree_cuttter_requires_power = builder
|
tree_cuttter_requires_power = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.tree_cuttter_requires_power")
|
.translation(MODID + ".config.tree_cuttter_requires_power")
|
||||||
.comment("Defines if the Small Tree Cutter does not work without RF power.")
|
.comment("Defines if the Small Tree Cutter does not work without RF power.")
|
||||||
.define("tree_cuttter_requires_power", false);
|
.define("tree_cuttter_requires_power", false);
|
||||||
milking_machine_energy_consumption = builder
|
milking_machine_energy_consumption = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.milking_machine_energy_consumption")
|
.translation(MODID + ".config.milking_machine_energy_consumption")
|
||||||
.comment("Defines how much time the Small Milking Machine needs work. " +
|
.comment("Defines how much time the Small Milking Machine needs work. " +
|
||||||
"Note this is a permanent standby power, not only when the device does something. " +
|
"Note this is a permanent standby power, not only when the device does something. " +
|
||||||
"Use zero to disable energy dependency and energy handling of the machine. " +
|
"Use zero to disable energy dependency and energy handling of the machine. " +
|
||||||
"The config value can be changed on-the-fly for tuning.")
|
"The config value can be changed on-the-fly for tuning.")
|
||||||
.defineInRange("milking_machine_energy_consumption", EdMilker.MilkerTileEntity.DEFAULT_ENERGY_CONSUMPTION, 0, 1024);
|
.defineInRange("milking_machine_energy_consumption", EdMilker.MilkerTileEntity.DEFAULT_ENERGY_CONSUMPTION, 0, 1024);
|
||||||
milking_machine_milking_delay = builder
|
milking_machine_milking_delay = builder
|
||||||
.translation(ModEngineersDecor.MODID + ".config.milking_machine_milking_delay")
|
.translation(MODID + ".config.milking_machine_milking_delay")
|
||||||
.comment("Defines (for each individual cow) the minimum time between milking." )
|
.comment("Defines (for each individual cow) the minimum time between milking." )
|
||||||
.defineInRange("milking_machine_milking_delay", EdMilker.MilkerTileEntity.DEFAULT_MILKING_DELAY_PER_COW, 1000, 24000);
|
.defineInRange("milking_machine_milking_delay", EdMilker.MilkerTileEntity.DEFAULT_MILKING_DELAY_PER_COW, 1000, 24000);
|
||||||
builder.pop();
|
builder.pop();
|
||||||
|
@ -492,10 +514,70 @@ public class ModConfig
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public static final boolean isOptedOut(final @Nullable Block block)
|
public static final boolean isOptedOut(final @Nullable Block block)
|
||||||
{ return isOptedOut(block, false); }
|
{ return isOptedOut(block.asItem()); }
|
||||||
|
|
||||||
public static final boolean isOptedOut(final @Nullable Block block, boolean with_log_details)
|
public static final boolean isOptedOut(final @Nullable Item item)
|
||||||
|
{ return (item!=null) && optouts_.contains(item.getRegistryName().getPath()); }
|
||||||
|
|
||||||
|
public static boolean withExperimental()
|
||||||
|
{ return with_experimental_features_; }
|
||||||
|
|
||||||
|
public static boolean withoutRecipes()
|
||||||
|
{ return without_recipes_; }
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Cache
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
private static final CompoundNBT server_config_ = new CompoundNBT();
|
||||||
|
private static HashSet<String> optouts_ = new HashSet<>();
|
||||||
|
private static boolean with_experimental_features_ = false;
|
||||||
|
private static boolean without_recipes_ = false;
|
||||||
|
public static boolean without_crafting_table = false;
|
||||||
|
public static boolean immersiveengineering_installed = false;
|
||||||
|
public static boolean without_direct_slab_pickup = false;
|
||||||
|
public static boolean with_creative_mode_device_drops = false;
|
||||||
|
|
||||||
|
public static final CompoundNBT getServerConfig() // config that may be synchronized from server to client via net pkg.
|
||||||
|
{ return server_config_; }
|
||||||
|
|
||||||
|
private static final void updateOptouts()
|
||||||
{
|
{
|
||||||
|
final ArrayList<String> includes_ = new ArrayList<String>();
|
||||||
|
final ArrayList<String> excludes_ = new ArrayList<String>();
|
||||||
|
{
|
||||||
|
String inc = COMMON.pattern_includes.get().toLowerCase().replaceAll(MODID+":", "").replaceAll("[^*_,a-z0-9]", "");
|
||||||
|
if(COMMON.pattern_includes.get() != inc) COMMON.pattern_includes.set(inc);
|
||||||
|
if(!inc.isEmpty()) LOGGER.info("Config pattern includes: '" + inc + "'");
|
||||||
|
String[] incl = inc.split(",");
|
||||||
|
includes_.clear();
|
||||||
|
for(int i=0; i< incl.length; ++i) {
|
||||||
|
incl[i] = incl[i].replaceAll("[*]", ".*?");
|
||||||
|
if(!incl[i].isEmpty()) includes_.add(incl[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
String exc = COMMON.pattern_excludes.get().toLowerCase().replaceAll(MODID+":", "").replaceAll("[^*_,a-z0-9]", "");
|
||||||
|
if(!exc.isEmpty()) LOGGER.info("Config pattern excludes: '" + exc + "'");
|
||||||
|
String[] excl = exc.split(",");
|
||||||
|
excludes_.clear();
|
||||||
|
for(int i=0; i< excl.length; ++i) {
|
||||||
|
excl[i] = excl[i].replaceAll("[*]", ".*?");
|
||||||
|
if(!excl[i].isEmpty()) excludes_.add(excl[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
boolean with_log_details = false;
|
||||||
|
HashSet<String> optouts = new HashSet<>();
|
||||||
|
ModContent.getRegisteredItems().stream().filter((Item item) -> {
|
||||||
|
if(item == null) return true;
|
||||||
|
if(SERVER == null) return false;
|
||||||
|
return false;
|
||||||
|
}).forEach(
|
||||||
|
e -> optouts.add(e.getRegistryName().getPath())
|
||||||
|
);
|
||||||
|
ModContent.getRegisteredBlocks().stream().filter((Block block) -> {
|
||||||
if(block==null) return true;
|
if(block==null) return true;
|
||||||
if(block==ModContent.SIGN_MODLOGO) return true;
|
if(block==ModContent.SIGN_MODLOGO) return true;
|
||||||
if(COMMON==null) return false;
|
if(COMMON==null) return false;
|
||||||
|
@ -508,25 +590,27 @@ public class ModConfig
|
||||||
// Hard IE dependent blocks
|
// Hard IE dependent blocks
|
||||||
if(!immersiveengineering_installed) {
|
if(!immersiveengineering_installed) {
|
||||||
if(block==ModContent.CONCRETE_WALL) return true;
|
if(block==ModContent.CONCRETE_WALL) return true;
|
||||||
if((block instanceof DecorBlock.Normal) && ((((DecorBlock.Normal)block).config & DecorBlock.CFG_HARD_IE_DEPENDENT) != 0)) return true;
|
if((block instanceof DecorBlock.Normal)&&((((DecorBlock.Normal)block).config&DecorBlock.CFG_HARD_IE_DEPENDENT)!=0))
|
||||||
if((block instanceof StandardBlocks.BaseBlock) && ((((StandardBlocks.BaseBlock)block).config & DecorBlock.CFG_HARD_IE_DEPENDENT) != 0)) return true;
|
return true;
|
||||||
|
if((block instanceof StandardBlocks.BaseBlock)&&((((StandardBlocks.BaseBlock)block).config&DecorBlock.CFG_HARD_IE_DEPENDENT)!=0))
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
// Force-include/exclude pattern matching
|
// Force-include/exclude pattern matching
|
||||||
try {
|
try {
|
||||||
for(String e : includes_) {
|
for(String e : includes_) {
|
||||||
if(rn.matches(e)) {
|
if(rn.matches(e)) {
|
||||||
if(with_log_details) ModEngineersDecor.logger().info("Optout force include: " + rn);
|
if(with_log_details) LOGGER.info("Optout force include: "+rn);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(String e : excludes_) {
|
for(String e : excludes_) {
|
||||||
if(rn.matches(e)) {
|
if(rn.matches(e)) {
|
||||||
if(with_log_details) ModEngineersDecor.logger().info("Optout force exclude: " + rn);
|
if(with_log_details) LOGGER.info("Optout force exclude: "+rn);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch(Throwable ex) {
|
} catch(Throwable ex) {
|
||||||
ModEngineersDecor.logger().error("optout include pattern failed, disabling.");
|
LOGGER.error("optout include pattern failed, disabling.");
|
||||||
includes_.clear();
|
includes_.clear();
|
||||||
excludes_.clear();
|
excludes_.clear();
|
||||||
}
|
}
|
||||||
|
@ -551,6 +635,7 @@ public class ModConfig
|
||||||
if(block instanceof EdMineralSmelter.MineralSmelterBlock) return COMMON.without_mineral_smelter.get();
|
if(block instanceof EdMineralSmelter.MineralSmelterBlock) return COMMON.without_mineral_smelter.get();
|
||||||
if(block instanceof EdMilker.MilkerBlock) return COMMON.without_milking_machine.get();
|
if(block instanceof EdMilker.MilkerBlock) return COMMON.without_milking_machine.get();
|
||||||
if(block instanceof EdTreeCutter.TreeCutterBlock) return COMMON.without_tree_cutter.get();
|
if(block instanceof EdTreeCutter.TreeCutterBlock) return COMMON.without_tree_cutter.get();
|
||||||
|
if(block instanceof EdLabeledCrate.LabeledCrateBlock) return COMMON.without_labeled_crate.get();
|
||||||
// Type based evaluation where later filters may match, too
|
// Type based evaluation where later filters may match, too
|
||||||
if(COMMON.without_slabs.get()&&(block instanceof EdSlabBlock)) return true;
|
if(COMMON.without_slabs.get()&&(block instanceof EdSlabBlock)) return true;
|
||||||
if(COMMON.without_stairs.get()&&(block instanceof EdStairsBlock)) return true;
|
if(COMMON.without_stairs.get()&&(block instanceof EdStairsBlock)) return true;
|
||||||
|
@ -560,6 +645,7 @@ public class ModConfig
|
||||||
if(COMMON.without_clinker_bricks.get()&&(rn.startsWith("clinker_brick_"))) return true;
|
if(COMMON.without_clinker_bricks.get()&&(rn.startsWith("clinker_brick_"))) return true;
|
||||||
if(COMMON.without_slag_bricks.get()&&rn.startsWith("slag_brick_")) return true;
|
if(COMMON.without_slag_bricks.get()&&rn.startsWith("slag_brick_")) return true;
|
||||||
if(COMMON.without_rebar_concrete.get()&&rn.startsWith("rebar_concrete")) return true;
|
if(COMMON.without_rebar_concrete.get()&&rn.startsWith("rebar_concrete")) return true;
|
||||||
|
if(COMMON.without_gas_concrete.get()&&rn.startsWith("gas_concrete")) return true;
|
||||||
if(COMMON.without_ie_concrete_wall.get()&&rn.startsWith("concrete_wall")) return true;
|
if(COMMON.without_ie_concrete_wall.get()&&rn.startsWith("concrete_wall")) return true;
|
||||||
if(COMMON.without_panzer_glass.get()&&rn.startsWith("panzerglass_")) return true;
|
if(COMMON.without_panzer_glass.get()&&rn.startsWith("panzerglass_")) return true;
|
||||||
if(COMMON.without_light_sources.get()&&rn.endsWith("_light")) return true;
|
if(COMMON.without_light_sources.get()&&rn.endsWith("_light")) return true;
|
||||||
|
@ -569,49 +655,37 @@ public class ModConfig
|
||||||
if(rn.equals("treated_wood_table")) return true;
|
if(rn.equals("treated_wood_table")) return true;
|
||||||
if(rn.equals("treated_wood_stool")) return true;
|
if(rn.equals("treated_wood_stool")) return true;
|
||||||
if(rn.equals("treated_wood_windowsill")) return true;
|
if(rn.equals("treated_wood_windowsill")) return true;
|
||||||
|
if(rn.equals("treated_wood_broad_windowsill")) return true;
|
||||||
|
if(rn.equals("treated_wood_side_table")) return true;
|
||||||
|
}
|
||||||
|
if(COMMON.without_metal_furniture.get()) {
|
||||||
|
if(rn.equals("steel_table")) return true;
|
||||||
|
}
|
||||||
|
if(COMMON.without_fences.get()) {
|
||||||
|
if(block instanceof EdFenceBlock) return true;
|
||||||
|
if(block instanceof EdDoubleGateBlock) return true;
|
||||||
}
|
}
|
||||||
} catch(Exception ex) {
|
} catch(Exception ex) {
|
||||||
ModEngineersDecor.logger().error("Exception evaluating the optout config: '" + ex.getMessage() + "'");
|
LOGGER.error("Exception evaluating the optout config: '"+ex.getMessage()+"'");
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
}).forEach(
|
||||||
|
e -> optouts.add(e.getRegistryName().getPath())
|
||||||
|
);
|
||||||
|
optouts_ = optouts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final boolean isOptedOut(final @Nullable Item item)
|
|
||||||
{
|
|
||||||
if(item == null) return true;
|
|
||||||
if(SERVER == null) return false;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean withExperimental()
|
|
||||||
{ return with_experimental_features_; }
|
|
||||||
|
|
||||||
public static boolean withoutRecipes()
|
|
||||||
{ return without_recipes_; }
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
|
||||||
// Cache
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------
|
|
||||||
private static final ArrayList<String> includes_ = new ArrayList<String>();
|
|
||||||
private static final ArrayList<String> excludes_ = new ArrayList<String>();
|
|
||||||
private static final CompoundNBT server_config_ = new CompoundNBT();
|
|
||||||
public static boolean without_crafting_table = false;
|
|
||||||
public static boolean immersiveengineering_installed = false;
|
|
||||||
public static boolean with_creative_mode_device_drops = false;
|
|
||||||
private static boolean with_experimental_features_ = false;
|
|
||||||
private static boolean without_recipes_ = false;
|
|
||||||
|
|
||||||
public static final CompoundNBT getServerConfig() // config that may be synchronized from server to client via net pkg.
|
|
||||||
{ return server_config_; }
|
|
||||||
|
|
||||||
public static final void apply()
|
public static final void apply()
|
||||||
{
|
{
|
||||||
without_crafting_table = isOptedOut(ModContent.TREATED_WOOD_CRAFTING_TABLE);
|
|
||||||
immersiveengineering_installed = Auxiliaries.isModLoaded("immersiveengineering");
|
|
||||||
with_experimental_features_ = COMMON.with_experimental.get();
|
with_experimental_features_ = COMMON.with_experimental.get();
|
||||||
|
if(with_experimental_features_) LOGGER.info("Config: EXPERIMENTAL FEATURES ENABLED.");
|
||||||
|
immersiveengineering_installed = Auxiliaries.isModLoaded("immersiveengineering");
|
||||||
|
updateOptouts();
|
||||||
|
without_crafting_table = isOptedOut(ModContent.TREATED_WOOD_CRAFTING_TABLE);
|
||||||
without_recipes_ = COMMON.without_recipes.get();
|
without_recipes_ = COMMON.without_recipes.get();
|
||||||
|
without_direct_slab_pickup = COMMON.without_direct_slab_pickup.get();
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------------
|
||||||
OptionalRecipeCondition.on_config(with_experimental_features_, without_recipes_, ModConfig::isOptedOut, ModConfig::isOptedOut);
|
|
||||||
EdFurnace.FurnaceTileEntity.on_config(COMMON.furnace_smelting_speed_percent.get(), COMMON.furnace_fuel_efficiency_percent.get(), COMMON.furnace_boost_energy_consumption.get());
|
EdFurnace.FurnaceTileEntity.on_config(COMMON.furnace_smelting_speed_percent.get(), COMMON.furnace_fuel_efficiency_percent.get(), COMMON.furnace_boost_energy_consumption.get());
|
||||||
EdChair.on_config(COMMON.without_chair_sitting.get(), COMMON.without_mob_chair_sitting.get(), COMMON.chair_mob_sitting_probability_percent.get(), COMMON.chair_mob_standup_probability_percent.get());
|
EdChair.on_config(COMMON.without_chair_sitting.get(), COMMON.without_mob_chair_sitting.get(), COMMON.chair_mob_sitting_probability_percent.get(), COMMON.chair_mob_standup_probability_percent.get());
|
||||||
EdLadderBlock.on_config(COMMON.without_ladder_speed_boost.get());
|
EdLadderBlock.on_config(COMMON.without_ladder_speed_boost.get());
|
||||||
|
@ -626,34 +700,15 @@ public class ModConfig
|
||||||
EdSlabSliceBlock.on_config(!COMMON.without_direct_slab_pickup.get());
|
EdSlabSliceBlock.on_config(!COMMON.without_direct_slab_pickup.get());
|
||||||
EdLabeledCrate.on_config(false);
|
EdLabeledCrate.on_config(false);
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------------
|
||||||
if(with_experimental_features_) {
|
|
||||||
ModEngineersDecor.logger().info("Config: EXPERIMENTAL FEATURES ENABLED.");
|
|
||||||
}
|
|
||||||
{
|
|
||||||
String inc = COMMON.pattern_includes.get().toLowerCase().replaceAll(ModEngineersDecor.MODID+":", "").replaceAll("[^*_,a-z0-9]", "");
|
|
||||||
if(COMMON.pattern_includes.get() != inc) COMMON.pattern_includes.set(inc);
|
|
||||||
if(!inc.isEmpty()) ModEngineersDecor.logger().info("Config pattern includes: '" + inc + "'");
|
|
||||||
String[] incl = inc.split(",");
|
|
||||||
includes_.clear();
|
|
||||||
for(int i=0; i< incl.length; ++i) {
|
|
||||||
incl[i] = incl[i].replaceAll("[*]", ".*?");
|
|
||||||
if(!incl[i].isEmpty()) includes_.add(incl[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
String exc = COMMON.pattern_includes.get().toLowerCase().replaceAll(ModEngineersDecor.MODID+":", "").replaceAll("[^*_,a-z0-9]", "");
|
|
||||||
if(!exc.isEmpty()) ModEngineersDecor.logger().info("Config pattern excludes: '" + exc + "'");
|
|
||||||
String[] excl = exc.split(",");
|
|
||||||
excludes_.clear();
|
|
||||||
for(int i=0; i< excl.length; ++i) {
|
|
||||||
excl[i] = excl[i].replaceAll("[*]", ".*?");
|
|
||||||
if(!excl[i].isEmpty()) excludes_.add(excl[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
// Check if the config is already synchronized or has to be synchronised.
|
// Check if the config is already synchronized or has to be synchronised.
|
||||||
server_config_.putBoolean("tree_cuttter_requires_power", COMMON.tree_cuttter_requires_power.get());
|
server_config_.putBoolean("tree_cuttter_requires_power", COMMON.tree_cuttter_requires_power.get());
|
||||||
server_config_.putBoolean("block_breaker_requires_power", COMMON.block_breaker_requires_power.get());
|
server_config_.putBoolean("block_breaker_requires_power", COMMON.block_breaker_requires_power.get());
|
||||||
|
{
|
||||||
|
String s = String.join(",", optouts_);
|
||||||
|
server_config_.putString("optout", s);
|
||||||
|
if(!s.isEmpty()) LOGGER.info("Opt-outs:" + s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ package wile.engineersdecor;
|
||||||
|
|
||||||
|
|
||||||
import wile.engineersdecor.blocks.*;
|
import wile.engineersdecor.blocks.*;
|
||||||
|
import wile.engineersdecor.libmc.blocks.StandardBlocks.BaseBlock;
|
||||||
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
import wile.engineersdecor.libmc.detail.Auxiliaries;
|
||||||
import wile.engineersdecor.libmc.blocks.StandardBlocks;
|
import wile.engineersdecor.libmc.blocks.StandardBlocks;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
|
@ -44,6 +45,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -713,12 +715,12 @@ public class ModContent
|
||||||
HALFSLAB_REBARCONCRETE,
|
HALFSLAB_REBARCONCRETE,
|
||||||
HALFSLAB_GASCONCRETE,
|
HALFSLAB_GASCONCRETE,
|
||||||
HALFSLAB_CONCRETE,
|
HALFSLAB_CONCRETE,
|
||||||
//HALFSLAB_TREATEDWOOD,
|
HALFSLAB_TREATEDWOOD,
|
||||||
//HALFSLAB_SHEETMETALIRON,
|
HALFSLAB_SHEETMETALIRON,
|
||||||
//HALFSLAB_SHEETMETALSTEEL,
|
HALFSLAB_SHEETMETALSTEEL,
|
||||||
//HALFSLAB_SHEETMETALCOPPER,
|
HALFSLAB_SHEETMETALCOPPER,
|
||||||
//HALFSLAB_SHEETMETALGOLD,
|
HALFSLAB_SHEETMETALGOLD,
|
||||||
//HALFSLAB_SHEETMETALALUMINIUM,
|
HALFSLAB_SHEETMETALALUMINIUM,
|
||||||
CONCRETE_WALL,
|
CONCRETE_WALL,
|
||||||
PANZERGLASS_BLOCK,
|
PANZERGLASS_BLOCK,
|
||||||
PANZERGLASS_SLAB,
|
PANZERGLASS_SLAB,
|
||||||
|
@ -949,10 +951,25 @@ public class ModContent
|
||||||
public static List<Block> getRegisteredBlocks()
|
public static List<Block> getRegisteredBlocks()
|
||||||
{ return Collections.unmodifiableList(registeredBlocks); }
|
{ return Collections.unmodifiableList(registeredBlocks); }
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public static List<Item> getRegisteredItems()
|
||||||
|
{ return new ArrayList<>(); }
|
||||||
|
|
||||||
public static final void registerBlocks(final RegistryEvent.Register<Block> event)
|
public static final void registerBlocks(final RegistryEvent.Register<Block> event)
|
||||||
{
|
{
|
||||||
if(Auxiliaries.isModLoaded("immersiveengineering")) Auxiliaries.logInfo("Immersive Engineering also installed ...");
|
boolean ie_available = Auxiliaries.isModLoaded("immersiveengineering");
|
||||||
|
if(ie_available) {
|
||||||
|
Auxiliaries.logInfo("Immersive Engineering also installed ...");
|
||||||
registeredBlocks.addAll(allBlocks());
|
registeredBlocks.addAll(allBlocks());
|
||||||
|
} else {
|
||||||
|
registeredBlocks.addAll(allBlocks().stream()
|
||||||
|
.filter(block->
|
||||||
|
((!(block instanceof BaseBlock)) || ((((BaseBlock)block).config & DecorBlock.CFG_HARD_IE_DEPENDENT)==0))
|
||||||
|
|| (block == HALFSLAB_CONCRETE) // special case for 1.14 to prevent mod update issues
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
);
|
||||||
|
}
|
||||||
for(Block e:registeredBlocks) event.getRegistry().register(e);
|
for(Block e:registeredBlocks) event.getRegistry().register(e);
|
||||||
Auxiliaries.logInfo("Registered " + Integer.toString(registeredBlocks.size()) + " blocks.");
|
Auxiliaries.logInfo("Registered " + Integer.toString(registeredBlocks.size()) + " blocks.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ public class EdElectricalFurnace
|
||||||
public static final int HEAT_INCREMENT = 20;
|
public static final int HEAT_INCREMENT = 20;
|
||||||
public static final int MAX_ENERGY_TRANSFER = 1024;
|
public static final int MAX_ENERGY_TRANSFER = 1024;
|
||||||
public static final int MAX_ENERGY_BUFFER = 32000;
|
public static final int MAX_ENERGY_BUFFER = 32000;
|
||||||
public static final int MAX_SPEED_SETTING = 2;
|
public static final int MAX_SPEED_SETTING = 3;
|
||||||
public static final int NUM_OF_SLOTS = 7;
|
public static final int NUM_OF_SLOTS = 7;
|
||||||
public static final int SMELTING_INPUT_SLOT_NO = 0;
|
public static final int SMELTING_INPUT_SLOT_NO = 0;
|
||||||
public static final int SMELTING_AUX_SLOT_NO = 1;
|
public static final int SMELTING_AUX_SLOT_NO = 1;
|
||||||
|
@ -196,7 +196,7 @@ public class EdElectricalFurnace
|
||||||
proc_time_needed_ = nbt.getInt("CookTimeTotal");
|
proc_time_needed_ = nbt.getInt("CookTimeTotal");
|
||||||
energy_stored_ = nbt.getInt("Energy");
|
energy_stored_ = nbt.getInt("Energy");
|
||||||
speed_ = nbt.getInt("SpeedSetting");
|
speed_ = nbt.getInt("SpeedSetting");
|
||||||
speed_ = (speed_ < 0) ? (1) : ((speed_>3) ? 3 : speed_);
|
speed_ = (speed_ < 0) ? (1) : ((speed_>MAX_SPEED_SETTING) ? MAX_SPEED_SETTING : speed_);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void writenbt(CompoundNBT nbt)
|
protected void writenbt(CompoundNBT nbt)
|
||||||
|
@ -205,7 +205,7 @@ public class EdElectricalFurnace
|
||||||
nbt.putInt("CookTime", MathHelper.clamp(proc_time_elapsed_, 0, MAX_BURNTIME));
|
nbt.putInt("CookTime", MathHelper.clamp(proc_time_elapsed_, 0, MAX_BURNTIME));
|
||||||
nbt.putInt("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 0, MAX_BURNTIME));
|
nbt.putInt("CookTimeTotal", MathHelper.clamp(proc_time_needed_, 0, MAX_BURNTIME));
|
||||||
nbt.putInt("Energy", MathHelper.clamp(energy_stored_, 0, MAX_ENERGY_BUFFER));
|
nbt.putInt("Energy", MathHelper.clamp(energy_stored_, 0, MAX_ENERGY_BUFFER));
|
||||||
nbt.putInt("SpeedSetting", MathHelper.clamp(speed_, -1, MAX_SPEED_SETTING));
|
nbt.putInt("SpeedSetting", MathHelper.clamp(speed_, 0, MAX_SPEED_SETTING));
|
||||||
ItemStackHelper.saveAllItems(nbt, stacks_);
|
ItemStackHelper.saveAllItems(nbt, stacks_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,7 +492,7 @@ public class EdElectricalFurnace
|
||||||
} else if(energy_stored_ >= (MAX_ENERGY_BUFFER/2)) {
|
} else if(energy_stored_ >= (MAX_ENERGY_BUFFER/2)) {
|
||||||
enabled_ = true;
|
enabled_ = true;
|
||||||
}
|
}
|
||||||
if((!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty()) && (enabled_) && (speed_>0) && (speed_<4)) {
|
if((!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty()) && (enabled_) && (speed_>0) && (speed_<=MAX_SPEED_SETTING)) {
|
||||||
IRecipe last_recipe = currentRecipe();
|
IRecipe last_recipe = currentRecipe();
|
||||||
updateCurrentRecipe();
|
updateCurrentRecipe();
|
||||||
if(currentRecipe() != last_recipe) {
|
if(currentRecipe() != last_recipe) {
|
||||||
|
@ -769,7 +769,7 @@ public class EdElectricalFurnace
|
||||||
{
|
{
|
||||||
if(!(inventory_ instanceof ElectricalFurnaceTileEntity)) return;
|
if(!(inventory_ instanceof ElectricalFurnaceTileEntity)) return;
|
||||||
ElectricalFurnaceTileEntity te = (ElectricalFurnaceTileEntity)inventory_;
|
ElectricalFurnaceTileEntity te = (ElectricalFurnaceTileEntity)inventory_;
|
||||||
if(nbt.contains("speed")) te.speed_ = MathHelper.clamp(nbt.getInt("speed"), 0, 3);
|
if(nbt.contains("speed")) te.speed_ = MathHelper.clamp(nbt.getInt("speed"), 0, ElectricalFurnaceTileEntity.MAX_SPEED_SETTING);
|
||||||
te.markDirty();
|
te.markDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,14 @@ import mezz.jei.api.registration.IRecipeTransferRegistration;
|
||||||
import mezz.jei.api.constants.VanillaTypes;
|
import mezz.jei.api.constants.VanillaTypes;
|
||||||
import mezz.jei.api.runtime.IJeiRuntime;
|
import mezz.jei.api.runtime.IJeiRuntime;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.BlockItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import java.util.ArrayList;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@mezz.jei.api.JeiPlugin
|
@mezz.jei.api.JeiPlugin
|
||||||
public class JEIPlugin implements mezz.jei.api.IModPlugin
|
public class JEIPlugin implements mezz.jei.api.IModPlugin
|
||||||
|
@ -48,15 +52,21 @@ public class JEIPlugin implements mezz.jei.api.IModPlugin
|
||||||
@Override
|
@Override
|
||||||
public void onRuntimeAvailable(IJeiRuntime jeiRuntime)
|
public void onRuntimeAvailable(IJeiRuntime jeiRuntime)
|
||||||
{
|
{
|
||||||
List<ItemStack> blacklisted = new ArrayList<>();
|
HashSet<Item> blacklisted = new HashSet<>();
|
||||||
for(Block e: ModContent.getRegisteredBlocks()) {
|
for(Block e: ModContent.getRegisteredBlocks()) {
|
||||||
if(ModConfig.isOptedOut(e)) {
|
if(ModConfig.isOptedOut(e) && (e.asItem().getRegistryName().getPath()).equals((e.getRegistryName().getPath()))) {
|
||||||
blacklisted.add(new ItemStack(e.asItem()));
|
blacklisted.add(e.asItem());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Item e: ModContent.getRegisteredItems()) {
|
||||||
|
if(ModConfig.isOptedOut(e) && (!(e instanceof BlockItem))) {
|
||||||
|
blacklisted.add(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!blacklisted.isEmpty()) {
|
if(!blacklisted.isEmpty()) {
|
||||||
|
List<ItemStack> blacklist = blacklisted.stream().map(ItemStack::new).collect(Collectors.toList());
|
||||||
try {
|
try {
|
||||||
jeiRuntime.getIngredientManager().removeIngredientsAtRuntime(VanillaTypes.ITEM, blacklisted);
|
jeiRuntime.getIngredientManager().removeIngredientsAtRuntime(VanillaTypes.ITEM, blacklist);
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
ModEngineersDecor.logger().warn("Exception in JEI opt-out processing: '" + e.getMessage() + "', skipping further JEI optout processing.");
|
ModEngineersDecor.logger().warn("Exception in JEI opt-out processing: '" + e.getMessage() + "', skipping further JEI optout processing.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,12 @@ package wile.engineersdecor.libmc.detail;
|
||||||
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.inventory.ItemStackHelper;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -86,7 +88,9 @@ public class Inventories
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack checked(ItemStack stack)
|
private static ItemStack checked(ItemStack stack)
|
||||||
{ return stack.isEmpty() ? ItemStack.EMPTY : stack; } // explicit EMPTY return
|
{ return stack.isEmpty() ? ItemStack.EMPTY : stack; }
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public static class SlotRange
|
public static class SlotRange
|
||||||
{
|
{
|
||||||
|
@ -138,7 +142,7 @@ public class Inventories
|
||||||
for(int i = start_slot; i < end_slot; ++i) {
|
for(int i = start_slot; i < end_slot; ++i) {
|
||||||
final int sno = reverse ? (end_slot-1-i) : (i);
|
final int sno = reverse ? (end_slot-1-i) : (i);
|
||||||
final ItemStack stack = inventory.getStackInSlot(sno);
|
final ItemStack stack = inventory.getStackInSlot(sno);
|
||||||
if(stack.isEmpty() || (!inventory.isItemValidForSlot(sno, mvstack))) {
|
if(stack.isEmpty()) {
|
||||||
empties[sno] = true;
|
empties[sno] = true;
|
||||||
} else if(areItemStacksIdentical(stack, mvstack)) {
|
} else if(areItemStacksIdentical(stack, mvstack)) {
|
||||||
matches[sno] = true;
|
matches[sno] = true;
|
||||||
|
@ -148,7 +152,7 @@ public class Inventories
|
||||||
// first iteration: fillup existing stacks
|
// first iteration: fillup existing stacks
|
||||||
for(int i = start_slot; i < end_slot; ++i) {
|
for(int i = start_slot; i < end_slot; ++i) {
|
||||||
final int sno = reverse ? (end_slot-1-i) : (i);
|
final int sno = reverse ? (end_slot-1-i) : (i);
|
||||||
if(empties[sno] || !matches[sno]) continue;
|
if((empties[sno]) || (!matches[sno])) continue;
|
||||||
final ItemStack stack = inventory.getStackInSlot(sno);
|
final ItemStack stack = inventory.getStackInSlot(sno);
|
||||||
int nmax = Math.min(limit_left, stack.getMaxStackSize() - stack.getCount());
|
int nmax = Math.min(limit_left, stack.getMaxStackSize() - stack.getCount());
|
||||||
if(mvstack.getCount() <= nmax) {
|
if(mvstack.getCount() <= nmax) {
|
||||||
|
@ -180,7 +184,7 @@ public class Inventories
|
||||||
}
|
}
|
||||||
for(i=insert_start;i < insert_end; ++i) {
|
for(i=insert_start;i < insert_end; ++i) {
|
||||||
final int sno = reverse ? (end_slot-1-i) : (i);
|
final int sno = reverse ? (end_slot-1-i) : (i);
|
||||||
if(!empties[sno]) continue;
|
if((!empties[sno]) || (!inventory.isItemValidForSlot(sno, mvstack))) continue;
|
||||||
int nmax = Math.min(limit_left, mvstack.getCount());
|
int nmax = Math.min(limit_left, mvstack.getCount());
|
||||||
ItemStack moved = mvstack.copy();
|
ItemStack moved = mvstack.copy();
|
||||||
moved.setCount(nmax);
|
moved.setCount(nmax);
|
||||||
|
@ -195,7 +199,7 @@ public class Inventories
|
||||||
final int sno = reverse ? (end_slot-1-i) : (i);
|
final int sno = reverse ? (end_slot-1-i) : (i);
|
||||||
if(!matches[sno]) continue;
|
if(!matches[sno]) continue;
|
||||||
int ii = (empties[sno-1]) ? (sno-1) : (empties[sno+1] ? (sno+1) : -1);
|
int ii = (empties[sno-1]) ? (sno-1) : (empties[sno+1] ? (sno+1) : -1);
|
||||||
if(ii >= 0) {
|
if((ii >= 0) && (inventory.isItemValidForSlot(ii, mvstack))) {
|
||||||
int nmax = Math.min(limit_left, mvstack.getCount());
|
int nmax = Math.min(limit_left, mvstack.getCount());
|
||||||
ItemStack moved = mvstack.copy();
|
ItemStack moved = mvstack.copy();
|
||||||
moved.setCount(nmax);
|
moved.setCount(nmax);
|
||||||
|
@ -209,7 +213,7 @@ public class Inventories
|
||||||
// third iteration: use any empty slots
|
// third iteration: use any empty slots
|
||||||
for(int i = start_slot; i < end_slot; ++i) {
|
for(int i = start_slot; i < end_slot; ++i) {
|
||||||
final int sno = reverse ? (end_slot-1-i) : (i);
|
final int sno = reverse ? (end_slot-1-i) : (i);
|
||||||
if(!empties[sno]) continue;
|
if((!empties[sno]) || (!inventory.isItemValidForSlot(sno, mvstack))) continue;
|
||||||
int nmax = Math.min(limit_left, mvstack.getCount());
|
int nmax = Math.min(limit_left, mvstack.getCount());
|
||||||
ItemStack placed = mvstack.copy();
|
ItemStack placed = mvstack.copy();
|
||||||
placed.setCount(nmax);
|
placed.setCount(nmax);
|
||||||
|
@ -303,4 +307,33 @@ public class Inventories
|
||||||
{ return inventory.isItemValidForSlot(offset+index, stack); }
|
{ return inventory.isItemValidForSlot(offset+index, stack); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
public static NonNullList<ItemStack> readNbtStacks(CompoundNBT nbt, String key, int size)
|
||||||
|
{
|
||||||
|
NonNullList<ItemStack> stacks = NonNullList.withSize(size, ItemStack.EMPTY);
|
||||||
|
if((nbt == null) || (!nbt.contains(key,10))) return stacks;
|
||||||
|
CompoundNBT stacknbt = nbt.getCompound(key);
|
||||||
|
ItemStackHelper.loadAllItems(stacknbt, stacks);
|
||||||
|
return stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CompoundNBT writeNbtStacks(CompoundNBT nbt, String key, NonNullList<ItemStack> stacks, boolean omit_trailing_empty)
|
||||||
|
{
|
||||||
|
CompoundNBT stacknbt = new CompoundNBT();
|
||||||
|
if(omit_trailing_empty) {
|
||||||
|
for(int i=stacks.size()-1; i>=0; --i) {
|
||||||
|
if(!stacks.get(i).isEmpty()) break;
|
||||||
|
stacks.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemStackHelper.saveAllItems(stacknbt, stacks);
|
||||||
|
if(nbt == null) nbt = new CompoundNBT();
|
||||||
|
nbt.put(key, stacknbt);
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CompoundNBT writeNbtStacks(CompoundNBT nbt, String key, NonNullList<ItemStack> stacks)
|
||||||
|
{ return writeNbtStacks(nbt, key, stacks, false); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_aluminum"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_aluminum"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_copper"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_copper"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_gold"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_gold"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_iron"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_iron"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s9_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sa_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sb_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sc_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_sd_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:blocks/sheetmetal_steel"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_se_model","textures":{"all":"immersiveengineering:block/metal/sheetmetal_steel"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s0_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s1_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s2_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s3_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s4_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s5_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s6_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s7_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
|
@ -1 +1 @@
|
||||||
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:blocks/treated_wood"}}
|
{"parent":"engineersdecor:block/slab/generic/halfslab_s8_model","textures":{"all":"immersiveengineering:block/wooden_decoration/treated_wood"}}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue