diff --git a/1.12/gradle.properties b/1.12/gradle.properties index f58e069..1eaf9ad 100644 --- a/1.12/gradle.properties +++ b/1.12/gradle.properties @@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G version_minecraft=1.12.2 version_forge=14.23.5.2768 version_jei=4.10.0.198 -version_engineersdecor=1.0.3-b2 +version_engineersdecor=1.0.3-b3 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 0addee1..73e7050 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.3-b3": "[A] Added sitting on treated wood stool, Zombies included.\n[A] Added steel framed window.\n[A] Added treated wood pole support head/foot and heavy duty support.\n[A] Added language Russian language support, thanks to yaroslav4167.\n[A] Added config for furnace smelting speed (percent of vanilla furnace).\n[A] Added config for furnace fuel efficiency (in percent, ref is vanilla).\n[F] Treated pole model changed to circumvent potential texture bleeding.\n[M] Treated wood table bounding box aligned with the legs.\n[M] Treated wood crafting table bounding box aligned with the legs.\n[M] Treated wood window can be vertically placed for rooflights.\n[M] Treated wood window can be vertically placed for rooflights.", "1.0.3-b2": "[A] Added config options for selective feature opt-outs (soft opt-out).\n[A] Added config skip registration of opt-out features (hard opt-out).\n[A] Added config to disable all internal recipes (for packs).\n[A] Added JEI API adapter for soft opt-outs.\n[A] Added lab furnace recipe override config to smelt ores to nuggets that would normally be smelted into ingots. Can be changed on-the-fly.", "1.0.3-b1": "[A] Added small laboratory furnace.\n[M] Panzer glass opacity/light level set explicitly 0.", "1.0.2": "[R] Release based on v1.0.2-b3 * Fixes: Spawning. * Crafting table: Shift-click. * Ladders: Faster climbing/descending. * Concrete: Rebar tiles, tile stairs. * Treated wood: window, windowsill. * Slag brick: wall. * Panzer glass: added. * Recipes: Adaptions, added decompositions.", @@ -20,6 +21,6 @@ }, "promos": { "1.12.2-recommended": "1.0.2", - "1.12.2-latest": "1.0.3-b2" + "1.12.2-latest": "1.0.3-b3" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index f30de24..82e8a83 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,6 +10,18 @@ Mod sources for Minecraft version 1.12.2. ---- ## Revision history + - v1.0.3-b3 [A] Added sitting on treated wood stool, Zombies included. + [A] Added steel framed window. + [A] Added treated wood pole support head/foot and heavy duty support. + [A] Added language Russian language support, thanks to yaroslav4167. + [A] Added config for furnace smelting speed (percent of vanilla furnace). + [A] Added config for furnace fuel efficiency (in percent, ref is vanilla). + [F] Treated pole model changed to circumvent potential texture bleeding. + [M] Treated wood table bounding box aligned with the legs. + [M] Treated wood crafting table bounding box aligned with the legs. + [M] Treated wood window can be vertically placed for rooflights. + [M] Treated wood window can be vertically placed for rooflights. + - v1.0.3-b2 [A] Added config options for selective feature opt-outs (soft opt-out). [A] Added config skip registration of opt-out features (hard opt-out). [A] Added config to disable all internal recipes (for packs). diff --git a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java index 10edc21..98be6f6 100644 --- a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java +++ b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java @@ -11,17 +11,16 @@ package wile.engineersdecor; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.fml.common.network.IGuiHandler; import net.minecraftforge.fml.common.network.NetworkRegistry; -import wile.engineersdecor.blocks.BlockDecorCraftingTable; -import wile.engineersdecor.blocks.BlockDecorFurnace; -import wile.engineersdecor.blocks.BlockDecorLadder; +import net.minecraftforge.fml.common.registry.EntityRegistry; +import wile.engineersdecor.blocks.*; import wile.engineersdecor.detail.ModConfig; -import wile.engineersdecor.blocks.ModBlocks; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; @@ -93,6 +92,7 @@ public class ModEngineersDecor { proxy.init(event); NetworkRegistry.INSTANCE.registerGuiHandler(this, new ModEngineersDecor.GuiHandler()); + EntityRegistry.registerModEntity(new ResourceLocation(ModEngineersDecor.MODID, "chair_entity"), BlockDecorChair.EntityChair.class,"DecorChair",0,this,80,1,false); } @Mod.EventHandler diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java index 1d52fea..fb8e184 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java @@ -46,13 +46,16 @@ public class BlockDecor extends Block public static final long CFG_HORIZIONTAL = 0x0000000000000002L; // horizontal block, affects bounding box calculation at construction time and placement public static final long CFG_LOOK_PLACEMENT = 0x0000000000000004L; // placed in direction the player is looking when placing. public static final long CFG_FACING_PLACEMENT = 0x0000000000000008L; // placed on the facing the player has clicked. - public static final long CFG_OPPOSITE_PLACEMENT = 0x0000000000000020L; // placed placed in the opposite direction of the face the player clicked. + public static final long CFG_OPPOSITE_PLACEMENT = 0x0000000000000010L; // placed placed in the opposite direction of the face the player clicked. + public static final long CFG_FLIP_PLACEMENT_IF_SAME = 0x0000000000000020L; // placement direction flipped if an instance of the same class was clicked public static final long CFG_TRANSLUCENT = 0x0000000000000040L; // indicates a block/pane is glass like (transparent, etc) public static final long CFG_LIGHT_VALUE_MASK = 0x0000000000000f00L; // fixed value for getLightValue() public static final long CFG_LIGHT_VALUE_SHIFT = 8L; public static final long CFG_LAB_FURNACE_CRUDE = 0x0000000000010000L; // For DecorFurnace, denotes that it is a crude furnace. - public BlockDecor(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound) + protected final AxisAlignedBB aabb; + + public BlockDecor(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nullable AxisAlignedBB boundingbox) { super((material!=null) ? (material) : (Material.IRON)); setCreativeTab(ModEngineersDecor.CREATIVE_TAB_ENGINEERSDECOR); @@ -64,13 +67,11 @@ public class BlockDecor extends Block setSoundType((sound==null) ? SoundType.STONE : sound); setLightOpacity(0); this.config = config; + this.aabb = (boundingbox==null) ? (FULL_BLOCK_AABB) : (boundingbox); } - @Override - @Nullable - @SuppressWarnings("deprecation") - public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) - { return getBoundingBox(state, world, pos); } + public BlockDecor(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound) + { this(registryName, config, material, hardness, resistance, sound, null); } @Override @SideOnly(Side.CLIENT) @@ -144,6 +145,17 @@ public class BlockDecor extends Block public IBlockState withMirror(IBlockState state, Mirror mirrorIn) { return state; } + @Override + @Nullable + @SuppressWarnings("deprecation") + public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) + { return getBoundingBox(state, world, pos); } + + @Override + @SuppressWarnings("deprecation") + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) + { return aabb; } + @Override public boolean hasTileEntity(IBlockState state) { return false; } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java index 610bb2c..ba82522 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorChair.java @@ -10,17 +10,143 @@ package wile.engineersdecor.blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.*; import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import wile.engineersdecor.ModEngineersDecor; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.List; +import java.util.Random; public class BlockDecorChair extends BlockDecorDirected { - public BlockDecorChair(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + private static boolean sitting_enabled = true; + private static double sitting_probability = 0.1; + private static double standup_probability = 0.01; + + public static void on_config(boolean without_sitting, boolean without_mob_sitting, double sitting_probability_percent, double standup_probability_percent) { - super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); - setLightOpacity(0); + sitting_enabled = (!without_sitting); + sitting_probability = (without_sitting||without_mob_sitting) ? 0.0 : MathHelper.clamp(sitting_probability_percent/100, 0, 0.9); + standup_probability = (without_sitting||without_mob_sitting) ? 1.0 : MathHelper.clamp(standup_probability_percent/100, 1e-6, 1e-2); + ModEngineersDecor.logger.info("Config chairs: " + sitting_enabled + ", sit: " + sitting_probability, ", stand up: " + standup_probability); } + public BlockDecorChair(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + { super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); setLightOpacity(0); setTickRandomly(true); } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) + { if(sitting_enabled && (!world.isRemote)) { EntityChair.sit(world, player, pos); } return true; } + + @Override + public void onEntityCollision(World world, BlockPos pos, IBlockState state, Entity entity) + { if(sitting_enabled && (Math.random() < sitting_probability) && (entity instanceof EntityMob)) EntityChair.sit(world, (EntityLivingBase)entity, pos); } + + @Override + public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) + { + if((!sitting_enabled) || (sitting_probability < 1e-6)) return; + final List entities = world.getEntitiesWithinAABB(EntityMob.class, new AxisAlignedBB(pos).grow(2,1,2).expand(0,1,0)); + if(entities.isEmpty()) return; + int index = rand.nextInt(entities.size()); + if((index < 0) || (index >= entities.size())) return; + EntityChair.sit(world, entities.get(index), pos); + } + + //-------------------------------------------------------------------------------------------------------------------- + // Riding entity for sitting + //-------------------------------------------------------------------------------------------------------------------- + + public static class EntityChair extends Entity + { + public final double x_offset = 0.5d; + public final double y_offset = 0.4d; + public final double z_offset = 0.5d; + private int t_tick = 0; + private int t_sit = 0; + public BlockPos chair_pos = new BlockPos(0,0,0); + + public EntityChair(World world) + { super(world); preventEntitySpawning=true; noClip=true; setSize(2e-3f, 2e-3f); } + + public EntityChair(World world, BlockPos pos) + { + this(world); + setPosition(pos.getX()+x_offset,pos.getY()+y_offset,pos.getZ()+z_offset); + chair_pos = pos; + t_sit = 5; + } + + public static boolean accepts_mob(EntityLivingBase entity) + { + if(!(entity instanceof net.minecraft.entity.monster.EntityMob)) return false; + if((entity.height > 2.5) || (entity.width > 2.0)) return false; + if(entity instanceof net.minecraft.entity.monster.EntityZombie) return true; + if(entity instanceof net.minecraft.entity.monster.EntityZombieVillager) return true; + if(entity instanceof net.minecraft.entity.monster.EntityPigZombie) return true; + if(entity instanceof net.minecraft.entity.monster.EntityHusk) return true; + if(entity instanceof net.minecraft.entity.monster.EntityStray) return true; + if(entity instanceof net.minecraft.entity.monster.EntitySkeleton) return true; + if(entity instanceof net.minecraft.entity.monster.EntityWitherSkeleton) return true; + return false; + } + + public static void sit(World world, EntityLivingBase sitter, BlockPos pos) + { + if(!sitting_enabled) return; + if((world==null) || (world.isRemote) || (sitter==null) || (pos==null)) return; + if((!(sitter instanceof EntityPlayer)) && (!accepts_mob(sitter))) return; + if(!world.getEntitiesWithinAABB(EntityChair.class, new AxisAlignedBB(pos)).isEmpty()) return; + if(sitter.isBeingRidden() || (sitter.isDead) || (sitter.isRiding())) return; + if((!world.isAirBlock(pos.up())) || (!world.isAirBlock(pos.up(2)))) return; + EntityChair chair = new EntityChair(world, pos); + if(world.spawnEntity(chair)) sitter.startRiding(chair); + } + + @Override + protected void entityInit() + {} + + @Override + protected void writeEntityToNBT(NBTTagCompound compound) + {} + + @Override + protected void readEntityFromNBT(NBTTagCompound compound) + {} + + @Override + public double getMountedYOffset() + { return 0.0; } + + @Override + public void onUpdate() + { + if((world.isRemote) || (--t_tick > 0)) return; + t_tick = 20; + if(--t_sit > 0) return; + Entity sitter = getPassengers().isEmpty() ? null : getPassengers().get(0); + if((sitter==null) || (sitter.isDead)) { setDead(); return; } + boolean abort = !sitting_enabled; + final IBlockState state = world.getBlockState(chair_pos); + if((state==null) || (!(state.getBlock() instanceof BlockDecorChair))) abort = true; + if(!world.isAirBlock(chair_pos.up())) abort = true; + if((!(sitter instanceof EntityPlayer)) && (Math.random() < standup_probability)) abort = true; + if(abort) { + for(Entity e:getPassengers()) e.dismountRidingEntity(); + setDead(); + } + } + } } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java index ff70643..9bdd4e8 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java @@ -1,10 +1,11 @@ /* - * @file BlockDecorFull.java + * @file BlockDecorCraftingTable.java * @author Stefan Wilhelm (wile) * @copyright (C) 2019 Stefan Wilhelm * @license MIT (see https://opensource.org/licenses/MIT) * - * Full block characteristics class. + * Mod crafting table, different style, UI and fetature set + * than vanilla crafting table. */ package wile.engineersdecor.blocks; diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java index ddf7a18..21f0d87 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java @@ -222,7 +222,7 @@ public class BlockDecorFurnace extends BlockDecorDirected { final int tc=te.getField(2), T=te.getField(3); return ((T>0) && (tc>0)) ? (tc * pixels / T) : (0); } private int flame_px(int pixels) - { int ibt = te.getField(1); return ((te.getField(0) * pixels) / ((ibt>0) ? (ibt) : (te.proc_speed_interval_))); } + { int ibt = te.getField(1); return ((te.getField(0) * pixels) / ((ibt>0) ? (ibt) : (BTileEntity.proc_speed_interval_))); } } //-------------------------------------------------------------------------------------------------------------------- @@ -455,22 +455,31 @@ public class BlockDecorFurnace extends BlockDecorDirected private final IItemHandler sided_itemhandler_down_ = new SidedInvWrapper(this, EnumFacing.DOWN); private final IItemHandler sided_itemhandler_sides_ = new SidedInvWrapper(this, EnumFacing.WEST); + private static int proc_speed_interval_ = DEFAULT_SPEED_INTERVAL; + private static double proc_fuel_efficiency_ = 1.0; + private int tick_timer_; private int fifo_timer_; private int burntime_left_; private int fuel_burntime_; private int proc_time_elapsed_; private int proc_time_needed_; - private int proc_speed_interval_; private NonNullList stacks_; + public static void on_config(int speed_percent, int fuel_efficiency_percent) + { + double ratio = (100.0 / MathHelper.clamp(speed_percent, 10, 500)) ; + proc_speed_interval_ = MathHelper.clamp((int)(ratio * VANILLA_FURNACE_SPEED_INTERVAL), 20, 400); + proc_fuel_efficiency_ = ((double) MathHelper.clamp(fuel_efficiency_percent, 10, 500)) / 100; + ModEngineersDecor.logger.info("Config lab furnace interval:" + proc_speed_interval_ + ", efficiency:" + proc_fuel_efficiency_); + } + public BTileEntity() { reset(); } public void reset() { stacks_ = NonNullList.withSize(NUM_OF_SLOTS, ItemStack.EMPTY); - proc_speed_interval_ = DEFAULT_SPEED_INTERVAL; proc_time_elapsed_ = 0; proc_time_needed_ = 0; burntime_left_ = 0; @@ -658,8 +667,8 @@ public class BlockDecorFurnace extends BlockDecorDirected ItemStack fuel = stacks_.get(SMELTING_FUEL_SLOT_NO); if(isBurning() || (!fuel.isEmpty()) && (!(stacks_.get(SMELTING_INPUT_SLOT_NO)).isEmpty())) { if(!isBurning() && canSmelt()) { - burntime_left_ = getItemBurnTime(fuel); - fuel_burntime_ = ((burntime_left_ * proc_speed_interval_) / VANILLA_FURNACE_SPEED_INTERVAL); + burntime_left_ = (int)MathHelper.clamp((proc_fuel_efficiency_ * getItemBurnTime(fuel)), 0, MAX_BURNTIME); + fuel_burntime_ = (burntime_left_ * proc_speed_interval_) / VANILLA_FURNACE_SPEED_INTERVAL; if(isBurning()) { dirty = true; if(!fuel.isEmpty()) { diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorGlassBlock.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorGlassBlock.java index 5983c0e..468f461 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorGlassBlock.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorGlassBlock.java @@ -1,10 +1,10 @@ /* - * @file BlockDecorFull.java + * @file BlockDecorGlassBlock.java * @author Stefan Wilhelm (wile) * @copyright (C) 2019 Stefan Wilhelm * @license MIT (see https://opensource.org/licenses/MIT) * - * Full block characteristics class. + * Full block-size glass blocks. */ package wile.engineersdecor.blocks; diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java index 49a35f3..a6524e5 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java @@ -44,7 +44,11 @@ public class BlockDecorLadder extends BlockLadder protected static final AxisAlignedBB EDLADDER_EAST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.EAST, false); protected static final AxisAlignedBB EDLADDER_WEST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.WEST, false); protected static final AxisAlignedBB EDLADDER_NORTH_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.NORTH, false); + protected static final double ladder_speed = 0.7; + protected static boolean with_ladder_speed_boost = true; + public static final void on_config(boolean without_ladder_speed_boost) + { with_ladder_speed_boost = !without_ladder_speed_boost; } public BlockDecorLadder(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound) { @@ -113,15 +117,16 @@ public class BlockDecorLadder extends BlockLadder // Player update event, forwarded from the main mod instance. public static void onPlayerUpdateEvent(final EntityPlayer player) { + if(!with_ladder_speed_boost) return; if(!player.isOnLadder() || (player.isSneaking()) || (player.isSpectator())) return; - if((Math.abs(player.motionY) < 0.1) || (Math.abs(player.motionY) > 0.7) || ((player.getLookVec().y > 0) != (player.motionY > 0))) return; + if((Math.abs(player.motionY) < 0.1) || (Math.abs(player.motionY) > ladder_speed) || ((player.getLookVec().y > 0) != (player.motionY > 0))) return; if(Math.abs(player.getLookVec().y) < 0.9) return; final BlockPos pos = new BlockPos(player.posX, player.posY, player.posZ); if(!(player.world.getBlockState(pos).getBlock() instanceof BlockDecorLadder)) return; player.fallDistance = 0; - player.motionY = (player.motionY < -0.25) ? (-0.7) : ((player.motionY > 0.25) ? (0.7) : (player.motionY)); - player.motionX = MathHelper.clamp(player.motionX, -0.15, 0.15); - player.motionZ = MathHelper.clamp(player.motionX, -0.15, 0.15); + player.motionY = (player.motionY < -0.25) ? (-ladder_speed) : ((player.motionY > 0.25) ? (ladder_speed) : (player.motionY)); + player.motionX = MathHelper.clamp(player.motionX, -0.05, 0.05); + player.motionZ = MathHelper.clamp(player.motionZ, -0.05, 0.05); player.move(MoverType.PLAYER, player.motionX, player.motionY, player.motionZ); } } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorStraightPole.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorStraightPole.java new file mode 100644 index 0000000..7dc7ad7 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorStraightPole.java @@ -0,0 +1,40 @@ +/* + * @file BlockDecorStraightPole.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Smaller (cutout) block with a defined facing. + */ +package wile.engineersdecor.blocks; + +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + + +public class BlockDecorStraightPole extends BlockDecorDirected +{ + public BlockDecorStraightPole(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + { super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); } + + @Override + @SuppressWarnings("deprecation") + public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) + { + IBlockState state = super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer); + if((config & CFG_FLIP_PLACEMENT_IF_SAME) != 0) { + if(world.getBlockState(pos.offset(facing.getOpposite())).getBlock() instanceof BlockDecorStraightPole) { + state = state.withProperty(FACING, state.getValue(FACING).getOpposite()); + } + } + return state; + } +} diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java index 3b6082d..d85a77a 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java @@ -66,7 +66,7 @@ public class BlockDecorWall extends BlockDecor new AxisAlignedBB(d_0, d_0, d_0, d_1, d_1, d_b), new AxisAlignedBB(d_0, d_0, d_0, d_1, d_1, d_1) }; - private static final double clip_height = 1.5d; + private static final double clip_height = 1.8d; protected static final AxisAlignedBB[] CLIP_AABB_BY_INDEX = new AxisAlignedBB[] { AABB_BY_INDEX[0].setMaxY(clip_height), AABB_BY_INDEX[1].setMaxY(clip_height), AABB_BY_INDEX[2].setMaxY(clip_height), AABB_BY_INDEX[3].setMaxY(clip_height), AABB_BY_INDEX[4].setMaxY(clip_height), AABB_BY_INDEX[5].setMaxY(clip_height), AABB_BY_INDEX[6].setMaxY(clip_height), AABB_BY_INDEX[7].setMaxY(clip_height), AABB_BY_INDEX[8].setMaxY(clip_height), AABB_BY_INDEX[9].setMaxY(clip_height), AABB_BY_INDEX[10].setMaxY(clip_height), AABB_BY_INDEX[11].setMaxY(clip_height), AABB_BY_INDEX[12].setMaxY(clip_height), AABB_BY_INDEX[13].setMaxY(clip_height), AABB_BY_INDEX[14].setMaxY(clip_height), AABB_BY_INDEX[15].setMaxY(clip_height) }; public BlockDecorWall(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound) diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWindow.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWindow.java new file mode 100644 index 0000000..93edf43 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorWindow.java @@ -0,0 +1,59 @@ +/* + * @file BlockDecorWindow.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Mod windows. + */ +package wile.engineersdecor.blocks; + +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class BlockDecorWindow extends BlockDecorDirected +{ + + public BlockDecorWindow(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + { super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); } + + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getRenderLayer() + { return BlockRenderLayer.TRANSLUCENT; } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) + { return true; } + + @Override + public boolean isFullCube(IBlockState state) + { return false; } + + @Override + public boolean isNormalCube(IBlockState state) + { return false; } + + @Override + public boolean isOpaqueCube(IBlockState state) + { return false; } + + @Override + public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face) + { return false; } + + @Override + public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer) + { return (layer==BlockRenderLayer.TRANSLUCENT) || (layer==BlockRenderLayer.CUTOUT); } +} diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java index 3c91ee3..24c42ff 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java @@ -12,18 +12,18 @@ */ package wile.engineersdecor.blocks; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.fml.common.registry.GameRegistry; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.detail.ModAuxiliaries; import wile.engineersdecor.detail.ModConfig; import net.minecraft.block.Block; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -57,17 +57,32 @@ public class ModBlocks public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = new BlockDecorGlassBlock("panzerglass_block", 0, Material.GLASS, 0.8f, 2000f, SoundType.GLASS); - public static final BlockDecorDirected TREATED_WOOD_POLE = new BlockDecorDirected( + public static final BlockDecorStraightPole TREATED_WOOD_POLE = new BlockDecorStraightPole( "treated_wood_pole", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT, Material.WOOD, 1.0f, 15f, SoundType.WOOD, ModAuxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) ); + public static final BlockDecorStraightPole TREATED_WOOD_POLE_HEAD = new BlockDecorStraightPole( + "treated_wood_pole_head", + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, + Material.WOOD, 1.0f, 15f, SoundType.WOOD, + ModAuxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) + ); + + public static final BlockDecorStraightPole TREATED_WOOD_POLE_SUPPORT = new BlockDecorStraightPole( + "treated_wood_pole_support", + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_IF_SAME, + Material.WOOD, 1.0f, 15f, SoundType.WOOD, + ModAuxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) + ); + public static final BlockDecor TREATED_WOOD_TABLE = new BlockDecor( "treated_wood_table", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, - Material.WOOD, 1.0f, 15f, SoundType.WOOD + Material.WOOD, 1.0f, 15f, SoundType.WOOD, + ModAuxiliaries.getPixeledAABB(1,0,1, 15,15.9,15) ); public static final BlockDecorChair TREATED_WOOD_STOOL = new BlockDecorChair( @@ -81,7 +96,7 @@ public class ModBlocks "treated_wood_crafting_table", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, Material.WOOD, 1.0f, 15f, SoundType.WOOD, - ModAuxiliaries.getPixeledAABB(0.0,0,0, 16,15.9,16) + ModAuxiliaries.getPixeledAABB(1,0,1, 15,15.9,15) ); public static final BlockDecorDirected INSET_LIGHT_IRON = new BlockDecorDirected( @@ -98,13 +113,20 @@ public class ModBlocks ModAuxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16) ); - public static final BlockDecorDirected TREATED_WOOD_WINDOW = new BlockDecorDirected( + public static final BlockDecorWindow TREATED_WOOD_WINDOW = new BlockDecorWindow( "treated_wood_window", - BlockDecor.CFG_TRANSLUCENT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, + BlockDecor.CFG_TRANSLUCENT|BlockDecor.CFG_LOOK_PLACEMENT, Material.WOOD, 0.5f, 15f, SoundType.GLASS, ModAuxiliaries.getPixeledAABB(0,0,7, 16,16,9) ); + public static final BlockDecorWindow STEEL_FRAMED_WINDOW = new BlockDecorWindow( + "steel_framed_window", + BlockDecor.CFG_TRANSLUCENT|BlockDecor.CFG_LOOK_PLACEMENT, + Material.IRON, 0.5f, 30f, SoundType.GLASS, + ModAuxiliaries.getPixeledAABB(0,0,7.5, 16,16,8.5) + ); + public static final BlockDecorFurnace SMALL_LAB_FURNACE = new BlockDecorFurnace( "small_lab_furnace", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, @@ -140,6 +162,9 @@ public class ModBlocks TREATED_WOOD_WINDOWSILL, INSET_LIGHT_IRON, SMALL_LAB_FURNACE, + STEEL_FRAMED_WINDOW, + TREATED_WOOD_POLE_SUPPORT, + TREATED_WOOD_POLE_HEAD }; private static final Block devBlocks[] = { @@ -174,6 +199,7 @@ public class ModBlocks if(num_registrations_skipped > 0) { ModEngineersDecor.logger.info("Skipped registration of " + num_registrations_skipped + " blocks due to no-register-opt-out config."); } + // TEs GameRegistry.registerTileEntity(BlockDecorCraftingTable.BTileEntity.class, new ResourceLocation(ModEngineersDecor.MODID, "te_crafting_table")); GameRegistry.registerTileEntity(BlockDecorFurnace.BTileEntity.class, new ResourceLocation(ModEngineersDecor.MODID, "te_small_lab_furnace")); diff --git a/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java b/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java index c2ad325..d11e160 100644 --- a/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java +++ b/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java @@ -94,6 +94,19 @@ public class ModConfig @Config.Name("Without ladders") @Config.RequiresMcRestart public boolean without_ladders = false; + + @Config.Comment({"Disable possibility to sit on stools and chairs."}) + @Config.Name("Without chair sitting") + public boolean without_chair_sitting = false; + + @Config.Comment({"Disable that mobs will sit on chairs and stools."}) + @Config.Name("Without chair mob sitting") + public boolean without_mob_chair_sitting = false; + + @Config.Comment({"Disable the speed boost of ladders in this mod."}) + @Config.Name("Without ladder speed boost") + public boolean without_ladder_speed_boost = false; + } @Config.Comment({ @@ -127,10 +140,47 @@ public class ModConfig { @Config.Comment({ "Smelts ores to nuggets that are normally smelted to ingots, " + - "if detectable in the Forge ore dict. Prefers IE recipe results." + "if detectable in the Forge ore dict. Prefers IE recipe results. " + + "The value can be changed on-the-fly for testing or age progression." }) @Config.Name("Furnace: Nugget smelting") public boolean furnace_smelts_nuggets = false; + + @Config.Comment({ + "Defines, in percent, how fast the lab furnace smelts compared to " + + "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." + }) + @Config.Name("Furnace: Smelting speed %") + @Config.RangeInt(min=50, max=500) + public int furnace_smelting_speed_percent = 130; + + @Config.Comment({ + "Defines, in percent, how fuel efficient the lab furnace is, compared " + + "to a vanilla furnace. 100% means vanilla furnace consumiton, 200% means " + + "the lab furnace needs about half the fuel of a vanilla furnace, " + + "The value can be changed on-the-fly for tuning." + }) + @Config.Name("Furnace: Fuel efficiency %") + @Config.RangeInt(min=50, max=250) + public int furnace_fuel_efficiency_percent = 100; + + @Config.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." + }) + @Config.Name("Chairs: Sitting chance %") + @Config.RangeDouble(min=0.0, max=80) + public double chair_mob_sitting_probability_percent = 10; + + @Config.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 " + + "Sitting time of about 3s. The config value can be changed on-the-fly for tuning." + }) + @Config.Name("Chairs: Stand up chance %") + @Config.RangeDouble(min=0.001, max=10) + public double chair_mob_standup_probability_percent = 1; } @SuppressWarnings("unused") @@ -184,8 +234,11 @@ public class ModConfig public static final void apply() { + BlockDecorFurnace.BTileEntity.on_config(tweaks.furnace_smelting_speed_percent, tweaks.furnace_fuel_efficiency_percent); ModRecipes.furnaceRecipeOverrideReset(); if(tweaks.furnace_smelts_nuggets) ModRecipes.furnaceRecipeOverrideSmeltsOresToNuggets(); + BlockDecorChair.on_config(optout.without_chair_sitting, optout.without_mob_chair_sitting, tweaks.chair_mob_sitting_probability_percent, tweaks.chair_mob_standup_probability_percent); + BlockDecorLadder.on_config(optout.without_ladder_speed_boost); } } diff --git a/1.12/src/main/java/wile/engineersdecor/detail/ModRecipes.java b/1.12/src/main/java/wile/engineersdecor/detail/ModRecipes.java index 7be5611..b51524a 100644 --- a/1.12/src/main/java/wile/engineersdecor/detail/ModRecipes.java +++ b/1.12/src/main/java/wile/engineersdecor/detail/ModRecipes.java @@ -1,10 +1,10 @@ /* - * @file ModAuxiliaries.java + * @file ModRecipes.java * @author Stefan Wilhelm (wile) * @copyright (C) 2018 Stefan Wilhelm * @license MIT (see https://opensource.org/licenses/MIT) * - * General commonly used functionality. + * General handling auxiliaries for mod recipes. */ package wile.engineersdecor.detail; diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_framed_window.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_framed_window.json new file mode 100644 index 0000000..186b07c --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_framed_window.json @@ -0,0 +1,11 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:furniture/steel_framed_window_model" + }, + "variants": { + "normal": [{}], + "facing": { "north": {"y":0}, "south": {"y":0}, "west": {"y":90}, "east": {"y":90}, "up": {"x":90}, "down": {"x":90} }, + "inventory": [{}] + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_head.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_head.json new file mode 100644 index 0000000..c7c053c --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_head.json @@ -0,0 +1,17 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:pole/straight_pole_head_model", + "x":-90, + "textures": { + "particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture" + } + }, + "variants": { + "normal": [{}], + "facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} }, + "inventory": [{}] + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_support.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_support.json new file mode 100644 index 0000000..10ecdb4 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_pole_support.json @@ -0,0 +1,17 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:pole/straight_pole_support_model", + "x":-90, + "textures": { + "particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture" + } + }, + "variants": { + "normal": [{}], + "facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} }, + "inventory": [{}] + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang index 69b073a..51a39db 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang @@ -52,6 +52,10 @@ tile.engineersdecor.treated_wood_pole.name=Straight treated wood pole tile.engineersdecor.treated_wood_pole.help=§6Straight pole fragment with the diameter of a wire relay.§r\n\ Can be useful as alternative to the wire posts if special special lengths are needed, \ or as support for structures. +tile.engineersdecor.treated_wood_pole_head.name=Straight treated wood pole head/foot +tile.engineersdecor.treated_wood_pole_head.help=§6Wooden part fitting as foot or head of straight poles. +tile.engineersdecor.treated_wood_pole_support.name=Straight treated wood pole support +tile.engineersdecor.treated_wood_pole_support.help=§6Heavy duty wooden support part fitting as foot or head of straight poles. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.treated_wood_table.name=Treated wood table tile.engineersdecor.treated_wood_table.help=§6Robust four-legged wood table.§r Indoor and outdoor use. @@ -64,14 +68,16 @@ tile.engineersdecor.iron_inset_light.help=§6Small glowstone light source, sunk Useful to light up places where electrical light installations are problematic.\ Light level like a torch. tile.engineersdecor.treated_wood_window.name=Treated wood window -tile.engineersdecor.treated_wood_window.help=§6Wood framed tripple glazed window. Well insulating. +tile.engineersdecor.treated_wood_window.help=§6Wood framed tripple glazed window. Well insulating.§r Does not connect to adjacent blocks like glass panes. tile.engineersdecor.treated_wood_windowsill.name=Treated wood window sill tile.engineersdecor.treated_wood_windowsill.help=§6Simple window decoration. -#----------------------------------------------------------------------------------------------------------- -tile.engineersdecor.iron_sheet_roof.name=Iron sheet metal roof -tile.engineersdecor.iron_sheet_roof.help=§6Well, it's a roof. tile.engineersdecor.small_lab_furnace.name=Small laboratry furnace tile.engineersdecor.small_lab_furnace.help=§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. Slightly hotter and better isolated than a cobblestone furnace, therefore more efficient. Two stack internal hopper fifos for input, output, and fuel. +tile.engineersdecor.steel_framed_window.name=Steel framed window +tile.engineersdecor.steel_framed_window.help=§6Steel framed tripple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes. +#----------------------------------------------------------------------------------------------------------- +tile.engineersdecor.iron_sheet_roof.name=Iron sheet metal roof (experimental) +tile.engineersdecor.iron_sheet_roof.help=§6Well, I just can't get that model right in a way that I could like it. Gimme some time. #----------------------------------------------------------------------------------------------------------- # EOF #----------------------------------------------------------------------------------------------------------- diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang index c47d993..c60de9f 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang @@ -52,6 +52,10 @@ tile.engineersdecor.treated_wood_pole.name=Надежно обработанны tile.engineersdecor.treated_wood_pole.help=§6Надёжный столб с диаметром, схожим с реле.§r\n\ Может быть полезен в качестве альтернативы электро-столбам, если требуются специальные особые растояния, \ или как опора для конструкций. +tile.engineersdecor.treated_wood_pole_head.name=Straight treated wood pole head/foot +#tile.engineersdecor.treated_wood_pole_head.help=§6Wooden part fitting as foot or head of straight poles. +tile.engineersdecor.treated_wood_pole_support.name=Straight treated wood pole support +#tile.engineersdecor.treated_wood_pole_support.help=§6Heavy duty wooden support part fitting as foot or head of straight poles. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.treated_wood_table.name=Стол из обработанного дерева tile.engineersdecor.treated_wood_table.help=§6Прочный деревянный стол с четырьмя ножками .§r Для использования в помещении и улице. @@ -67,11 +71,13 @@ tile.engineersdecor.treated_wood_window.name=Обработанное дерев tile.engineersdecor.treated_wood_window.help=§6Деревянный каркас окна с тройным остеклением. Ну и шумоизоляция. tile.engineersdecor.treated_wood_windowsill.name=Обработанный деревянный подоконник tile.engineersdecor.treated_wood_windowsill.help=§6Простое оформление окон. +tile.engineersdecor.small_lab_furnace.name=Компактная лабораторная печь +tile.engineersdecor.small_lab_furnace.help=§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива - сверху. Немного горячее чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива. +tile.engineersdecor.steel_framed_window.name=Steel framed window +#tile.engineersdecor.steel_framed_window.help=§6Steel framed tripple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.iron_sheet_roof.name=Кровля из листового металла tile.engineersdecor.iron_sheet_roof.help=§6Ну, это кровля. -tile.engineersdecor.small_lab_furnace.name=Компактная лабораторная печь -tile.engineersdecor.small_lab_furnace.help=§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива - сверху. Немного горячее чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива. #----------------------------------------------------------------------------------------------------------- # EOF #----------------------------------------------------------------------------------------------------------- diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/steel_framed_window_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/steel_framed_window_model.json new file mode 100644 index 0000000..fc91c48 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/steel_framed_window_model.json @@ -0,0 +1,125 @@ +{ + "parent": "block/cube", + "ambientocclusion": false, + "textures": { + "glass": "engineersdecor:blocks/glass/window_glass_texture", + "frame": "engineersdecor:blocks/iestyle/steel_texture", + "particle": "engineersdecor:blocks/iestyle/steel_texture" + }, + "elements": [ + { + "from": [1, 1, 7.5], + "to": [15, 15, 8.5], + "faces": { + "north": {"uv": [1, 1, 15, 15], "texture": "#glass"}, + "south": {"uv": [1, 1, 15, 15], "texture": "#glass"} + } + }, + { + "from": [1, 0, 7.5], + "to": [15, 1, 8.5], + "faces": { + "north": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "south": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "up": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"}, + "down": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"} + } + }, + { + "from": [0, 1, 7.5], + "to": [1, 15, 8.5], + "faces": { + "north": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "east": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"}, + "south": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "west": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"} + } + }, + { + "from": [0, 0, 7.5], + "to": [1, 1, 8.5], + "faces": { + "north": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "south": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "west": {"uv": [7.5, 15, 8.5, 16], "texture": "#frame"}, + "down": {"uv": [0, 7.5, 1, 8.5], "texture": "#frame"} + } + }, + { + "from": [0, 15, 7.5], + "to": [1, 16, 8.5], + "faces": { + "north": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "west": {"uv": [7.5, 0, 8.5, 1], "texture": "#frame"}, + "up": {"uv": [0, 7.5, 1, 8.5], "texture": "#frame"} + } + }, + { + "from": [1, 15, 7.5], + "to": [15, 16, 8.5], + "faces": { + "north": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "south": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "up": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"}, + "down": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"} + } + }, + { + "from": [15, 1, 7.5], + "to": [16, 15, 8.5], + "faces": { + "north": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "east": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"}, + "south": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "west": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"} + } + }, + { + "from": [15, 15, 7.5], + "to": [16, 16, 8.5], + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "east": {"uv": [7.5, 0, 8.5, 1], "texture": "#frame"}, + "south": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "up": {"uv": [15, 7.5, 16, 8.5], "texture": "#frame"} + } + }, + { + "from": [15, 0, 7.5], + "to": [16, 1, 8.5], + "faces": { + "north": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "east": {"uv": [7.5, 15, 8.5, 16], "texture": "#frame"}, + "south": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "down": {"uv": [15, 7.5, 16, 8.5], "texture": "#frame"} + } + } + ], + "display": { + "ground": { + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [0, + { + "name": "group", + "children": [] + }, + { + "name": "group2", + "children": [1, 2, 3, 4, 5, 6, 7, 8] + }, + { + "name": "group3", + "children": [] + } + ] +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_window_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_window_model.json index fd65b3a..0fd6159 100644 --- a/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_window_model.json +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_window_model.json @@ -2,97 +2,257 @@ "parent": "block/cube", "ambientocclusion": false, "textures": { - "glass": "engineersdecor:blocks/glass/panzerglass_block_texture0", + "glass": "engineersdecor:blocks/glass/window_glass_texture", "frame": "engineersdecor:blocks/iestyle/treated_wood_rough_texture", "particle": "engineersdecor:blocks/iestyle/treated_wood_rough_texture" }, "elements": [ { - "from": [1, 1, 7.25], - "to": [15, 15, 8.75], + "from": [1, 1, 7.5], + "to": [15, 15, 8.5], "faces": { "north": {"uv": [1, 1, 15, 15], "texture": "#glass"}, "south": {"uv": [1, 1, 15, 15], "texture": "#glass"} } }, { - "from": [0, 1, 6.5], - "to": [1, 15, 9.5], - "faces": { - "north": {"uv": [15, 1, 16, 15], "texture": "#frame"}, - "east": {"uv": [6.5, 1, 9.5, 15], "texture": "#frame"}, - "south": {"uv": [0, 1, 1, 15], "texture": "#frame"}, - "west": {"uv": [6.5, 1, 9.5, 15], "texture": "#frame"} - } - }, - { - "from": [15, 1, 6.5], - "to": [16, 15, 9.5], - "faces": { - "north": {"uv": [0, 1, 1, 15], "texture": "#frame"}, - "east": {"uv": [6.5, 1, 9.5, 15], "texture": "#frame"}, - "south": {"uv": [15, 1, 16, 15], "texture": "#frame"}, - "west": {"uv": [6.5, 1, 9.5, 15], "texture": "#frame"} - } - }, - { - "from": [1, 15, 6.5], - "to": [15, 16, 9.5], - "faces": { - "north": {"uv": [1, 0, 15, 1], "texture": "#frame"}, - "south": {"uv": [1, 0, 15, 1], "texture": "#frame"}, - "up": {"uv": [1, 6.5, 15, 9.5], "texture": "#frame"}, - "down": {"uv": [1, 6.5, 15, 9.5], "texture": "#frame"} - } - }, - { - "from": [1, 0, 6.5], - "to": [15, 1, 9.5], + "from": [1, 0, 8.5], + "to": [15, 1, 9.25], "faces": { "north": {"uv": [1, 15, 15, 16], "texture": "#frame"}, "south": {"uv": [1, 15, 15, 16], "texture": "#frame"}, - "up": {"uv": [1, 6.5, 15, 9.5], "texture": "#frame"}, - "down": {"uv": [1, 6.5, 15, 9.5], "texture": "#frame"} + "up": {"uv": [1, 8.5, 15, 9.25], "texture": "#frame"}, + "down": {"uv": [1, 6.75, 15, 7.5], "texture": "#frame"} } }, { - "from": [0, 15, 6.5], - "to": [1, 16, 9.5], + "from": [0, 1, 8.5], + "to": [1, 15, 9.25], "faces": { - "north": {"uv": [15, 0, 16, 1], "texture": "#frame"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#frame"}, - "west": {"uv": [6.5, 0, 9.5, 1], "texture": "#frame"}, - "up": {"uv": [0, 6.5, 1, 9.5], "texture": "#frame"} + "north": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "east": {"uv": [6.75, 1, 7.5, 15], "texture": "#frame"}, + "south": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "west": {"uv": [8.5, 1, 9.25, 15], "texture": "#frame"} } }, { - "from": [15, 15, 6.5], - "to": [16, 16, 9.5], - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#frame"}, - "east": {"uv": [6.5, 0, 9.5, 1], "texture": "#frame"}, - "south": {"uv": [15, 0, 16, 1], "texture": "#frame"}, - "up": {"uv": [15, 6.5, 16, 9.5], "texture": "#frame"} - } - }, - { - "from": [15, 0, 6.5], - "to": [16, 1, 9.5], - "faces": { - "north": {"uv": [0, 15, 1, 16], "texture": "#frame"}, - "east": {"uv": [6.5, 15, 9.5, 16], "texture": "#frame"}, - "south": {"uv": [15, 15, 16, 16], "texture": "#frame"}, - "down": {"uv": [15, 6.5, 16, 9.5], "texture": "#frame"} - } - }, - { - "from": [0, 0, 6.5], - "to": [1, 1, 9.5], + "from": [0, 0, 8.5], + "to": [1, 1, 9.25], "faces": { "north": {"uv": [15, 15, 16, 16], "texture": "#frame"}, "south": {"uv": [0, 15, 1, 16], "texture": "#frame"}, - "west": {"uv": [6.5, 15, 9.5, 16], "texture": "#frame"}, - "down": {"uv": [0, 6.5, 1, 9.5], "texture": "#frame"} + "west": {"uv": [8.5, 15, 9.25, 16], "texture": "#frame"}, + "down": {"uv": [0, 6.75, 1, 7.5], "texture": "#frame"} + } + }, + { + "from": [0, 15, 8.5], + "to": [1, 16, 9.25], + "faces": { + "north": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "west": {"uv": [8.5, 0, 9.25, 1], "texture": "#frame"}, + "up": {"uv": [0, 8.5, 1, 9.25], "texture": "#frame"} + } + }, + { + "from": [1, 15, 8.5], + "to": [15, 16, 9.25], + "faces": { + "north": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "south": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "up": {"uv": [1, 8.5, 15, 9.25], "texture": "#frame"}, + "down": {"uv": [1, 6.75, 15, 7.5], "texture": "#frame"} + } + }, + { + "from": [15, 1, 8.5], + "to": [16, 15, 9.25], + "faces": { + "north": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "east": {"uv": [6.75, 1, 7.5, 15], "texture": "#frame"}, + "south": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "west": {"uv": [8.5, 1, 9.25, 15], "texture": "#frame"} + } + }, + { + "from": [15, 15, 8.5], + "to": [16, 16, 9.25], + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "east": {"uv": [6.75, 0, 7.5, 1], "texture": "#frame"}, + "south": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "up": {"uv": [15, 8.5, 16, 9.25], "texture": "#frame"} + } + }, + { + "from": [15, 0, 8.5], + "to": [16, 1, 9.25], + "faces": { + "north": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "east": {"uv": [6.75, 15, 7.5, 16], "texture": "#frame"}, + "south": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "down": {"uv": [15, 6.75, 16, 7.5], "texture": "#frame"} + } + }, + { + "from": [1, 0, 7.5], + "to": [15, 1, 8.5], + "faces": { + "north": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "south": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "up": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"}, + "down": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"} + } + }, + { + "from": [0, 1, 7.5], + "to": [1, 15, 8.5], + "faces": { + "north": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "east": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"}, + "south": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "west": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"} + } + }, + { + "from": [0, 0, 7.5], + "to": [1, 1, 8.5], + "faces": { + "north": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "south": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "west": {"uv": [7.5, 15, 8.5, 16], "texture": "#frame"}, + "down": {"uv": [0, 7.5, 1, 8.5], "texture": "#frame"} + } + }, + { + "from": [0, 15, 7.5], + "to": [1, 16, 8.5], + "faces": { + "north": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "west": {"uv": [7.5, 0, 8.5, 1], "texture": "#frame"}, + "up": {"uv": [0, 7.5, 1, 8.5], "texture": "#frame"} + } + }, + { + "from": [1, 15, 7.5], + "to": [15, 16, 8.5], + "faces": { + "north": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "south": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "up": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"}, + "down": {"uv": [1, 7.5, 15, 8.5], "texture": "#frame"} + } + }, + { + "from": [15, 1, 7.5], + "to": [16, 15, 8.5], + "faces": { + "north": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "east": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"}, + "south": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "west": {"uv": [7.5, 1, 8.5, 15], "texture": "#frame"} + } + }, + { + "from": [15, 15, 7.5], + "to": [16, 16, 8.5], + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "east": {"uv": [7.5, 0, 8.5, 1], "texture": "#frame"}, + "south": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "up": {"uv": [15, 7.5, 16, 8.5], "texture": "#frame"} + } + }, + { + "from": [15, 0, 7.5], + "to": [16, 1, 8.5], + "faces": { + "north": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "east": {"uv": [7.5, 15, 8.5, 16], "texture": "#frame"}, + "south": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "down": {"uv": [15, 7.5, 16, 8.5], "texture": "#frame"} + } + }, + { + "from": [1, 0, 6.75], + "to": [15, 1, 7.5], + "faces": { + "north": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "south": {"uv": [1, 15, 15, 16], "texture": "#frame"}, + "up": {"uv": [1, 6.75, 15, 7.5], "texture": "#frame"}, + "down": {"uv": [1, 8.5, 15, 9.25], "texture": "#frame"} + } + }, + { + "from": [0, 1, 6.75], + "to": [1, 15, 7.5], + "faces": { + "north": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "east": {"uv": [8.5, 1, 9.25, 15], "texture": "#frame"}, + "south": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "west": {"uv": [6.75, 1, 7.5, 15], "texture": "#frame"} + } + }, + { + "from": [0, 0, 6.75], + "to": [1, 1, 7.5], + "faces": { + "north": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "south": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "west": {"uv": [6.75, 15, 7.5, 16], "texture": "#frame"}, + "down": {"uv": [0, 8.5, 1, 9.25], "texture": "#frame"} + } + }, + { + "from": [0, 15, 6.75], + "to": [1, 16, 7.5], + "faces": { + "north": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "west": {"uv": [6.75, 0, 7.5, 1], "texture": "#frame"}, + "up": {"uv": [0, 6.75, 1, 7.5], "texture": "#frame"} + } + }, + { + "from": [1, 15, 6.75], + "to": [15, 16, 7.5], + "faces": { + "north": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "south": {"uv": [1, 0, 15, 1], "texture": "#frame"}, + "up": {"uv": [1, 6.75, 15, 7.5], "texture": "#frame"}, + "down": {"uv": [1, 8.5, 15, 9.25], "texture": "#frame"} + } + }, + { + "from": [15, 1, 6.75], + "to": [16, 15, 7.5], + "faces": { + "north": {"uv": [0, 1, 1, 15], "texture": "#frame"}, + "east": {"uv": [8.5, 1, 9.25, 15], "texture": "#frame"}, + "south": {"uv": [15, 1, 16, 15], "texture": "#frame"}, + "west": {"uv": [6.75, 1, 7.5, 15], "texture": "#frame"} + } + }, + { + "from": [15, 15, 6.75], + "to": [16, 16, 7.5], + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#frame"}, + "east": {"uv": [8.5, 0, 9.25, 1], "texture": "#frame"}, + "south": {"uv": [15, 0, 16, 1], "texture": "#frame"}, + "up": {"uv": [15, 6.75, 16, 7.5], "texture": "#frame"} + } + }, + { + "from": [15, 0, 6.75], + "to": [16, 1, 7.5], + "faces": { + "north": {"uv": [0, 15, 1, 16], "texture": "#frame"}, + "east": {"uv": [8.5, 15, 9.25, 16], "texture": "#frame"}, + "south": {"uv": [15, 15, 16, 16], "texture": "#frame"}, + "down": {"uv": [15, 8.5, 16, 9.25], "texture": "#frame"} } } ], @@ -107,5 +267,19 @@ "fixed": { "scale": [0.5, 0.5, 0.5] } - } + }, + "groups": [0, + { + "name": "group", + "children": [1, 2, 3, 4, 5, 6, 7, 8] + }, + { + "name": "group2", + "children": [9, 10, 11, 12, 13, 14, 15, 16] + }, + { + "name": "group3", + "children": [17, 18, 19, 20, 21, 22, 23, 24] + } + ] } \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_head_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_head_model.json new file mode 100644 index 0000000..30da71b --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_head_model.json @@ -0,0 +1,115 @@ +{ + "parent": "block/cube", + "textures": { + "side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture", + "topsurf": "engineersdecor:blocks/pole/treated_wood_pole_support_top_texture", + "edges": "engineersdecor:blocks/pole/treated_wood_pole_support_edges_texture" + }, + "elements": [ + { + "from": [5.75, 5.5, 0], + "to": [10.25, 10.5, 14], + "faces": { + "north": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "east": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "south": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "west": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"}, + "down": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"} + } + }, + { + "from": [10.25, 5.75, 0], + "to": [10.5, 10.25, 14], + "faces": { + "north": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "north"}, + "east": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, + "south": {"uv": [10.25, 5.75, 10.5, 10.25], "texture": "#top", "cullface": "south"}, + "up": {"uv": [5, 0, 5.25, 16], "texture": "#side"}, + "down": {"uv": [10.75, 0, 11, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [5.5, 5.75, 0], + "to": [5.75, 10.25, 14], + "faces": { + "north": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "north"}, + "south": {"uv": [5.5, 5.75, 5.75, 10.25], "texture": "#top", "cullface": "south"}, + "west": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [10.75, 0, 11, 16], "texture": "#side"}, + "down": {"uv": [5, 0, 5.25, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [3, 3, 14], + "to": [13, 13, 16], + "faces": { + "north": {"uv": [3, 3, 13, 13], "texture": "#topsurf"}, + "east": {"uv": [0, 3, 2, 13], "texture": "#edges"}, + "south": {"uv": [3, 3, 13, 13], "texture": "#topsurf"}, + "west": {"uv": [14, 3, 16, 13], "texture": "#edges"}, + "up": {"uv": [3, 14, 13, 16], "texture": "#edges"}, + "down": {"uv": [3, 0, 13, 2], "texture": "#edges"} + } + }, + { + "from": [6.5, 7.18717, 7.04539], + "to": [9.5, 9.18717, 13.54539], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 4.68717, 9.04539]}, + "faces": { + "east": {"uv": [0, 10.5, 11.5, 13.5], "texture": "#edges"}, + "west": {"uv": [4.5, 10.5, 16, 13.5], "rotation": 180, "texture": "#edges"}, + "up": {"uv": [5, 0, 11, 16], "rotation": 180, "texture": "#side"}, + "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [6.5, 6.81283, 7.04539], + "to": [9.5, 8.81283, 13.54539], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 11.31283, 9.04539]}, + "faces": { + "north": {"uv": [14, 1, 16, 15], "rotation": 90, "texture": "#edges"}, + "east": {"uv": [1, 3, 13.5, 6], "texture": "#edges"}, + "west": {"uv": [4.5, 2.5, 16, 5.5], "rotation": 180, "texture": "#edges"}, + "up": {"uv": [6, 0, 10, 16], "texture": "#side"}, + "down": {"uv": [5, 0, 11, 16], "texture": "#side"} + } + }, + { + "from": [6.81283, 6.5, 7.04539], + "to": [8.81283, 9.5, 13.54539], + "rotation": {"angle": 45, "axis": "y", "origin": [11.31283, 8, 9.04539]}, + "faces": { + "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#side"}, + "west": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [10.5, 4.5, 13.5, 16], "texture": "#edges"}, + "down": {"uv": [10.5, 0, 13.5, 11.5], "rotation": 180, "texture": "#edges"} + } + }, + { + "from": [7.18717, 6.5, 7.04539], + "to": [9.18717, 9.5, 13.54539], + "rotation": {"angle": -45, "axis": "y", "origin": [4.68717, 8, 9.04539]}, + "faces": { + "east": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [2.5, 4.5, 5.5, 16], "rotation": 180, "texture": "#edges"}, + "down": {"uv": [2.5, 0, 5.5, 11.5], "rotation": 180, "texture": "#edges"} + } + } + ], + "display": { + "ground": { + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_model.json index 81cff54..c14b7a9 100644 --- a/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_model.json +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_model.json @@ -1,5 +1,4 @@ { - "credit": "I made this with the Blockbench", "parent": "block/cube", "textures": { "side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", @@ -8,33 +7,15 @@ }, "elements": [ { - "from": [5.75, 5.75, 0], - "to": [10.25, 10.25, 16], - "faces": { - "north": {"uv": [5.25, 5.25, 10.75, 10.75], "texture": "#top", "cullface": "north"}, - "south": {"uv": [5.25, 5.25, 10.75, 10.75], "texture": "#top", "cullface": "south"} - } - }, - { - "from": [5.75, 10.25, 0], + "from": [5.75, 5.5, 0], "to": [10.25, 10.5, 16], "faces": { - "north": {"uv": [5.25, 10.75, 10.75, 11], "texture": "#top", "cullface": "north"}, - "east": {"uv": [10.75, 0, 11, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [5.25, 5, 10.75, 5.25], "texture": "#top", "cullface": "south"}, - "west": {"uv": [5, 0, 5.25, 16], "rotation": 90, "texture": "#side"}, - "up": {"uv": [5.25, 0, 10.75, 16], "texture": "#side"} - } - }, - { - "from": [5.75, 5.5, 0], - "to": [10.25, 5.75, 16], - "faces": { - "north": {"uv": [5.25, 5, 10.75, 5.25], "texture": "#top", "cullface": "north"}, - "east": {"uv": [5, 0, 5.25, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [5.25, 10.75, 10.75, 11], "texture": "#top", "cullface": "south"}, - "west": {"uv": [10.75, 0, 11, 16], "rotation": 90, "texture": "#side"}, - "down": {"uv": [5.25, 0, 10.75, 16], "rotation": 180, "texture": "#side"} + "north": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "east": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "south": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "west": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"}, + "down": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"} } }, { @@ -43,7 +24,7 @@ "faces": { "north": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "north"}, "east": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "south"}, + "south": {"uv": [10, 5.25, 10.25, 10.75], "texture": "#top", "cullface": "south"}, "up": {"uv": [5, 0, 5.25, 16], "texture": "#side"}, "down": {"uv": [10.75, 0, 11, 16], "rotation": 180, "texture": "#side"} } @@ -53,7 +34,7 @@ "to": [5.75, 10.25, 16], "faces": { "north": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "north"}, - "south": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "south"}, + "south": {"uv": [5.5, 6, 5.75, 10.5], "texture": "#top", "cullface": "south"}, "west": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, "up": {"uv": [10.75, 0, 11, 16], "texture": "#side"}, "down": {"uv": [5, 0, 5.25, 16], "rotation": 180, "texture": "#side"} diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_support_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_support_model.json new file mode 100644 index 0000000..f6c08d7 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/pole/straight_pole_support_model.json @@ -0,0 +1,139 @@ +{ + "parent": "block/cube", + "textures": { + "side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture", + "top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture", + "topsurf": "engineersdecor:blocks/pole/treated_wood_pole_support_top_texture", + "edges": "engineersdecor:blocks/pole/treated_wood_pole_support_edges_texture" + }, + "elements": [ + { + "from": [5.75, 5.5, 0], + "to": [10.25, 10.5, 14], + "faces": { + "north": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "east": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "south": {"uv": [5.75, 5.5, 10.25, 10.5], "texture": "#top"}, + "west": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"}, + "down": {"uv": [5.75, 0, 10.25, 16], "texture": "#side"} + } + }, + { + "from": [10.25, 5.75, 0], + "to": [10.5, 10.25, 14], + "faces": { + "north": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "north"}, + "east": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, + "south": {"uv": [10.25, 5.75, 10.5, 10.25], "texture": "#top", "cullface": "south"}, + "up": {"uv": [5, 0, 5.25, 16], "texture": "#side"}, + "down": {"uv": [10.75, 0, 11, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [5.5, 5.75, 0], + "to": [5.75, 10.25, 14], + "faces": { + "north": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "north"}, + "south": {"uv": [5.5, 5.75, 5.75, 10.25], "texture": "#top", "cullface": "south"}, + "west": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [10.75, 0, 11, 16], "texture": "#side"}, + "down": {"uv": [5, 0, 5.25, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [5.75, 1, 14], + "to": [10.25, 15, 16], + "faces": { + "north": {"uv": [5.75, 1, 10.25, 15], "texture": "#topsurf"}, + "east": {"uv": [0, 1, 2, 15], "texture": "#edges"}, + "south": {"uv": [5.75, 1, 10.25, 15], "texture": "#topsurf"}, + "west": {"uv": [14, 1, 16, 15], "texture": "#edges"}, + "up": {"uv": [5.75, 14, 10.25, 16], "texture": "#edges"}, + "down": {"uv": [5.75, 0, 10.25, 2], "texture": "#edges"} + } + }, + { + "from": [6, 2.5, 4.5], + "to": [10, 5.5, 16.5], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 11.5]}, + "faces": { + "east": {"uv": [0, 10.5, 11.5, 13.5], "texture": "#edges"}, + "west": {"uv": [4.5, 10.5, 16, 13.5], "rotation": 180, "texture": "#edges"}, + "up": {"uv": [5, 0, 11, 16], "rotation": 180, "texture": "#side"}, + "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#side"} + } + }, + { + "from": [6, 10.5, 4.5], + "to": [10, 13.5, 16.5], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 8, 11.5]}, + "faces": { + "north": {"uv": [14, 1, 16, 15], "rotation": 90, "texture": "#edges"}, + "east": {"uv": [1, 3, 13.5, 6], "texture": "#edges"}, + "west": {"uv": [4.5, 2.5, 16, 5.5], "rotation": 180, "texture": "#edges"}, + "up": {"uv": [6, 0, 10, 16], "texture": "#side"}, + "down": {"uv": [5, 0, 11, 16], "texture": "#side"} + } + }, + { + "from": [10.5, 6, 4.5], + "to": [13.5, 10, 16.5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 11.5]}, + "faces": { + "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#side"}, + "west": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [10.5, 4.5, 13.5, 16], "texture": "#edges"}, + "down": {"uv": [10.5, 0, 13.5, 11.5], "rotation": 180, "texture": "#edges"} + } + }, + { + "from": [2.5, 6, 4.5], + "to": [5.5, 10, 16.5], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 11.5]}, + "faces": { + "east": {"uv": [5, 0, 11, 16], "rotation": 90, "texture": "#side"}, + "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#side"}, + "up": {"uv": [2.5, 4.5, 5.5, 16], "rotation": 180, "texture": "#edges"}, + "down": {"uv": [2.5, 0, 5.5, 11.5], "rotation": 180, "texture": "#edges"} + } + }, + { + "from": [10, 5.75, 14], + "to": [15, 10.25, 16], + "faces": { + "north": {"uv": [1, 5.75, 6, 10.25], "texture": "#topsurf"}, + "east": {"uv": [0, 5.75, 2, 10.25], "texture": "#edges"}, + "south": {"uv": [10, 5.75, 15, 10.25], "texture": "#topsurf"}, + "west": {"uv": [14, 5.75, 16, 10.25], "texture": "#edges"}, + "up": {"uv": [10, 14, 15, 16], "texture": "#edges"}, + "down": {"uv": [10, 0, 15, 2], "texture": "#edges"} + } + }, + { + "from": [1, 5.75, 14], + "to": [6, 10.25, 16], + "faces": { + "north": {"uv": [10, 5.75, 15, 10.25], "texture": "#topsurf"}, + "east": {"uv": [0, 5.75, 2, 10.25], "texture": "#edges"}, + "south": {"uv": [1, 5.75, 6, 10.25], "texture": "#topsurf"}, + "west": {"uv": [14, 5.75, 16, 10.25], "texture": "#edges"}, + "up": {"uv": [1, 14, 6, 16], "texture": "#edges"}, + "down": {"uv": [1, 0, 6, 2], "texture": "#edges"} + } + } + ], + "display": { + "ground": { + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json index 65d4bc0..b1352f9 100644 --- a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json @@ -84,6 +84,28 @@ "name": "stickWood" }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "slabSheetmetalIron" + }, + "name": "slabSheetmetalIron" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "slabSheetmetalSteel" + }, + "name": "slabSheetmetalSteel" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "slabSheetmetalAluminium" + }, + "name": "slabSheetmetalAluminium" + }, + { "ingredient": { "type": "forge:ore_dict", diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/steel_framed_window_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/steel_framed_window_recipe.json new file mode 100644 index 0000000..8f393de --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/steel_framed_window_recipe.json @@ -0,0 +1,29 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:steel_framed_window", + "required": ["immersiveengineering:material"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "WGW", + "GGG", + "WGW" + ], + "key": { + "W": { + "item": "#slabSheetmetalSteel", + "data": 0 + }, + "G": { + "item": "#paneGlass", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:steel_framed_window", + "count": 9 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_head_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_head_recipe.json new file mode 100644 index 0000000..9fc7e3d --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_head_recipe.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:treated_wood_pole_head" + } + ], + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "engineersdecor:treated_wood_pole" + } + ], + "result": { + "item": "engineersdecor:treated_wood_pole_head" + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_support_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_support_recipe.json new file mode 100644 index 0000000..4be9e98 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_support_recipe.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:treated_wood_pole_support" + } + ], + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "engineersdecor:treated_wood_pole_head" + } + ], + "result": { + "item": "engineersdecor:treated_wood_pole_support" + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_wrapover_recipe - Copy.json b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_wrapover_recipe - Copy.json new file mode 100644 index 0000000..4f326b8 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/treated_wood_pole_wrapover_recipe - Copy.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:treated_wood_pole" + } + ], + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "engineersdecor:treated_wood_pole_support" + } + ], + "result": { + "item": "engineersdecor:treated_wood_pole" + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/glass/window_glass_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/glass/window_glass_texture.png new file mode 100644 index 0000000..359f49a Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/glass/window_glass_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/iestyle/treated_wood_rough_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/iestyle/treated_wood_rough_texture.png index 983efd3..c8ab44e 100644 Binary files a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/iestyle/treated_wood_rough_texture.png and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/iestyle/treated_wood_rough_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_edges_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_edges_texture.png new file mode 100644 index 0000000..54822b4 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_edges_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_top_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_top_texture.png new file mode 100644 index 0000000..15b1eb3 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pole/treated_wood_pole_support_top_texture.png differ diff --git a/documentation/engineers-decor-v103-stool-sitting.png b/documentation/engineers-decor-v103-stool-sitting.png new file mode 100644 index 0000000..435951e Binary files /dev/null and b/documentation/engineers-decor-v103-stool-sitting.png differ diff --git a/meta/update.json b/meta/update.json index ba5f102..0d2db0f 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.3-b3": "[A] Added sitting on treated wood stool, Zombies included.\n[A] Added steel framed window.\n[A] Added treated wood pole support head/foot and heavy duty support.\n[A] Added language Russian language support, thanks to yaroslav4167.\n[A] Added config for furnace smelting speed (percent of vanilla furnace).\n[A] Added config for furnace fuel efficiency (in percent, ref is vanilla).\n[F] Treated pole model changed to circumvent potential texture bleeding.\n[M] Treated wood table bounding box aligned with the legs.\n[M] Treated wood crafting table bounding box aligned with the legs.\n[M] Treated wood window can be vertically placed for rooflights.\n[M] Treated wood window can be vertically placed for rooflights.", "1.0.3-b2": "[A] Added config options for selective feature opt-outs (soft opt-out).\n[A] Added config skip registration of opt-out features (hard opt-out).\n[A] Added config to disable all internal recipes (for packs).\n[A] Added JEI API adapter for soft opt-outs.\n[A] Added lab furnace recipe override config to smelt ores to nuggets that would normally be smelted into ingots. Can be changed on-the-fly.", "1.0.3-b1": "[A] Added small laboratory furnace.\n[M] Panzer glass opacity/light level set explicitly 0.", "1.0.2": "[R] Release based on v1.0.2-b3 * Fixes: Spawning. * Crafting table: Shift-click. * Ladders: Faster climbing/descending. * Concrete: Rebar tiles, tile stairs. * Treated wood: window, windowsill. * Slag brick: wall. * Panzer glass: added. * Recipes: Adaptions, added decompositions.", @@ -27,7 +28,7 @@ }, "promos": { "1.12.2-recommended": "1.0.2", - "1.12.2-latest": "1.0.3-b2", + "1.12.2-latest": "1.0.3-b3", "1.13.2-recommended": "", "1.13.2-latest": "1.0.2-b2" }