diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 5fc7390..fc34bae 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,10 +1,11 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { + "1.0.12-b1": "[A] Mineal Smelter non-experimental now.\n[M] Window submodels stripped (reopened issue #19, thx overchoice).\n[M] Opaque full block light opacity fixed (issue #50, thx Illomiurge).\n[M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, thx Aristine for the CR).", "1.0.11": "[R] Release based on v1.0.11-b3. Release-to-release changes: * Steel floor grating improvments. * Minor model box fixes. * Standalone recipes added. * Language updates.", "1.0.11-b3": "[M] Added missing standalone recipes for pipe valves, passive fluid accumulator, and waste incinerator.", "1.0.11-b2": "[F] Fixed Floor Grating issue, which could have caused a crash.\n[M] Lang update ru-ru (Shellyoung, PR #47).", - "1.0.11-b1": "[M] Lang update ru-ru (Shellyoung, PR #45).\n[F] Fixed bounding box of the Steel Table.\n[M] Steel Floor Frating: Items fall through.", + "1.0.11-b1": "[M] Lang update ru-ru (Shellyoung, PR #45).\n[F] Fixed bounding box of the Steel Table.\n[M] Steel Floor Grating: Items fall through.", "1.0.10": "[R] Release based on v1.0.10-b2. Release-to-release changes: * Steel table added. * Steel floor grating added. * Treated wood side table added. * Exit Sign added. * Recipe fixes.", "1.0.10-b2": "[A] Steel table added.\n[A] Steel floor grating added.", "1.0.10-b1": "[A] Treated wood side table added.\n[F] Fixed recipe collision of Metal Rung Ladder (issue #37, thx ProsperCraft for reporting).\n[A] Added Exit Sign (texture design by J. Carver).", @@ -55,6 +56,6 @@ }, "promos": { "1.12.2-recommended": "1.0.11", - "1.12.2-latest": "1.0.11" + "1.12.2-latest": "1.0.12-b1" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index d983760..e94abf7 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,7 +10,11 @@ Mod sources for Minecraft version 1.12.2. ---- ## Version history - ~ v1.0.12-b1 [M] Window submodels stripped (issue #19). + - v1.0.12-b1 [A] Mineal Smelter non-experimental now. + [M] Window submodels stripped (reopened issue #19, thx overchoice). + [M] Opaque full block light opacity fixed (issue #50, thx Illomiurge). + [M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, + thx Aristine for the CR). ------------------------------------------------------------------- - v1.0.11 [R] Release based on v1.0.11-b3. Release-to-release changes: @@ -28,7 +32,7 @@ Mod sources for Minecraft version 1.12.2. - v1.0.11-b1 [M] Lang update ru-ru (Shellyoung, PR #45). [F] Fixed bounding box of the Steel Table. - [M] Steel Floor Frating: Items fall through. + [M] Steel Floor Grating: Items fall through. ------------------------------------------------------------------- - v1.0.10 [R] Release based on v1.0.10-b2. Release-to-release changes: diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java b/1.12/src/main/java/wile/engineersdecor/ModContent.java similarity index 88% rename from 1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java rename to 1.12/src/main/java/wile/engineersdecor/ModContent.java index a4443aa..b955ceb 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java +++ b/1.12/src/main/java/wile/engineersdecor/ModContent.java @@ -10,11 +10,11 @@ * Note: Straight forward definition of different blocks/entities * to make recipes, models and texture definitions easier. */ -package wile.engineersdecor.blocks; +package wile.engineersdecor; -import wile.engineersdecor.ModEngineersDecor; -import wile.engineersdecor.detail.ModAuxiliaries; -import wile.engineersdecor.detail.ModConfig; +import wile.engineersdecor.detail.*; +import wile.engineersdecor.blocks.*; +import wile.engineersdecor.items.*; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -35,7 +35,7 @@ import java.util.Collections; import javax.annotation.Nonnull; @SuppressWarnings("unused") -public class ModBlocks +public class ModContent { //-------------------------------------------------------------------------------------------------------------------- //-- Blocks @@ -73,6 +73,8 @@ public class ModBlocks public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = new BlockDecorGlassBlock("panzerglass_block", 0, Material.GLASS, 1f, 2000f, SoundType.GLASS); public static final BlockDecorSlab PANZERGLASS_SLAB = new BlockDecorSlab("panzerglass_slab", BlockDecor.CFG_TRANSLUCENT, Material.GLASS, 1f, 2000f, SoundType.GLASS); + public static final BlockDecorFull TREATED_WOOD_FLOOR = new BlockDecorFull("treated_wood_floor", 0, Material.WOOD, 0.5f, 10f, SoundType.WOOD); + //-------------------------------------------------------------------------------------------------------------------- public static final BlockDecorCraftingTable TREATED_WOOD_CRAFTING_TABLE = new BlockDecorCraftingTable( @@ -85,7 +87,7 @@ public class ModBlocks public static final BlockDecorFurnace SMALL_LAB_FURNACE = new BlockDecorFurnace( "small_lab_furnace", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT| - BlockDecor.CFG_ELECTRICAL, + BlockDecor.CFG_ELECTRICAL, Material.IRON, 0.5f, 15f, SoundType.METAL, ModAuxiliaries.getPixeledAABB(1,0,1, 15,15,16) ); @@ -118,12 +120,26 @@ public class ModBlocks ModAuxiliaries.getPixeledAABB(1.1,0,1.1, 14.9,16,14.9) ); + public static final BlockDecorSolarPanel SMALL_SOLAR_PANEL = new BlockDecorSolarPanel( + "small_solar_panel", + BlockDecor.CFG_LOOK_PLACEMENT, + Material.IRON, 1f, 15f, SoundType.METAL, + ModAuxiliaries.getPixeledAABB(0,0,0, 16,11.5,16) + ); + + public static final BlockDecorTreeCutter SMALL_TREE_CUTTER = new BlockDecorTreeCutter( + "small_tree_cutter", + BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK, + Material.IRON, 1f, 15f, SoundType.METAL, + ModAuxiliaries.getPixeledAABB(0,0,0, 16,8,16) + ); + //-------------------------------------------------------------------------------------------------------------------- public static final BlockDecorPipeValve STRAIGHT_CHECK_VALVE = new BlockDecorPipeValve( "straight_pipe_valve", BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK| - BlockDecor.CFG_CUTOUT, + BlockDecor.CFG_CUTOUT, Material.IRON, 0.7f, 15f, SoundType.METAL, ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16) ); @@ -131,7 +147,7 @@ public class ModBlocks public static final BlockDecorPipeValve STRAIGHT_REDSTONE_VALVE = new BlockDecorPipeValve( "straight_pipe_valve_redstone", BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK| - BlockDecor.CFG_CUTOUT|BlockDecor.CFG_REDSTONE_CONTROLLED, + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_REDSTONE_CONTROLLED, Material.IRON, 0.7f, 15f, SoundType.METAL, ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16) ); @@ -139,7 +155,7 @@ public class ModBlocks public static final BlockDecorPipeValve STRAIGHT_REDSTONE_ANALOG_VALVE = new BlockDecorPipeValve( "straight_pipe_valve_redstone_analog", BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK| - BlockDecor.CFG_CUTOUT|BlockDecor.CFG_REDSTONE_CONTROLLED|BlockDecor.CFG_ANALOG, + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_REDSTONE_CONTROLLED|BlockDecor.CFG_ANALOG, Material.IRON, 0.7f, 15f, SoundType.METAL, ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16) ); @@ -147,7 +163,7 @@ public class ModBlocks public static final BlockDecorPassiveFluidAccumulator PASSIVE_FLUID_ACCUMULATOR = new BlockDecorPassiveFluidAccumulator( "passive_fluid_accumulator", BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK| - BlockDecor.CFG_CUTOUT, + BlockDecor.CFG_CUTOUT, Material.IRON, 0.7f, 15f, SoundType.METAL, ModAuxiliaries.getPixeledAABB(0,0,0, 16,16,16) ); @@ -408,8 +424,16 @@ public class ModBlocks BlockDecorMineralSmelter.BTileEntity.class, "te_small_mineral_smelter" ); + private static final TileEntityRegistrationData SMALL_SOLAR_PANEL_TEI = new TileEntityRegistrationData( + BlockDecorSolarPanel.BTileEntity.class, "te_small_solar_panel" + ); + + private static final TileEntityRegistrationData SMALL_TREE_CUTTER_TEI = new TileEntityRegistrationData( + BlockDecorTreeCutter.BTileEntity.class, "te_small_tree_cutter" + ); + //-------------------------------------------------------------------------------------------------------------------- - //-- Registration list + //-- Block registration list //-------------------------------------------------------------------------------------------------------------------- private static final Object content[] = { @@ -420,6 +444,7 @@ public class ModBlocks SMALL_WASTE_INCINERATOR, WASTE_INCINERATOR_TEI, STRAIGHT_CHECK_VALVE, STRAIGHT_REDSTONE_VALVE, STRAIGHT_REDSTONE_ANALOG_VALVE, STRAIGHT_PIPE_VALVE_TEI, PASSIVE_FLUID_ACCUMULATOR, PASSIVE_FLUID_ACCUMULATOR_TEI, + SMALL_MINERAL_SMELTER, SMALL_MINERAL_SMELTER_TEI, CLINKER_BRICK_BLOCK, CLINKER_BRICK_SLAB, CLINKER_BRICK_STAIRS, @@ -467,11 +492,47 @@ public class ModBlocks }; private static final Object dev_content[] = { - SMALL_MINERAL_SMELTER, SMALL_MINERAL_SMELTER_TEI, - PANZERGLASS_SLAB, // check if another class is needed due to is_side_visible SIGN_MINDSTEP, + PANZERGLASS_SLAB, // @todo: check if another class is needed due to is_side_visible + SMALL_SOLAR_PANEL,SMALL_SOLAR_PANEL_TEI, // @todo: check power tuning <= Peltier generator + TREATED_WOOD_FLOOR, // @todo: check if textures need improvement + SMALL_TREE_CUTTER,SMALL_TREE_CUTTER_TEI, // @todo: test }; + //-------------------------------------------------------------------------------------------------------------------- + //-- Items + //-------------------------------------------------------------------------------------------------------------------- + + private static final Item[] modItems = { + }; + + private static final ArrayList registeredItems = new ArrayList<>(); + + @Nonnull + public static List getRegisteredItems() + { return Collections.unmodifiableList(registeredItems); } + + public static final void registerItems(RegistryEvent.Register event) + { + // Config based registry selection + int num_registrations_skipped = 0; + ArrayList allItems = new ArrayList<>(); + Collections.addAll(allItems, modItems); + final boolean woor = ModConfig.isWithoutOptOutRegistration(); + for(Item e:allItems) { + if((!woor) || (!ModConfig.isOptedOut(e))) { + registeredItems.add(e); + } else { + ++num_registrations_skipped; + } + } + for(Item e:registeredItems) event.getRegistry().register(e); + ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredItems.size()) + " items."); + if(num_registrations_skipped > 0) { + ModEngineersDecor.logger.info("Skipped registration of " + num_registrations_skipped + " items."); + } + } + //-------------------------------------------------------------------------------------------------------------------- //-- Init //-------------------------------------------------------------------------------------------------------------------- @@ -531,6 +592,9 @@ public class ModBlocks for(Block e:registeredBlocks) { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(e), 0, new ModelResourceLocation(e.getRegistryName(), "inventory")); } + for(Item e:registeredItems) { + if(e instanceof ItemDecor) ((ItemDecor)e).initModel(); + } } // Invoked from CommonProxy.registerItems() diff --git a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java index 72f9f6e..54617da 100644 --- a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java +++ b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java @@ -10,7 +10,6 @@ package wile.engineersdecor; import wile.engineersdecor.detail.*; import wile.engineersdecor.blocks.*; -import wile.engineersdecor.items.*; import net.minecraft.world.World; import net.minecraft.tileentity.TileEntity; import net.minecraft.client.multiplayer.WorldClient; @@ -124,11 +123,11 @@ public class ModEngineersDecor { @SubscribeEvent public static void registerBlocks(final RegistryEvent.Register event) - { ModBlocks.registerBlocks(event); } + { ModContent.registerBlocks(event); } @SubscribeEvent public static void registerItems(final RegistryEvent.Register event) - { ModBlocks.registerItemBlocks(event); ModItems.registerItems(event); } + { ModContent.registerItemBlocks(event); ModContent.registerItems(event); } @SubscribeEvent public static void registerRecipes(RegistryEvent.Register event) @@ -137,14 +136,14 @@ public class ModEngineersDecor @SideOnly(Side.CLIENT) @SubscribeEvent public static void registerModels(final ModelRegistryEvent event) - { ModBlocks.initModels(); ModItems.initModels(); } + { ModContent.initModels(); } } public static final CreativeTabs CREATIVE_TAB_ENGINEERSDECOR = (new CreativeTabs("tabengineersdecor") { @Override @SideOnly(Side.CLIENT) public @Nonnull ItemStack createIcon() - { return new ItemStack(ModBlocks.SIGN_MODLOGO); } + { return new ItemStack(ModContent.SIGN_MODLOGO); } }); //-------------------------------------------------------------------------------------------------------------------- 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 462e498..b5b9bee 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecor.java @@ -37,6 +37,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; + public class BlockDecor extends Block { @@ -77,9 +78,8 @@ public class BlockDecor extends Block setHardness((hardness > 0) ? hardness : 5.0f); setResistance((resistance > 0) ? resistance : 10.0f); setSoundType((sound==null) ? SoundType.STONE : sound); - setLightOpacity(0); - // @todo double check that instance variable - // not sure here ... if((config & CFG_TRANSLUCENT) != 0) this.translucent = true; + if(((config & (CFG_CUTOUT|CFG_TRANSLUCENT))!=0)) setLightOpacity(0); + if((config & CFG_TRANSLUCENT) != 0) this.translucent = true; this.config = config; this.aabb = boundingboxes; } @@ -192,5 +192,4 @@ public class BlockDecor extends Block @SuppressWarnings("deprecation") public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos) {} - } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java index 55508cb..0fe6ea0 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -248,7 +248,7 @@ public class BlockDecorDropper extends BlockDecorDirected Networking.PacketTileNotify.sendToServer(te, nbt); } else if(isPointInRegion(162, 66, 7, 9, mouseX, mouseY)) { NBTTagCompound nbt = new NBTTagCompound(); - nbt.setInteger("manual_trigger", 1); + nbt.setInteger("drop_logic", container.fields_[5] ^ BTileEntity.DROPLOGIC_CONTINUOUS); Networking.PacketTileNotify.sendToServer(te, nbt); } else if(isPointInRegion(132, 66, 9, 9, mouseX, mouseY)) { NBTTagCompound nbt = new NBTTagCompound(); @@ -322,8 +322,10 @@ public class BlockDecorDropper extends BlockDecorDirected { int filter_gate_offset = ((container.fields_[5] & BTileEntity.DROPLOGIC_FILTER_ANDGATE) != 0) ? 11 : 0; int extern_gate_offset = ((container.fields_[5] & BTileEntity.DROPLOGIC_EXTERN_ANDGATE) != 0) ? 11 : 0; + int pulse_mode_offset = ((container.fields_[5] & BTileEntity.DROPLOGIC_CONTINUOUS ) != 0) ? 10 : 0; drawTexturedModalRect(x0+132, y0+66, 179+filter_gate_offset, 66, 9, 9); drawTexturedModalRect(x0+148, y0+66, 179+extern_gate_offset, 66, 9, 9); + drawTexturedModalRect(x0+162, y0+66, 200+pulse_mode_offset, 66, 9, 9); } // drop timer running indicator { @@ -456,10 +458,11 @@ public class BlockDecorDropper extends BlockDecorDirected public static final int MAX_DROP_COUNT = 32; public static final int DROP_PERIOD_OFFSET = 10; /// - public static final int DROPLOGIC_FILTER_ANDGATE = 0x1; - public static final int DROPLOGIC_EXTERN_ANDGATE = 0x2; - public static final int DROPLOGIC_SILENT_DROP = 0x4; - public static final int DROPLOGIC_SILENT_OPEN = 0x8; + public static final int DROPLOGIC_FILTER_ANDGATE = 0x01; + public static final int DROPLOGIC_EXTERN_ANDGATE = 0x02; + public static final int DROPLOGIC_SILENT_DROP = 0x04; + public static final int DROPLOGIC_SILENT_OPEN = 0x08; + public static final int DROPLOGIC_CONTINUOUS = 0x10; /// private int filter_matches_[] = new int[CTRL_SLOTS_SIZE]; private int open_timer_ = 0; @@ -799,8 +802,10 @@ public class BlockDecorDropper extends BlockDecorDirected if(--tick_timer_ > 0) return; tick_timer_ = TICK_INTERVAL; boolean dirty = block_power_updated_; - boolean redstone_trigger = (block_power_signal_ && block_power_updated_); + final boolean continuous_mode = (drop_logic_ & DROPLOGIC_CONTINUOUS)!=0; + boolean redstone_trigger = (block_power_signal_ && ((block_power_updated_) || (continuous_mode))); boolean filter_trigger; + boolean filter_defined = false; boolean trigger; // Trigger logic { @@ -808,9 +813,9 @@ public class BlockDecorDropper extends BlockDecorDirected for(int i=INPUT_SLOTS_FIRST; i<(INPUT_SLOTS_FIRST+INPUT_SLOTS_SIZE); ++i) { if(stacks_.get(i).getCount() >= drop_count_) { droppable_slot_found = true; break; } } - int filter_nset = 0; // From filters / inventory checks { + int filter_nset = 0; int last_filter_matches_[] = filter_matches_.clone(); boolean slot_assigned = false; for(int ci=0; ci 1) ++nmatched; if(filter_matches_[i] != last_filter_matches_[i]) dirty = true; } - filter_trigger = ((filter_nset >0) && (nmatched > 0)); + filter_defined = (filter_nset > 0); + filter_trigger = ((filter_nset > 0) && (nmatched > 0)); if(((drop_logic_ & DROPLOGIC_FILTER_ANDGATE) != 0) && (nmatched != filter_nset)) filter_trigger = false; } // gates { - if(filter_nset > 0) { + if(filter_defined) { trigger = ((drop_logic_ & DROPLOGIC_EXTERN_ANDGATE) != 0) ? (filter_trigger && redstone_trigger) : (filter_trigger || redstone_trigger); } else { trigger = redstone_trigger; diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFull.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFull.java index 1110a9a..bde358b 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFull.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFull.java @@ -54,4 +54,8 @@ public class BlockDecorFull extends BlockDecor public boolean isNormalCube(IBlockState state) { return true; } + @Override + public int getLightValue(IBlockState state, IBlockAccess world, BlockPos pos) + { return (int)((config & CFG_LIGHT_VALUE_MASK) >> CFG_LIGHT_VALUE_SHIFT); } + } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java index 4c4de69..77dd784 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java @@ -15,6 +15,7 @@ import net.minecraft.block.properties.PropertyInteger; import net.minecraft.util.EnumHand; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import wile.engineersdecor.ModContent; import wile.engineersdecor.detail.ModAuxiliaries; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.material.Material; @@ -108,9 +109,9 @@ public class BlockDecorHorizontalSupport extends BlockDecor final EnumFacing dfacing = dstate.getValue(BlockDecorStraightPole.FACING); final BlockDecorStraightPole pole = (BlockDecorStraightPole)dstate.getBlock(); if((dfacing.getAxis() == EnumFacing.Axis.Y)) { - if((pole==ModBlocks.THICK_STEEL_POLE) || ((pole==ModBlocks.THICK_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) { + if((pole==ModContent.THICK_STEEL_POLE) || ((pole==ModContent.THICK_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) { down_connector = 2; - } else if((pole==ModBlocks.THIN_STEEL_POLE) || ((pole==ModBlocks.THIN_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) { + } else if((pole==ModContent.THIN_STEEL_POLE) || ((pole==ModContent.THIN_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) { down_connector = 1; } } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java new file mode 100644 index 0000000..1277b07 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java @@ -0,0 +1,177 @@ +/* + * @file BlockDecorDirected.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.util.math.MathHelper; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import wile.engineersdecor.ModEngineersDecor; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.BlockFaceShape; +import net.minecraft.block.state.IBlockState; +import net.minecraft.block.SoundType; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ITickable; +import net.minecraft.world.World; +import net.minecraft.world.IBlockAccess; +import net.minecraft.util.EnumHand; +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 BlockDecorSolarPanel extends BlockDecor +{ + public static final PropertyInteger EXPOSITION = PropertyInteger.create("exposition", 0, 4); + + public BlockDecorSolarPanel(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + { super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); } + + @Override + public boolean isOpaqueCube(IBlockState state) + { return false; } + + @Override + public boolean isFullCube(IBlockState state) + { return false; } + + @Override + public boolean isNormalCube(IBlockState state) + { return false; } + + @Override + public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, net.minecraft.entity.EntityLiving.SpawnPlacementType type) + { return false; } + + @Override + public int getLightValue(IBlockState state, IBlockAccess world, BlockPos pos) + { return 0; } + + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face) + { return BlockFaceShape.UNDEFINED; } + + @Override + public IBlockState getStateFromMeta(int meta) + { return this.getDefaultState().withProperty(EXPOSITION, (meta & 0x7)); } + + @Override + public int getMetaFromState(IBlockState state) + { return state.getValue(EXPOSITION); } + + @Override + protected BlockStateContainer createBlockState() + { return new BlockStateContainer(this, EXPOSITION); } + + @Override + public boolean canPlaceBlockOnSide(World world, BlockPos pos, EnumFacing side) + { return super.canPlaceBlockOnSide(world, pos, side); } + + @Override + public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) + { return getDefaultState().withProperty(EXPOSITION, 0); } + + @Override + public boolean hasTileEntity(IBlockState state) + { return true; } + + @Override + @Nullable + public TileEntity createTileEntity(World world, IBlockState state) + { return new BlockDecorSolarPanel.BTileEntity(); } + + //-------------------------------------------------------------------------------------------------------------------- + // Tile entity + //-------------------------------------------------------------------------------------------------------------------- + + public static class BTileEntity extends TileEntity implements ITickable + { + public static final int DEFAULT_PEAK_POWER = 45; + public static final int TICK_INTERVAL = 8; + public static final int ACCUMULATION_INTERVAL = 4; + private static final EnumFacing transfer_directions_[] = {EnumFacing.DOWN, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST, EnumFacing.NORTH }; + private static int peak_power_per_tick_ = DEFAULT_PEAK_POWER; + private static int max_power_storage_ = 10000; + private int tick_timer_ = 0; + private int recalc_timer_ = 0; + private int accumulated_power_ = 0; + + public static void on_config(int peak_power_per_tick) + { + peak_power_per_tick_ = peak_power_per_tick; + ModEngineersDecor.logger.info("Config small solar panel: Peak production:" + peak_power_per_tick_ + "/tick"); + } + + //------------------------------------------------------------------------------------------------------------------ + + public BTileEntity() + {} + + public void readnbt(NBTTagCompound nbt, boolean update_packet) + { accumulated_power_ = nbt.getInteger("energy"); } + + protected void writenbt(NBTTagCompound nbt, boolean update_packet) + { nbt.setInteger("energy", accumulated_power_); } + + // TileEntity ------------------------------------------------------------------------------ + + @Override + public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns) + { return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorSolarPanel)); } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { super.readFromNBT(nbt); readnbt(nbt, false); } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound nbt) + { super.writeToNBT(nbt); writenbt(nbt, false); return nbt; } + + @Override + public void update() + { + if((world.isRemote) || (--tick_timer_ > 0)) return; + tick_timer_ = TICK_INTERVAL; + if(!world.canSeeSky(pos)) { tick_timer_ = TICK_INTERVAL * 5; return; } + if(accumulated_power_ > 0) { + for(int i=0; (i0); ++i) { + final EnumFacing f = transfer_directions_[i]; + TileEntity te = world.getTileEntity(pos.offset(f)); + if((te==null) || (!(te.hasCapability(CapabilityEnergy.ENERGY, f.getOpposite())))) continue; + IEnergyStorage es = te.getCapability(CapabilityEnergy.ENERGY, f.getOpposite()); + if(!es.canReceive()) continue; + accumulated_power_ = MathHelper.clamp(accumulated_power_-es.receiveEnergy(accumulated_power_, false),0, accumulated_power_); + } + } + if(--recalc_timer_ > 0) return; + recalc_timer_ = ACCUMULATION_INTERVAL + ((int)(Math.random()+.5)); + IBlockState state = world.getBlockState(pos); + int theta = ((((int)(world.getCelestialAngleRadians(1f) * (180.0/Math.PI)))+90) % 360); + int e = 2; + if(theta > 340) e = 2; + else if(theta < 45) e = 0; + else if(theta < 80) e = 1; + else if(theta < 100) e = 2; + else if(theta < 135) e = 3; + else if(theta < 190) e = 4; + IBlockState nstate = state.withProperty(EXPOSITION, e); + if(nstate != state) world.setBlockState(pos, nstate, 1|2); + double rf = Math.abs(1.0-(((double)Math.abs(MathHelper.clamp(theta, 0, 180)-90))/90)); + rf = Math.sqrt(rf) * world.getSunBrightnessFactor(1f) * ((TICK_INTERVAL*ACCUMULATION_INTERVAL)+2) * peak_power_per_tick_; + accumulated_power_ = Math.min(accumulated_power_+(int)rf, max_power_storage_); + } + } +} diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java new file mode 100644 index 0000000..e996028 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorTreeCutter.java @@ -0,0 +1,209 @@ +/* + * @file BlockFurnace.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * ED Lab furnace. + */ +package wile.engineersdecor.blocks; + +import wile.engineersdecor.ModEngineersDecor; +import wile.engineersdecor.detail.TreeCutting; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.world.World; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.init.SoundEvents; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.*; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Random; + + +public class BlockDecorTreeCutter extends BlockDecorDirectedHorizontal +{ + public static final PropertyBool ACTIVE = PropertyBool.create("active"); + + public BlockDecorTreeCutter(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB) + { + super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); + setLightOpacity(0); + } + + @Override + protected BlockStateContainer createBlockState() + { return new BlockStateContainer(this, FACING, ACTIVE); } + + @Override + public IBlockState getStateFromMeta(int meta) + { return getDefaultState().withProperty(FACING, EnumFacing.byHorizontalIndex(meta & 0x3)).withProperty(ACTIVE, (meta & 0x4)!=0); } + + @Override + public int getMetaFromState(IBlockState state) + { return (state.getValue(FACING).getHorizontalIndex() & 0x3) | (state.getValue(ACTIVE) ? 4 : 0); } + + @Override + public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) + { return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand).withProperty(ACTIVE, false); } + + @Override + public boolean hasTileEntity(IBlockState state) + { return true; } + + @Override + @Nullable + public TileEntity createTileEntity(World world, IBlockState state) + { return new BlockDecorTreeCutter.BTileEntity(); } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rnd) + { + if((state.getBlock()!=this) || (!state.getValue(ACTIVE))) return; + final double rv = rnd.nextDouble(); + if(rv > 0.8) return; + final double x=0.5+pos.getX(), y=0.5+pos.getY(), z=0.5+pos.getZ(); + final double xc=0.52, xr=rnd.nextDouble()*0.4-0.2, yr=(y-0.3+rnd.nextDouble()*0.2); + switch(state.getValue(FACING)) { + case WEST: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x-xc, yr, z+xr, 0.0, 0.0, 0.0); break; + case EAST: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xc, yr, z+xr, 0.0, 0.0, 0.0); break; + case NORTH: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xr, yr, z-xc, 0.0, 0.0, 0.0); break; + default: world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, x+xr, yr, z+xc, 0.0, 0.0, 0.0); break; + } + } + + //-------------------------------------------------------------------------------------------------------------------- + // Tile entity + //-------------------------------------------------------------------------------------------------------------------- + + public static class BTileEntity extends TileEntity implements ITickable, IEnergyStorage + { + public static final int IDLE_TICK_INTERVAL = 40; + public static final int TICK_INTERVAL = 5; + public static final int BOOST_FACTOR = 6; + public static final int DEFAULT_BOOST_ENERGY = 64; + public static final int DEFAULT_CUTTING_TIME_NEEDED = 20 * 60; // 60 secs, so that people don't come to the bright idea to carry one with them. + private static int boost_energy_consumption = DEFAULT_BOOST_ENERGY; + private static int cutting_time_needed = DEFAULT_CUTTING_TIME_NEEDED; + + private int tick_timer_; + private int proc_time_elapsed_; // small, not saved in nbt. + private int boost_energy_; // small, not saved in nbt. + + public static void on_config(int boost_energy_per_tick) + { + boost_energy_consumption = TICK_INTERVAL * MathHelper.clamp(boost_energy_per_tick, 16, 512); + ModEngineersDecor.logger.info("Config tree cutter: Boost energy consumption:" + boost_energy_consumption + "rf/t"); + } + + public BTileEntity() + {} + + // TileEntity ------------------------------------------------------------------------------ + + @Override + public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns) + { return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorTreeCutter)); } + + // IEnergyStorage ---------------------------------------------------------------------------- + + @Override + public boolean canExtract() + { return false; } + + @Override + public boolean canReceive() + { return true; } + + @Override + public int getMaxEnergyStored() + { return boost_energy_consumption; } + + @Override + public int getEnergyStored() + { return boost_energy_; } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) + { return 0; } + + @Override + public int receiveEnergy(int maxReceive, boolean simulate) + { // only speedup support, no buffering, not in nbt -> no markdirty + if((boost_energy_ >= boost_energy_consumption) || (maxReceive < boost_energy_consumption)) return 0; + if(!simulate) boost_energy_ = boost_energy_consumption; + return boost_energy_consumption; + } + + // Capability export ---------------------------------------------------------------------------- + + @Override + public boolean hasCapability(Capability cap, EnumFacing facing) + { return ((cap==CapabilityEnergy.ENERGY)) || super.hasCapability(cap, facing); } + + @Override + @SuppressWarnings("unchecked") + @Nullable + public T getCapability(Capability capability, @Nullable EnumFacing facing) + { + if(capability == CapabilityEnergy.ENERGY) { + return (T)this; + } else { + return super.getCapability(capability, facing); + } + } + + // ITickable ------------------------------------------------------------------------------------ + + @Override + public void update() + { + if(--tick_timer_ > 0) return; + if(world.isRemote) { + if(!world.getBlockState(pos).getValue(ACTIVE)) { + tick_timer_ = TICK_INTERVAL; + } else { + tick_timer_ = 1; + world.playSound(pos.getX(), pos.getY(), pos.getZ(), SoundEvents.BLOCK_WOOD_HIT, SoundCategory.BLOCKS, 0.1f, 1.0f, false); + } + } else { + tick_timer_ = TICK_INTERVAL; + final IBlockState device_state = world.getBlockState(pos); + final BlockPos tree_pos = pos.offset(device_state.getValue(FACING)); + final IBlockState tree_state = world.getBlockState(tree_pos); + if(!TreeCutting.canChop(tree_state) || (world.isBlockPowered(pos))) { + if(device_state.getValue(ACTIVE)) world.setBlockState(pos, device_state.withProperty(ACTIVE, false), 1|2); + proc_time_elapsed_ = 0; + tick_timer_ = IDLE_TICK_INTERVAL; + return; + } + proc_time_elapsed_ += TICK_INTERVAL; + if(boost_energy_ >= boost_energy_consumption) { boost_energy_ = 0; proc_time_elapsed_ += TICK_INTERVAL*BOOST_FACTOR; } + boolean active = true; + if(proc_time_elapsed_ >= cutting_time_needed) { + proc_time_elapsed_ = 0; + TreeCutting.chopTree(world, tree_state, tree_pos, 512, false); + world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.BLOCK_WOOD_BREAK, SoundCategory.BLOCKS, 1.0f, 1.0f); + active = false; + } + if(device_state.getValue(ACTIVE) != active) { + world.setBlockState(pos, device_state.withProperty(ACTIVE, active), 1|2); + } + } + } + } +} diff --git a/1.12/src/main/java/wile/engineersdecor/detail/BlockCategories.java b/1.12/src/main/java/wile/engineersdecor/detail/BlockCategories.java new file mode 100644 index 0000000..8a6e1d0 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/detail/BlockCategories.java @@ -0,0 +1,101 @@ +/* + * @file BlockCategories.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Oredict based block category cache. + */ +package wile.engineersdecor.detail; + +import wile.engineersdecor.ModEngineersDecor; +import net.minecraft.block.*; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.IBlockState; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + + +public class BlockCategories +{ + private static Set logs_ = new HashSet(); + private static Set leaves_ = new HashSet(); + + public static final Set logs() + { return logs_; } // wrap in case immutable needed one time. + + public static final Set leaves() + { return leaves_; } + + + public static boolean isLog(IBlockState state) + { + final Block block = state.getBlock(); + return (block instanceof BlockLog) || (block instanceof BlockNewLog) || (logs().contains(block)); + } + + public static boolean isLeaves(IBlockState state) + { + if(state.getMaterial()==Material.LEAVES) return true; + final Block block = state.getBlock(); + return (block instanceof BlockLeaves) || (leaves().contains(block)); + } + + public static final boolean isSameLeaves(IBlockState a, IBlockState b) + { return (a.getBlock() == b.getBlock()); } + + public static final boolean isSameLog(IBlockState a, IBlockState b) + { + // very strange ... + if(a.getBlock()!=b.getBlock()) { + return false; + } else if(a.getBlock() instanceof BlockNewLog) { + return a.getValue(BlockNewLog.VARIANT) == b.getValue(BlockNewLog.VARIANT); + } else if(a.getBlock() instanceof BlockOldLog) { + return a.getValue(BlockOldLog.VARIANT) == b.getValue(BlockOldLog.VARIANT); + } else { + // Uagh, that hurts the heart of performance ... + final IProperty prop = a.getPropertyKeys().stream().filter( (IProperty p) -> (p.getName().contains("variant") || p.getName().contains("type"))).findFirst().orElse(null); + if(prop==null) return false; + return a.getValue(prop).equals(b.getValue(prop)); + } + } + + public static final void reload() + { + { + HashSet logs = new HashSet(); + for(final String ore_name : OreDictionary.getOreNames()) { + if(!ore_name.startsWith("logWood")) continue; + final List stacks = OreDictionary.getOres(ore_name, false); + for(ItemStack stack : stacks) { + final Item item = stack.getItem(); + if(!(item instanceof ItemBlock)) continue; + logs.add(((ItemBlock)item).getBlock()); + } + } + logs_ = logs; + ModEngineersDecor.logger.info("Found "+logs.size()+" types of 'choppable' log."); + } + { + HashSet leaves = new HashSet(); + for(final String ore_name : OreDictionary.getOreNames()) { + if(!ore_name.startsWith("treeLeaves")) continue; + final List stacks = OreDictionary.getOres(ore_name, false); + for(ItemStack stack : stacks) { + final Item item = stack.getItem(); + if(!(item instanceof ItemBlock)) continue; + leaves.add(((ItemBlock)item).getBlock()); + } + } + leaves_ = leaves; + ModEngineersDecor.logger.info("Found "+leaves.size()+" types of leaves."); + } + } +} 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 3a1ba81..c89380f 100644 --- a/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java +++ b/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java @@ -9,6 +9,7 @@ */ package wile.engineersdecor.detail; +import wile.engineersdecor.ModContent; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.blocks.*; import net.minecraftforge.common.config.Config; @@ -320,6 +321,17 @@ public class ModConfig @Config.Name("E-furnace: Power consumption") @Config.RangeInt(min=10, max=256) public int e_furnace_power_consumption = BlockDecorFurnaceElectrical.BTileEntity.DEFAULT_ENERGY_CONSUMPTION; + + @Config.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, " + + "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." + }) + @Config.Name("Solar panel: Peak power") + @Config.RangeInt(min=5, max=128) + public int solar_panel_peak_power = BlockDecorSolarPanel.BTileEntity.DEFAULT_PEAK_POWER; } @SuppressWarnings("unused") @@ -340,7 +352,7 @@ public class ModConfig @SuppressWarnings("unused") public static final void onPostInit(FMLPostInitializationEvent event) - { for(Block e:ModBlocks.getRegisteredBlocks()) ModConfig.isOptedOut(e, true); } + { for(Block e: ModContent.getRegisteredBlocks()) ModConfig.isOptedOut(e, true); } private static final ArrayList includes_ = new ArrayList(); private static final ArrayList excludes_ = new ArrayList(); @@ -360,7 +372,7 @@ public class ModConfig public static final boolean isOptedOut(final @Nullable Block block, boolean with_log_details) { if((block == null) || (optout==null)) return true; - if(block == ModBlocks.SIGN_MODLOGO) return true; + if(block == ModContent.SIGN_MODLOGO) return true; if((!zmisc.with_experimental) && (block instanceof ModAuxiliaries.IExperimentalFeature)) return true; final String rn = block.getRegistryName().getPath(); // Force-include/exclude pattern matching @@ -432,6 +444,7 @@ public class ModConfig BlockDecorCraftingTable.on_config(optout.without_crafting_table_history, false, tweaks.with_crafting_quickmove_buttons); BlockDecorPipeValve.on_config(tweaks.pipevalve_max_flowrate, tweaks.pipevalve_redstone_slope); BlockDecorFurnaceElectrical.BTileEntity.on_config(tweaks.e_furnace_speed_percent, tweaks.e_furnace_power_consumption); + BlockDecorSolarPanel.BTileEntity.on_config(tweaks.solar_panel_peak_power); { optout.includes = optout.includes.toLowerCase().replaceAll(ModEngineersDecor.MODID+":", "").replaceAll("[^*_,a-z0-9]", ""); if(!optout.includes.isEmpty()) ModEngineersDecor.logger.info("Pattern includes: '" + optout.includes + "'"); diff --git a/1.12/src/main/java/wile/engineersdecor/detail/TreeCutting.java b/1.12/src/main/java/wile/engineersdecor/detail/TreeCutting.java new file mode 100644 index 0000000..3ee5b6a --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/detail/TreeCutting.java @@ -0,0 +1,168 @@ +/* + * @file TreeCutting.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Simple tree cutting algorithm. + */ +package wile.engineersdecor.detail; + +import com.google.common.collect.ImmutableList; +import net.minecraft.block.Block; +import net.minecraft.block.BlockVine; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3i; +import net.minecraft.world.World; + +import java.util.*; + +public class TreeCutting +{ + private static final List hoffsets = ImmutableList.of( + new Vec3i( 1,0, 0), new Vec3i( 1,0, 1), new Vec3i( 0,0, 1), + new Vec3i(-1,0, 1), new Vec3i(-1,0, 0), new Vec3i(-1,0,-1), + new Vec3i( 0,0,-1), new Vec3i( 1,0,-1) + ); + + private static List findBlocksAround(final World world, final BlockPos centerPos, final IBlockState leaf_type_state, final Set checked, int recursion_left) + { + ArrayList to_decay = new ArrayList(); + for(int y=-1; y<=1; ++y) { + final BlockPos layer = centerPos.add(0,y,0); + for(Vec3i v:hoffsets) { + BlockPos pos = layer.add(v); + if((!checked.contains(pos)) && BlockCategories.isSameLeaves(leaf_type_state, world.getBlockState(pos))) { + checked.add(pos); + to_decay.add(pos); + if(recursion_left > 0) { + to_decay.addAll(findBlocksAround(world, pos, leaf_type_state, checked, recursion_left-1)); + } + } + } + } + return to_decay; + } + + public static boolean canChop(IBlockState state) + { return BlockCategories.isLog(state); } + + /** + * Chops a tree, returns the damage that the cutting tool shall take + */ + public static int chopTree(World world, IBlockState broken_state, BlockPos startPos, int max_blocks_to_break, boolean without_target_block) + { + if(!BlockCategories.isLog(broken_state)) return 0; + final long ymin = startPos.getY(); + final long max_leaf_distance = 6; + Set checked = new HashSet(); + ArrayList to_break = new ArrayList(); + ArrayList to_decay = new ArrayList(); + checked.add(startPos); + // Initial simple layer-up search of same logs. This forms the base corpus, and only leaves and + // leaf-enclosed logs attached to this corpus may be broken/decayed. + { + LinkedList queue = new LinkedList(); + LinkedList upqueue = new LinkedList(); + queue.add(startPos); + int cutlevel = 0; + int steps_left = 64; + while(!queue.isEmpty() && (--steps_left >= 0)) { + final BlockPos pos = queue.removeFirst(); + // Vertical search + final BlockPos uppos = pos.up(); + final IBlockState upstate = world.getBlockState(uppos); + if(!checked.contains(uppos)) { + checked.add(uppos); + if(BlockCategories.isSameLog(upstate, broken_state)) { + // Up is log + upqueue.add(uppos); + to_break.add(uppos); + steps_left = 64; + } else { + boolean isleaf = BlockCategories.isLeaves(upstate); + if(isleaf || world.isAirBlock(uppos) || (upstate.getBlock() instanceof BlockVine)) { + if(isleaf) to_decay.add(uppos); + // Up is air, check adjacent for diagonal up (e.g. Accacia) + for(Vec3i v:hoffsets) { + final BlockPos p = uppos.add(v); + if(checked.contains(p)) continue; + checked.add(p); + final IBlockState st = world.getBlockState(p); + final Block bl = st.getBlock(); + if(BlockCategories.isSameLog(st, broken_state)) { + queue.add(p); + to_break.add(p); + } else if(BlockCategories.isLeaves(st)) { + to_decay.add(p); + } + } + } + } + } + // Lateral search + for(Vec3i v:hoffsets) { + final BlockPos p = pos.add(v); + if(checked.contains(p)) continue; + checked.add(p); + if(p.distanceSq(new BlockPos(startPos.getX(), p.getY(), startPos.getZ())) > (3+cutlevel*cutlevel)) continue; + final IBlockState st = world.getBlockState(p); + final Block bl = st.getBlock(); + if(BlockCategories.isSameLog(st, broken_state)) { + queue.add(p); + to_break.add(p); + } else if(BlockCategories.isLeaves(st)) { + to_decay.add(p); + } + } + if(queue.isEmpty() && (!upqueue.isEmpty())) { + queue = upqueue; + upqueue = new LinkedList(); + ++cutlevel; + } + } + } + { + // Determine lose logs between the leafs + for(BlockPos pos:to_decay) { + int dist = 1; + to_break.addAll(findBlocksAround(world, pos, broken_state, checked, dist)); + } + } + if(!to_decay.isEmpty()) { + final IBlockState leaf_type_state = world.getBlockState(to_decay.get(0)); + final ArrayList leafs = to_decay; + to_decay = new ArrayList(); + for(BlockPos pos:leafs) { + int dist = 2; + to_decay.add(pos); + to_decay.addAll(findBlocksAround(world, pos, leaf_type_state, checked, dist)); + } + } + if(without_target_block) { + checked.remove(startPos); + } else { + to_break.add(startPos); + } + int num_broken = 0; + Collections.reverse(to_break); + for(BlockPos pos:to_break) { + if(++num_broken > max_blocks_to_break) break; + IBlockState state = world.getBlockState(pos); + world.setBlockToAir(pos); + state.getBlock().dropBlockAsItem(world, pos, state, 0); + } + for(BlockPos pos:to_decay) { + if(++num_broken > max_blocks_to_break) break; + IBlockState state = world.getBlockState(pos); + world.setBlockToAir(pos); + state.getBlock().dropBlockAsItem(world, pos, state, 0); + } + { + // And now the bill. + return MathHelper.clamp(((to_break.size()*6/5)+(to_decay.size()/10)-1), 1, 65535); + } + } +} diff --git a/1.12/src/main/java/wile/engineersdecor/eapi/jei/JEIPlugin.java b/1.12/src/main/java/wile/engineersdecor/eapi/jei/JEIPlugin.java index 8c1d110..4e17107 100644 --- a/1.12/src/main/java/wile/engineersdecor/eapi/jei/JEIPlugin.java +++ b/1.12/src/main/java/wile/engineersdecor/eapi/jei/JEIPlugin.java @@ -9,8 +9,8 @@ package wile.engineersdecor.eapi.jei; import wile.engineersdecor.ModEngineersDecor; -import wile.engineersdecor.blocks.BlockDecorCraftingTable; -import wile.engineersdecor.blocks.ModBlocks; +import wile.engineersdecor.ModContent; +import wile.engineersdecor.blocks.*; import wile.engineersdecor.detail.ModConfig; import net.minecraft.block.Block; import net.minecraft.item.Item; @@ -25,7 +25,7 @@ public class JEIPlugin implements mezz.jei.api.IModPlugin { // Block/item hiding try { - for(Block e:ModBlocks.getRegisteredBlocks()) { + for(Block e:ModContent.getRegisteredBlocks()) { if(ModConfig.isOptedOut(e)) { ItemStack stack = new ItemStack(Item.getItemFromBlock(e)); if(stack != null) { diff --git a/1.12/src/main/java/wile/engineersdecor/items/ModItems.java b/1.12/src/main/java/wile/engineersdecor/items/ModItems.java deleted file mode 100644 index 4e416c2..0000000 --- a/1.12/src/main/java/wile/engineersdecor/items/ModItems.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * @file ModItems.java - * @author Stefan Wilhelm (wile) - * @copyright (C) 2018 Stefan Wilhelm - * @license MIT (see https://opensource.org/licenses/MIT) - * - * Definition and initialisation of items of this module. - */ -package wile.engineersdecor.items; - -import wile.engineersdecor.ModEngineersDecor; -import wile.engineersdecor.detail.ModConfig; -import net.minecraft.item.Item; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.ArrayList; -import java.util.List; -import java.util.Collections; -import javax.annotation.Nonnull; - -@SuppressWarnings("unused") -public class ModItems -{ - - private static final Item[] modItems = { - }; - - private static final ArrayList registeredItems = new ArrayList<>(); - - @Nonnull - public static List getRegisteredItems() - { return Collections.unmodifiableList(registeredItems); } - - public static final void registerItems(RegistryEvent.Register event) - { - // Config based registry selection - int num_registrations_skipped = 0; - ArrayList allItems = new ArrayList<>(); - Collections.addAll(allItems, modItems); - final boolean woor = ModConfig.isWithoutOptOutRegistration(); - for(Item e:allItems) { - if((!woor) || (!ModConfig.isOptedOut(e))) { - registeredItems.add(e); - } else { - ++num_registrations_skipped; - } - } - for(Item e:registeredItems) event.getRegistry().register(e); - ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredItems.size()) + " items."); - if(num_registrations_skipped > 0) { - ModEngineersDecor.logger.info("Skipped registration of " + num_registrations_skipped + " items."); - } - } - - @SideOnly(Side.CLIENT) - public static final void initModels() - { - for(Item e:registeredItems) { - if(e instanceof ItemDecor) ((ItemDecor)e).initModel(); - } - } -} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json new file mode 100644 index 0000000..ae18698 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json @@ -0,0 +1,17 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:device/small_solar_panel_model_exp1" + }, + "variants": { + "normal": [{}], + "inventory": [{}], + "exposition": { + "0" : { "model": "engineersdecor:device/small_solar_panel_model_exp0" }, + "1" : {}, + "2" : { "model": "engineersdecor:device/small_solar_panel_model_exp2" }, + "3" : { "model": "engineersdecor:device/small_solar_panel_model_exp3" }, + "4" : { "model": "engineersdecor:device/small_solar_panel_model_exp4" } + } + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/small_tree_cutter.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/small_tree_cutter.json new file mode 100644 index 0000000..060f4d3 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/small_tree_cutter.json @@ -0,0 +1,12 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:device/small_tree_cutter_model" + }, + "variants": { + "normal": [{}], + "inventory": [{}], + "facing": { "north": {"y":0}, "south": {"y":180}, "west": {"y":-90}, "east": {"y":90}, "up":{}, "down":{} }, + "active": { "true":{ "model": "engineersdecor:device/small_tree_cutter_model_active" }, "false":{}} + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_floor.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_floor.json new file mode 100644 index 0000000..cd2d6ab --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_floor.json @@ -0,0 +1,16 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:std/decor_full_block_model", + "textures": { "all": "engineersdecor:blocks/furniture/treated_wood_floor_texture_1" } + }, + "variants": { + "normal": [ + { "textures":{ "all": "engineersdecor:blocks/furniture/treated_wood_floor_texture_1" }}, + { "textures":{ "all": "engineersdecor:blocks/furniture/treated_wood_floor_texture_2" }}, + { "textures":{ "all": "engineersdecor:blocks/furniture/treated_wood_floor_texture_3" }}, + { "textures":{ "all": "engineersdecor:blocks/furniture/treated_wood_floor_texture_4" }} + ], + "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 0715adb..a8aed1b 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 @@ -36,6 +36,8 @@ tile.engineersdecor.rebar_concrete_tile_slab.name=Rebar Concrete Tile Slab tile.engineersdecor.rebar_concrete_tile_slab.help=§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian. tile.engineersdecor.panzerglass_slab.name=Panzer Glass Slab tile.engineersdecor.panzerglass_slab.help=§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible. +tile.engineersdecor.treated_wood_floor.name=Treated Wood Floor +tile.engineersdecor.treated_wood_floor.help=§6Decorative floor tiles with texture variations.§r #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.rebar_concrete_wall.name=Rebar Concrete Wall tile.engineersdecor.rebar_concrete_wall.help=§6Steel reinforced concrete wall.§r Expensive but Creeper-proof like obsidian. @@ -155,6 +157,15 @@ tile.engineersdecor.small_mineral_smelter.help=§6High temperature, high insulat Heats up mineral blocks to magma blocks, and finally to lava. Due to the \ miniturized device size the process is rather inefficient - much time and \ energy is needed to liquefy a stone block. +tile.engineersdecor.small_solar_panel.name=Small Solar Panel +tile.engineersdecor.small_solar_panel.help=§6Produces a small amount of power when exposed to sunlight.§r\n\ + Useful for charging LF capacitors in remote systems with low consumption. The \ + internal charge pump circuit accumulates and frequently transfers RF. Production \ + depends on day time and the weather. +tile.engineersdecor.small_tree_cutter.name=Small Tree Cutter +tile.engineersdecor.small_tree_cutter.help=§6Chops grown trees in front of it.§r\n\ + Does not collect the lumbers. Deactivate with a redstone signal. \ + Provide RF power to boost the cutting speed. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.sign_decor.name=Sign Plate (Engineer's decor) tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots. 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 3abd875..f4b59c9 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 @@ -36,6 +36,8 @@ tile.engineersdecor.rebar_concrete_tile_slab.name=Железобетонная tile.engineersdecor.rebar_concrete_tile_slab.help=§6Бетонная плитка, усиленная сталью.§r Дорогая, но взрывоустойчивая, как обсидиан. tile.engineersdecor.panzerglass_slab.name=Плита из бронированного стекла tile.engineersdecor.panzerglass_slab.help=§6Усиленная стеклянная плита.§r Дорогая, взрывоустойчивая. Имеет тёмно-серый оттенок, слегка видны структурные линии. +tile.engineersdecor.treated_wood_floor.name=Treated Wood Floor +#tile.engineersdecor.treated_wood_floor.help=§6Decorative floor tiles with texture variations.§r #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.rebar_concrete_wall.name=Железобетонная стена tile.engineersdecor.rebar_concrete_wall.help=§6Стальная железобетонная стена.§r Дорогая, но взрывоустойчивая, как обсидиан. @@ -150,6 +152,15 @@ tile.engineersdecor.small_mineral_smelter.name=Small Mineral Melting Furnace Heats up mineral blocks to magma blocks, and finally to lava. Due to the \ miniturized device size the process is rather inefficient - much time and \ energy is needed to liquefy a stone block. +tile.engineersdecor.small_solar_panel.name=Small Solar Panel +#tile.engineersdecor.small_solar_panel.help=§6Produces a small amount of power when exposed to sunlight.§r\n\ + Useful for charging LF capacitors in remote systems with low consumption. The \ + internal charge pump circuit accumulates and frequently transfers RF. Production \ + depends on day time and the weather. +tile.engineersdecor.small_tree_cutter.name=Small Tree Cutter +#tile.engineersdecor.small_tree_cutter.help=§6Chops grown trees in front of it.§r\n\ + Does not collect the lumbers. Deactivate with a redstone signal. \ + Provide RF power to boost the cutting speed. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.sign_decor.name=Табличка с надписью (Логотип Engineer's decor) tile.engineersdecor.sign_decor.help=§Это не должно быть крафтовым или видимым в JEI. Используется для творческой вкладки и скриншотов. diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/zh_cn.lang b/1.12/src/main/resources/assets/engineersdecor/lang/zh_cn.lang index abaa95b..4537106 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/zh_cn.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/zh_cn.lang @@ -36,6 +36,8 @@ tile.engineersdecor.rebar_concrete_tile_slab.name=Rebar Concrete Tile Slab #tile.engineersdecor.rebar_concrete_tile_slab.help=§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian. tile.engineersdecor.panzerglass_slab.name=Panzer Glass Slab #tile.engineersdecor.panzerglass_slab.help=§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible. +tile.engineersdecor.treated_wood_floor.name=Treated Wood Floor +#tile.engineersdecor.treated_wood_floor.help=§6Decorative floor tiles with texture variations.§r #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.rebar_concrete_wall.name=钢筋混凝土墙 tile.engineersdecor.rebar_concrete_wall.help=§6钢筋混凝土墙.§r 昂贵,但像黑曜石一样防苦力怕. @@ -153,6 +155,15 @@ tile.engineersdecor.small_mineral_smelter.name=Small Mineral Melting Furnace Heats up mineral blocks to magma blocks, and finally to lava. Due to the \ miniturized device size the process is rather inefficient - much time and \ energy is needed to liquefy a stone block. +tile.engineersdecor.small_solar_panel.name=Small Solar Panel +#tile.engineersdecor.small_solar_panel.help=§6Produces a small amount of power when exposed to sunlight.§r\n\ + Useful for charging LF capacitors in remote systems with low consumption. The \ + internal charge pump circuit accumulates and frequently transfers RF. Production \ + depends on day time and the weather. +tile.engineersdecor.small_tree_cutter.name=Small Tree Cutter +#tile.engineersdecor.small_tree_cutter.help=§6Chops grown trees in front of it.§r\n\ + Does not collect the lumbers. Deactivate with a redstone signal. \ + Provide RF power to boost the cutting speed. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.sign_decor.name=Sign Plate (Engineer's decor) #tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots. diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json new file mode 100644 index 0000000..b1b1411 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/small_solar_panel_side", + "m": "engineersdecor:blocks/device/small_solar_panel_parts", + "particle": "engineersdecor:blocks/device/small_solar_panel_parts", + "tb": "engineersdecor:blocks/device/small_solar_panel_topbottom", + "p": "engineersdecor:blocks/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_solar_panel_model_exp1.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp1.json new file mode 100644 index 0000000..adc28f6 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp1.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/small_solar_panel_side", + "m": "engineersdecor:blocks/device/small_solar_panel_parts", + "particle": "engineersdecor:blocks/device/small_solar_panel_parts", + "tb": "engineersdecor:blocks/device/small_solar_panel_topbottom", + "p": "engineersdecor:blocks/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_solar_panel_model_exp2.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp2.json new file mode 100644 index 0000000..b8a8eab --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp2.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/small_solar_panel_side", + "m": "engineersdecor:blocks/device/small_solar_panel_parts", + "particle": "engineersdecor:blocks/device/small_solar_panel_parts", + "tb": "engineersdecor:blocks/device/small_solar_panel_topbottom", + "p": "engineersdecor:blocks/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_solar_panel_model_exp3.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp3.json new file mode 100644 index 0000000..d8de2ba --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp3.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/small_solar_panel_side", + "m": "engineersdecor:blocks/device/small_solar_panel_parts", + "particle": "engineersdecor:blocks/device/small_solar_panel_parts", + "tb": "engineersdecor:blocks/device/small_solar_panel_topbottom", + "p": "engineersdecor:blocks/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_solar_panel_model_exp4.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp4.json new file mode 100644 index 0000000..4ab17d9 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp4.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/small_solar_panel_side", + "m": "engineersdecor:blocks/device/small_solar_panel_parts", + "particle": "engineersdecor:blocks/device/small_solar_panel_parts", + "tb": "engineersdecor:blocks/device/small_solar_panel_topbottom", + "p": "engineersdecor:blocks/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_tree_cutter_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_tree_cutter_model.json new file mode 100644 index 0000000..79ef38f --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_tree_cutter_model.json @@ -0,0 +1,217 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/tree_cutter_side", + "3": "engineersdecor:blocks/device/tree_cutter_top", + "particle": "engineersdecor:blocks/device/tree_cutter_side", + "b": "engineersdecor:blocks/device/tree_cutter_blade_off", + "top": "engineersdecor:blocks/device/tree_cutter_bottom" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 3, 16], + "faces": { + "north": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} + } + }, + { + "from": [0, 3, 0], + "to": [3, 8, 16], + "faces": { + "north": {"uv": [13, 0, 16, 5], "texture": "#2"}, + "east": {"uv": [0, 3, 16, 8], "texture": "#2"}, + "south": {"uv": [0, 8, 3, 13], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 13], "texture": "#2"}, + "up": {"uv": [0, 0, 3, 16], "texture": "#3"}, + "down": {"uv": [0, 0, 3, 16], "texture": "#top"} + } + }, + { + "from": [3, 3, 13], + "to": [16, 8, 16], + "faces": { + "north": {"uv": [0, 3, 13, 8], "texture": "#2"}, + "east": {"uv": [0, 8, 3, 13], "texture": "#2"}, + "south": {"uv": [3, 8, 16, 13], "texture": "#2"}, + "west": {"uv": [13, 8, 16, 13], "texture": "#b"}, + "up": {"uv": [3, 13, 16, 16], "texture": "#3"}, + "down": {"uv": [3, 0, 16, 3], "texture": "#top"} + } + }, + { + "from": [15, 3, 0], + "to": [16, 6, 13], + "faces": { + "north": {"uv": [0, 10, 1, 13], "texture": "#2"}, + "east": {"uv": [3, 10, 16, 13], "texture": "#2"}, + "south": {"uv": [15, 10, 16, 13], "texture": "#b"}, + "west": {"uv": [0, 0, 13, 3], "texture": "#2"}, + "up": {"uv": [15, 0, 16, 13], "texture": "#3"}, + "down": {"uv": [15, 3, 16, 16], "texture": "#top"} + } + }, + { + "from": [3, 7, 0], + "to": [5, 8, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 13, 5]}, + "faces": { + "north": {"uv": [11, 8, 13, 9], "texture": "#2"}, + "east": {"uv": [3, 8, 16, 9], "texture": "#2"}, + "south": {"uv": [3, 8, 5, 9], "texture": "#b"}, + "west": {"uv": [0, 8, 13, 9], "texture": "#b"}, + "up": {"uv": [3, 0, 5, 13], "texture": "#3"}, + "down": {"uv": [3, 3, 5, 16], "texture": "#b"} + } + }, + { + "from": [5, 6, 12], + "to": [16, 8, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 5]}, + "faces": { + "north": {"uv": [0, 0, 11, 2], "texture": "#2"}, + "east": {"uv": [3, 8, 4, 10], "texture": "#2"}, + "south": {"uv": [5, 8, 16, 10], "texture": "#b"}, + "west": {"uv": [12, 8, 13, 10], "texture": "#b"}, + "up": {"uv": [5, 12, 16, 13], "texture": "#3"}, + "down": {"uv": [5, 3, 16, 4], "texture": "#top"} + } + }, + { + "from": [5, 4.5, 4], + "to": [13, 5, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [3, 11, 11, 11.5], "texture": "#b"}, + "east": {"uv": [4, 11, 12, 11.5], "texture": "#b"}, + "south": {"uv": [5, 11, 13, 11.5], "texture": "#b"}, + "west": {"uv": [4, 11, 12, 11.5], "texture": "#b"}, + "up": {"uv": [5, 4, 13, 12], "texture": "#b"}, + "down": {"uv": [5, 4, 13, 12], "texture": "#b"} + } + }, + { + "from": [8, 5, 7], + "to": [10, 5.5, 9], + "faces": { + "north": {"uv": [6, 10.5, 8, 11], "texture": "#2"}, + "east": {"uv": [7, 10.5, 9, 11], "texture": "#b"}, + "south": {"uv": [8, 10.5, 10, 11], "texture": "#b"}, + "west": {"uv": [7, 10.5, 9, 11], "texture": "#b"}, + "up": {"uv": [8, 7, 10, 9], "texture": "#b"}, + "down": {"uv": [8, 7, 10, 9], "texture": "#b"} + } + }, + { + "from": [8, 4, 7], + "to": [10, 4.5, 9], + "faces": { + "north": {"uv": [6, 11.5, 8, 12], "texture": "#b"}, + "east": {"uv": [7, 11.5, 9, 12], "texture": "#b"}, + "south": {"uv": [8, 11.5, 10, 12], "texture": "#b"}, + "west": {"uv": [7, 11.5, 9, 12], "texture": "#b"}, + "up": {"uv": [8, 7, 10, 9], "texture": "#b"}, + "down": {"uv": [8, 7, 10, 9], "texture": "#b"} + } + }, + { + "from": [3, 3.5, 7], + "to": [10, 4, 9], + "faces": { + "north": {"uv": [8, 6, 15, 6.5], "texture": "#2"}, + "east": {"uv": [7, 12, 9, 12.5], "texture": "#2"}, + "south": {"uv": [3, 12, 10, 12.5], "texture": "#2"}, + "west": {"uv": [7, 12, 9, 12.5], "texture": "#2"}, + "up": {"uv": [3, 7, 10, 9], "texture": "#2"}, + "down": {"uv": [3, 7, 10, 9], "texture": "#2"} + } + }, + { + "from": [3, 5.5, 7], + "to": [10, 6, 9], + "faces": { + "north": {"uv": [6, 10, 13, 10.5], "texture": "#2"}, + "east": {"uv": [7, 10, 9, 10.5], "texture": "#2"}, + "south": {"uv": [3, 10, 10, 10.5], "texture": "#2"}, + "west": {"uv": [7, 10, 9, 10.5], "texture": "#2"}, + "up": {"uv": [9, 0, 16, 2], "texture": "#2"}, + "down": {"uv": [3, 7, 10, 9], "texture": "#2"} + } + }, + { + "from": [6, 4.5, 3], + "to": [12, 5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [4, 11, 10, 11.5], "texture": "#b"}, + "east": {"uv": [12, 11, 13, 11.5], "texture": "#b"}, + "south": {"uv": [6, 11, 12, 11.5], "texture": "#b"}, + "west": {"uv": [3, 11, 4, 11.5], "texture": "#b"}, + "up": {"uv": [6, 3, 12, 4], "texture": "#b"}, + "down": {"uv": [6, 12, 12, 13], "texture": "#b"} + } + }, + { + "from": [4, 4.5, 5], + "to": [5, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [11, 11, 12, 11.5], "texture": "#b"}, + "east": {"uv": [5, 11, 11, 11.5], "texture": "#b"}, + "south": {"uv": [4, 11, 5, 11.5], "texture": "#b"}, + "west": {"uv": [5, 11, 11, 11.5], "texture": "#b"}, + "up": {"uv": [4, 5, 5, 11], "texture": "#b"}, + "down": {"uv": [4, 5, 5, 11], "texture": "#b"} + } + }, + { + "from": [13, 4.5, 5], + "to": [14, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [2, 11, 3, 11.5], "texture": "#b"}, + "east": {"uv": [5, 11, 11, 11.5], "texture": "#b"}, + "south": {"uv": [13, 11, 14, 11.5], "texture": "#b"}, + "west": {"uv": [5, 11, 11, 11.5], "texture": "#b"}, + "up": {"uv": [13, 5, 14, 11], "texture": "#b"}, + "down": {"uv": [13, 5, 14, 11], "texture": "#b"} + } + }, + { + "from": [6, 4.5, 12], + "to": [12, 5, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [4, 11, 10, 11.5], "texture": "#b"}, + "east": {"uv": [3, 11, 4, 11.5], "texture": "#b"}, + "south": {"uv": [6, 11, 12, 11.5], "texture": "#b"}, + "west": {"uv": [12, 11, 13, 11.5], "texture": "#b"}, + "up": {"uv": [6, 12, 12, 13], "texture": "#b"}, + "down": {"uv": [6, 3, 12, 4], "texture": "#b"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/device/small_tree_cutter_model_active.json b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_tree_cutter_model_active.json new file mode 100644 index 0000000..b971333 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/device/small_tree_cutter_model_active.json @@ -0,0 +1,221 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:blocks/device/tree_cutter_side", + "3": "engineersdecor:blocks/device/tree_cutter_top", + "particle": "engineersdecor:blocks/device/tree_cutter_side", + "b": "engineersdecor:blocks/device/tree_cutter_blade", + "top": "engineersdecor:blocks/device/tree_cutter_bottom" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 3, 16], + "faces": { + "north": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 13, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} + } + }, + { + "from": [0, 3, 0], + "to": [3, 8, 16], + "faces": { + "north": {"uv": [13, 0, 16, 5], "texture": "#2"}, + "east": {"uv": [0, 3, 16, 8], "texture": "#2"}, + "south": {"uv": [0, 8, 3, 13], "texture": "#2"}, + "west": {"uv": [0, 8, 16, 13], "texture": "#2"}, + "up": {"uv": [0, 0, 3, 16], "texture": "#3"}, + "down": {"uv": [0, 0, 3, 16], "texture": "#top"} + } + }, + { + "from": [3, 3, 13], + "to": [16, 8, 16], + "faces": { + "north": {"uv": [0, 3, 13, 8], "texture": "#2"}, + "east": {"uv": [0, 8, 3, 13], "texture": "#2"}, + "south": {"uv": [3, 8, 16, 13], "texture": "#2"}, + "west": {"uv": [13, 8, 16, 13], "texture": "#b"}, + "up": {"uv": [3, 13, 16, 16], "texture": "#3"}, + "down": {"uv": [3, 0, 16, 3], "texture": "#top"} + } + }, + { + "from": [15, 3, 0], + "to": [16, 6, 13], + "faces": { + "north": {"uv": [0, 10, 1, 13], "texture": "#2"}, + "east": {"uv": [3, 10, 16, 13], "texture": "#2"}, + "south": {"uv": [15, 10, 16, 13], "texture": "#b"}, + "west": {"uv": [0, 0, 13, 3], "texture": "#2"}, + "up": {"uv": [15, 0, 16, 13], "texture": "#3"}, + "down": {"uv": [15, 3, 16, 16], "texture": "#top"} + } + }, + { + "from": [3, 7, 0], + "to": [5, 8, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 13, 5]}, + "faces": { + "north": {"uv": [11, 8, 13, 9], "texture": "#2"}, + "east": {"uv": [3, 8, 16, 9], "texture": "#2"}, + "south": {"uv": [3, 8, 5, 9], "texture": "#b"}, + "west": {"uv": [0, 8, 13, 9], "texture": "#b"}, + "up": {"uv": [3, 0, 5, 13], "texture": "#3"}, + "down": {"uv": [3, 3, 5, 16], "texture": "#b"} + } + }, + { + "from": [5, 6, 12], + "to": [16, 8, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 5]}, + "faces": { + "north": {"uv": [0, 0, 11, 2], "texture": "#2"}, + "east": {"uv": [3, 8, 4, 10], "texture": "#2"}, + "south": {"uv": [5, 8, 16, 10], "texture": "#b"}, + "west": {"uv": [12, 8, 13, 10], "texture": "#b"}, + "up": {"uv": [5, 12, 16, 13], "texture": "#3"}, + "down": {"uv": [5, 3, 16, 4], "texture": "#top"} + } + }, + { + "from": [5, 4.5, -3], + "to": [13, 5, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 1]}, + "faces": { + "north": {"uv": [5, 13, 13, 13.5], "texture": "#b"}, + "east": {"uv": [11, 11, 16, 11.5], "texture": "#b"}, + "south": {"uv": [5, 11, 13, 11.5], "texture": "#b"}, + "west": {"uv": [0, 11, 5, 11.5], "texture": "#b"}, + "up": {"uv": [5, 4, 13, 12], "texture": "#b"}, + "down": {"uv": [5, 4, 13, 12], "texture": "#b"} + } + }, + { + "from": [8, 5, 0], + "to": [10, 5.5, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1]}, + "faces": { + "north": {"uv": [6, 10.5, 8, 11], "texture": "#2"}, + "east": {"uv": [14, 10.5, 16, 11], "texture": "#b"}, + "south": {"uv": [8, 10.5, 10, 11], "texture": "#b"}, + "west": {"uv": [0, 10.5, 2, 11], "texture": "#b"}, + "up": {"uv": [8, 0, 10, 2], "texture": "#b"}, + "down": {"uv": [8, 14, 10, 16], "texture": "#b"} + } + }, + { + "from": [8, 4, 0], + "to": [10, 4.5, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1]}, + "faces": { + "north": {"uv": [6, 11.5, 8, 12], "texture": "#b"}, + "east": {"uv": [14, 11.5, 16, 12], "texture": "#b"}, + "south": {"uv": [8, 11.5, 10, 12], "texture": "#b"}, + "west": {"uv": [0, 11.5, 2, 12], "texture": "#b"}, + "up": {"uv": [8, 0, 10, 2], "texture": "#b"}, + "down": {"uv": [8, 14, 10, 16], "texture": "#b"} + } + }, + { + "from": [3, 3.5, 0], + "to": [10, 4, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1]}, + "faces": { + "north": {"uv": [8, 6, 15, 6.5], "texture": "#2"}, + "east": {"uv": [7, 12, 9, 12.5], "texture": "#2"}, + "south": {"uv": [3, 12, 10, 12.5], "texture": "#2"}, + "west": {"uv": [7, 12, 9, 12.5], "texture": "#2"}, + "up": {"uv": [3, 7, 10, 9], "texture": "#2"}, + "down": {"uv": [3, 7, 10, 9], "texture": "#2"} + } + }, + { + "from": [3, 5.5, 0], + "to": [10, 6, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1]}, + "faces": { + "north": {"uv": [6, 10, 13, 10.5], "texture": "#2"}, + "east": {"uv": [7, 10, 9, 10.5], "texture": "#2"}, + "south": {"uv": [3, 10, 10, 10.5], "texture": "#2"}, + "west": {"uv": [7, 10, 9, 10.5], "texture": "#2"}, + "up": {"uv": [9, 0, 16, 2], "texture": "#2"}, + "down": {"uv": [3, 7, 10, 9], "texture": "#2"} + } + }, + { + "from": [6, 4.5, -4], + "to": [12, 5, -3], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 1]}, + "faces": { + "north": {"uv": [7, 12, 13, 12.5], "texture": "#b"}, + "east": {"uv": [16, 11, 16, 11.5], "texture": "#b"}, + "south": {"uv": [6, 11, 12, 11.5], "texture": "#b"}, + "west": {"uv": [0, 11, 0, 11.5], "texture": "#b"}, + "up": {"uv": [6, 12, 12, 13], "texture": "#b"}, + "down": {"uv": [6, 3, 12, 4], "texture": "#b"} + } + }, + { + "from": [4, 4.5, -2], + "to": [5, 5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 1]}, + "faces": { + "north": {"uv": [11, 12, 12, 12.5], "texture": "#b"}, + "east": {"uv": [12, 11, 16, 11.5], "texture": "#b"}, + "south": {"uv": [4, 11, 5, 11.5], "texture": "#b"}, + "west": {"uv": [0, 11, 4, 11.5], "texture": "#b"}, + "up": {"uv": [4, 4, 5, 12], "texture": "#b"}, + "down": {"uv": [4, 5, 5, 11], "texture": "#b"} + } + }, + { + "from": [13, 4.5, -2], + "to": [14, 5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 1]}, + "faces": { + "north": {"uv": [2, 11, 3, 11.5], "texture": "#b"}, + "east": {"uv": [6, 12, 10, 12.5], "texture": "#b"}, + "south": {"uv": [13, 11, 14, 11.5], "texture": "#b"}, + "west": {"uv": [0, 11, 4, 11.5], "texture": "#b"}, + "up": {"uv": [13, 5, 14, 11], "texture": "#b"}, + "down": {"uv": [13, 5, 14, 11], "texture": "#b"} + } + }, + { + "from": [6, 4.5, 5], + "to": [12, 5, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.5, 1]}, + "faces": { + "north": {"uv": [4, 11, 10, 11.5], "texture": "#b"}, + "east": {"uv": [10, 11, 11, 11.5], "texture": "#b"}, + "south": {"uv": [6, 11, 12, 11.5], "texture": "#b"}, + "west": {"uv": [5, 11, 6, 11.5], "texture": "#b"}, + "up": {"uv": [6, 12, 12, 13], "texture": "#b"}, + "down": {"uv": [6, 10, 12, 11], "texture": "#b"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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/furniture/framed_window_glasspane_submodel.json b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/framed_window_glasspane_submodel.json index e93da97..513fdd8 100644 --- a/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/framed_window_glasspane_submodel.json +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/framed_window_glasspane_submodel.json @@ -1,5 +1,6 @@ { - "parent": "block/cube", + "parent": "block/cube", + "ambientocclusion": false, "textures": { "glass": "engineersdecor:blocks/glass/window_glass_texture" }, 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 9fb9b04..f787242 100644 --- a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json @@ -31,6 +31,10 @@ "ingredient": { "type": "forge:ore_dict", "ore": "blockSteel" }, "name": "blockSteel" }, + { + "ingredient": { "type": "forge:ore_dict", "ore": "blockLead" }, + "name": "blockLead" + }, { "ingredient": { "type": "forge:ore_dict", "ore": "plateIron" }, "name": "plateIron" @@ -39,6 +43,10 @@ "ingredient": { "type": "forge:ore_dict", "ore": "ingotSteel" }, "name": "ingotSteel" }, + { + "ingredient": { "type": "forge:ore_dict", "ore": "ingotLead" }, + "name": "ingotLead" + }, { "ingredient": { "type": "forge:ore_dict", "ore": "plateSteel" }, "name": "plateSteel" diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_solar_panel_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_solar_panel_recipe.json new file mode 100644 index 0000000..6b2fb5d --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_solar_panel_recipe.json @@ -0,0 +1,37 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_solar_panel", + "required": ["immersiveengineering:metal_device1"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "QQQ", + " S ", + "LRL" + ], + "key": { + "Q": { + "item": "minecraft:quartz", + "data": 0 + }, + "S": { + "item": "#ingotSteel", + "data": 0 + }, + "R": { + "item": "minecraft:redstone_block", + "data": 0 + }, + "L": { + "item": "#blockLead", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_solar_panel", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_tree_cutter_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_tree_cutter_recipe.json new file mode 100644 index 0000000..07a598c --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/device/small_tree_cutter_recipe.json @@ -0,0 +1,41 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_tree_cutter", + "required": ["immersiveengineering:material"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PPP", + "PAO", + "CRC" + ], + "key": { + "O": { + "item": "minecraft:observer", + "data": 0 + }, + "P": { + "item": "#plateAnyFerroMetal", + "data": 0 + }, + "A": { + "item": "minecraft:iron_axe", + "data": 0 + }, + "R": { + "item": "minecraft:redstone_block", + "data": 0 + }, + "C": { + "item": "#anyMechanicalComponent", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_tree_cutter", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/furniture/treated_wood_floor_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/furniture/treated_wood_floor_recipe.json new file mode 100644 index 0000000..9f67ecd --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/furniture/treated_wood_floor_recipe.json @@ -0,0 +1,24 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:treated_wood_floor", + "required": ["immersiveengineering:material"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "SSS", + "SSS" + ], + "key": { + "S": { + "item": "#slabTreatedWood", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:treated_wood_floor", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_mineral_smelter_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_mineral_smelter_recipe_standalone.json new file mode 100644 index 0000000..df2dd7c --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_mineral_smelter_recipe_standalone.json @@ -0,0 +1,38 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_mineral_smelter", + "required": ["engineersdecor:panzerglass_block"], + "missing": ["immersiveengineering:metal_device1"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "SOS", + "GBO", + "SOS" + ], + "key": { + "G": { + "item": "engineersdecor:panzerglass_block", + "data": 0 + }, + "S": { + "item": "#ingotIron", + "data": 0 + }, + "B": { + "item": "#anyLavaItem", + "data": 0 + }, + "O": { + "item": "#blockObsidian", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_mineral_smelter", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_solar_panel_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_solar_panel_recipe_standalone.json new file mode 100644 index 0000000..920ede6 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_solar_panel_recipe_standalone.json @@ -0,0 +1,33 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_solar_panel", + "missing": ["immersiveengineering:metal_device1"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "QQQ", + " S ", + "SRS" + ], + "key": { + "Q": { + "item": "minecraft:quartz", + "data": 0 + }, + "S": { + "item": "minecraft:iron_ingot", + "data": 0 + }, + "R": { + "item": "minecraft:redstone_block", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_solar_panel", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_tree_cutter_recipe_standalone.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_tree_cutter_recipe_standalone.json new file mode 100644 index 0000000..e836528 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/small_tree_cutter_recipe_standalone.json @@ -0,0 +1,37 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:small_tree_cutter", + "missing": ["immersiveengineering:material"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PPP", + "PAO", + "PRP" + ], + "key": { + "O": { + "item": "minecraft:observer", + "data": 0 + }, + "P": { + "item": "#ingotIron", + "data": 0 + }, + "A": { + "item": "minecraft:iron_axe", + "data": 0 + }, + "R": { + "item": "minecraft:redstone_block", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:small_tree_cutter", + "count": 1 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_panel.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_panel.png new file mode 100644 index 0000000..202ad56 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_panel.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_parts.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_parts.png new file mode 100644 index 0000000..f81ce18 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_parts.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_side.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_side.png new file mode 100644 index 0000000..0aee14f Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_side.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_topbottom.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_topbottom.png new file mode 100644 index 0000000..8326348 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/small_solar_panel_topbottom.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png new file mode 100644 index 0000000..49298da Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png.mcmeta b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png.mcmeta new file mode 100644 index 0000000..77f273a --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade.png.mcmeta @@ -0,0 +1 @@ +{ "animation":{ "frames": [0,1], "frametime":2, "interpolate":false }} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade_off.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade_off.png new file mode 100644 index 0000000..01e965d Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_blade_off.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_bottom.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_bottom.png new file mode 100644 index 0000000..5606d7e Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_bottom.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_side.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_side.png new file mode 100644 index 0000000..ece5249 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_side.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_top.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_top.png new file mode 100644 index 0000000..8636643 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/device/tree_cutter_top.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_1.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_1.png new file mode 100644 index 0000000..a04413b Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_1.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_2.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_2.png new file mode 100644 index 0000000..edfdea9 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_2.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_3.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_3.png new file mode 100644 index 0000000..83b09af Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_3.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_4.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_4.png new file mode 100644 index 0000000..56d025a Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/furniture/treated_wood_floor_texture_4.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png b/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png index e09864c..d1fea55 100644 Binary files a/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png and b/1.12/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png differ diff --git a/1.14/gradle.properties b/1.14/gradle.properties index 97cc866..c1f40e5 100644 --- a/1.14/gradle.properties +++ b/1.14/gradle.properties @@ -2,7 +2,7 @@ org.gradle.daemon=false org.gradle.jvmargs=-Xmx8G version_minecraft=1.14.4 -version_forge_minecraft=1.14.4-28.0.81 +version_forge_minecraft=1.14.4-28.0.100 version_fml_mappings=20190719-1.14.3 version_jei=1.14.4:6.0.0.10 -version_engineersdecor=1.0.11-b3 +version_engineersdecor=1.0.12-b2 diff --git a/1.14/meta/update.json b/1.14/meta/update.json index c441944..675df1f 100644 --- a/1.14/meta/update.json +++ b/1.14/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.14.4": { + "1.0.12-b1": "[U] Updated to Forge 1.14.4-28.0.93/20190719-1.14.3.\n[M] Logo location fixed.", "1.0.11-b3": "[U] Updated to Forge 1.14.4-28.0.81/20190719-1.14.3.\n[F] Adapted recipe condition to Forge version (issue #49).", "1.0.11-b2": "[U] JEI dependency update 1.14.4:6.0.0.10.\n[F] Fixed creative ghost block issue (issue #48).\n[M] Updated ru_ru lang file (Shellyoung, PR#47).", "1.0.11-b1": "[A] Added Steel Table\n[A] Added Treated Wood Side Table\n[A] Added Exit Sign\n[A] Added Steel Floor Grating\n[M] Sign orientation fixed, only blocked vertical placement.", @@ -22,6 +23,6 @@ }, "promos": { "1.14.4-recommended": "", - "1.14.4-latest": "1.0.11-b3" + "1.14.4-latest": "1.0.12-b1" } } \ No newline at end of file diff --git a/1.14/readme.md b/1.14/readme.md index 92c5819..9526f4a 100644 --- a/1.14/readme.md +++ b/1.14/readme.md @@ -8,8 +8,18 @@ Mod sources for Minecraft version 1.14.3. - Compiled mod distribution channel is curseforge: https://www.curseforge.com/minecraft/mc-mods/engineers-decor/files. ---- + ## Version history + ~ v1.0.12-b2 [U] Updated to Forge 1.14.4-28.0.100/20190719-1.14.3. + [A] Small Solar Panel added. + [M] Items fall through the Steel Floor Grating like in 1.12.2 version. + [M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, + thx Aristine for the CR). + + - v1.0.12-b1 [U] Updated to Forge 1.14.4-28.0.93/20190719-1.14.3. + [M] Logo location fixed. + - v1.0.11-b3 [U] Updated to Forge 1.14.4-28.0.81/20190719-1.14.3. [F] Adapted recipe condition to Forge version (issue #49). diff --git a/1.14/src/main/java/wile/engineersdecor/ModContent.java b/1.14/src/main/java/wile/engineersdecor/ModContent.java index 6c4376f..d84de10 100644 --- a/1.14/src/main/java/wile/engineersdecor/ModContent.java +++ b/1.14/src/main/java/wile/engineersdecor/ModContent.java @@ -367,6 +367,12 @@ public class ModContent ModAuxiliaries.getPixeledAABB(1.1,0,1.1, 14.9,16,14.9) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_mineral_smelter")); + public static final BlockDecorSolarPanel SMALL_SOLAR_PANEL = (BlockDecorSolarPanel)(new BlockDecorSolarPanel( + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_ELECTRICAL, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), + ModAuxiliaries.getPixeledAABB(0,0,0, 16,11.5,16) + )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_solar_panel")); + public static final BlockDecorPipeValve STRAIGHT_CHECK_VALVE = (BlockDecorPipeValve)(new BlockDecorPipeValve( BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_OPPOSITE_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK|BlockDecor.CFG_CUTOUT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), @@ -442,6 +448,7 @@ public class ModContent SMALL_ELECTRICAL_FURNACE, SMALL_WASTE_INCINERATOR, SMALL_MINERAL_SMELTER, + SMALL_SOLAR_PANEL, CLINKER_BRICK_BLOCK, CLINKER_BRICK_SLAB, CLINKER_BRICK_STAIRS, @@ -550,6 +557,11 @@ public class ModContent .build(null) .setRegistryName(ModEngineersDecor.MODID, "te_small_mineral_smelter"); + public static final TileEntityType TET_SMALL_SOLAR_PANEL = TileEntityType.Builder + .create(BlockDecorSolarPanel.BTileEntity::new, SMALL_SOLAR_PANEL) + .build(null) + .setRegistryName(ModEngineersDecor.MODID, "te_small_solar_panel"); + private static final TileEntityType tile_entity_types[] = { TET_TREATED_WOOD_CRAFTING_TABLE, @@ -559,7 +571,8 @@ public class ModContent TET_WASTE_INCINERATOR, TET_STRAIGHT_PIPE_VALVE, TET_PASSIVE_FLUID_ACCUMULATOR, - TET_MINERAL_SMELTER + TET_MINERAL_SMELTER, + TET_SMALL_SOLAR_PANEL }; //-------------------------------------------------------------------------------------------------------------------- diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java index 7e27b5c..97e50a9 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -170,10 +170,11 @@ public class BlockDecorDropper extends BlockDecorDirected public static final int MAX_DROP_COUNT = 32; public static final int DROP_PERIOD_OFFSET = 10; /// - public static final int DROPLOGIC_FILTER_ANDGATE = 0x1; - public static final int DROPLOGIC_EXTERN_ANDGATE = 0x2; - public static final int DROPLOGIC_SILENT_DROP = 0x4; - public static final int DROPLOGIC_SILENT_OPEN = 0x8; + public static final int DROPLOGIC_FILTER_ANDGATE = 0x01; + public static final int DROPLOGIC_EXTERN_ANDGATE = 0x02; + public static final int DROPLOGIC_SILENT_DROP = 0x04; + public static final int DROPLOGIC_SILENT_OPEN = 0x08; + public static final int DROPLOGIC_CONTINUOUS = 0x10; /// private int filter_matches_[] = new int[CTRL_SLOTS_SIZE]; private int open_timer_ = 0; @@ -508,9 +509,11 @@ public class BlockDecorDropper extends BlockDecorDirected if((drop_timer_ > 0) && ((--drop_timer_) == 0)) markDirty(); if(--tick_timer_ > 0) return; tick_timer_ = TICK_INTERVAL; + final boolean continuous_mode = (drop_logic_ & DROPLOGIC_CONTINUOUS)!=0; boolean dirty = block_power_updated_; - boolean redstone_trigger = (block_power_signal_ && block_power_updated_); + boolean redstone_trigger = (block_power_signal_ && ((block_power_updated_) || (continuous_mode))); boolean filter_trigger; + boolean filter_defined = false; boolean trigger; // Trigger logic { @@ -518,9 +521,9 @@ public class BlockDecorDropper extends BlockDecorDirected for(int i=INPUT_SLOTS_FIRST; i<(INPUT_SLOTS_FIRST+INPUT_SLOTS_SIZE); ++i) { if(stacks_.get(i).getCount() >= drop_count_) { droppable_slot_found = true; break; } } - int filter_nset = 0; // From filters / inventory checks { + int filter_nset = 0; int last_filter_matches_[] = filter_matches_.clone(); boolean slot_assigned = false; for(int ci=0; ci 1) ++nmatched; if(filter_matches_[i] != last_filter_matches_[i]) dirty = true; } - filter_trigger = ((filter_nset >0) && (nmatched > 0)); + filter_defined = (filter_nset > 0); + filter_trigger = ((filter_nset > 0) && (nmatched > 0)); if(((drop_logic_ & DROPLOGIC_FILTER_ANDGATE) != 0) && (nmatched != filter_nset)) filter_trigger = false; } // gates { - if(filter_nset > 0) { + if(filter_defined) { trigger = ((drop_logic_ & DROPLOGIC_EXTERN_ANDGATE) != 0) ? (filter_trigger && redstone_trigger) : (filter_trigger || redstone_trigger); } else { trigger = redstone_trigger; @@ -818,7 +822,7 @@ public class BlockDecorDropper extends BlockDecorDirected } else if(isPointInRegion(114, 51, 9, 9, mouseX, mouseY)) { container.onGuiAction("manual_rstrigger", 1); } else if(isPointInRegion(162, 66, 7, 9, mouseX, mouseY)) { - container.onGuiAction("manual_trigger", 1); + container.onGuiAction("drop_logic", container.field(5) ^ BTileEntity.DROPLOGIC_CONTINUOUS); } else if(isPointInRegion(132, 66, 9, 9, mouseX, mouseY)) { container.onGuiAction("drop_logic", container.field(5) ^ BTileEntity.DROPLOGIC_FILTER_ANDGATE); } else if(isPointInRegion(148, 66, 9, 9, mouseX, mouseY)) { @@ -887,8 +891,10 @@ public class BlockDecorDropper extends BlockDecorDirected { int filter_gate_offset = ((container.field(5) & BTileEntity.DROPLOGIC_FILTER_ANDGATE) != 0) ? 11 : 0; int extern_gate_offset = ((container.field(5) & BTileEntity.DROPLOGIC_EXTERN_ANDGATE) != 0) ? 11 : 0; + int pulse_mode_offset = ((container.fields_[5] & BTileEntity.DROPLOGIC_CONTINUOUS ) != 0) ? 10 : 0; blit(x0+132, y0+66, 179+filter_gate_offset, 66, 9, 9); blit(x0+148, y0+66, 179+extern_gate_offset, 66, 9, 9); + blit(x0+162, y0+66, 200+pulse_mode_offset, 66, 9, 9); } // drop timer running indicator { diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFloorGrating.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFloorGrating.java index 6a13333..1b48b01 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFloorGrating.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFloorGrating.java @@ -8,16 +8,22 @@ */ package wile.engineersdecor.blocks; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + public class BlockDecorFloorGrating extends BlockDecor { - public BlockDecorFloorGrating(long config, Block.Properties builder, final AxisAlignedBB unrotatedAABB) { super(config, builder); } @@ -25,31 +31,40 @@ public class BlockDecorFloorGrating extends BlockDecor public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) { return true; } + @Override + public void onLanded(IBlockReader world, Entity entity) + { + if(!(entity instanceof ItemEntity)) { + super.onLanded(world, entity); + } else { + entity.setMotion(0, -0.1,0); + entity.setPositionAndUpdate(entity.posX, entity.posY-0.3, entity.posZ); + } + } -// @Override -// public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, @Nullable Entity entity, boolean isActualState) -// { if(!(entity instanceof EntityItem)) super.addCollisionBoxToList(state, world, pos, entityBox, collidingBoxes, entity, isActualState); } -// -// @Override -// public void onFallenUpon(World world, BlockPos pos, Entity entity, float fallDistance) -// { -// if(!(entity instanceof EntityItem)) { -// entity.fall(fallDistance, 1.0F); -// } else { -// entity.setVelocity(0,-0.2,0); -// } -// } -// -// @Override -// public void onEntityCollision(World world, BlockPos pos, IBlockState state, Entity entity) -// { -// if(!(entity instanceof EntityItem)) return; -// if((entity.posY-pos.getY()) > 0.7) { -// if(entity.motionY > -0.2) entity.motionY = -0.2; -// entity.setVelocity(0,-0.1,0); -// entity.setPositionAndUpdate(entity.posX, entity.posY-0.3, entity.posZ); -// } else { -// entity.setVelocity(0,entity.motionY,0); -// } -// } + @Override + public void onFallenUpon(World world, BlockPos pos, Entity entity, float fallDistance) + { + if(!(entity instanceof ItemEntity)) { + super.onFallenUpon(world, pos, entity, fallDistance); + } else { + entity.setMotion(0, -0.1,0); + entity.setPositionAndUpdate(entity.posX, entity.posY-0.3, entity.posZ); + } + } + + @Override + @SuppressWarnings("deprecation") + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) + { + if(!(entity instanceof ItemEntity)) return; + if((entity.posY-pos.getY()) < 0.7) return; + double vy = MathHelper.clamp(entity.getMotion().y, -1.2, -0.2); + entity.setMotion(0, vy, 0); + entity.setPositionAndUpdate(pos.getX()+0.5, entity.posY-0.3, pos.getZ()+0.5); + } + + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) + { return (context.getEntity() instanceof ItemEntity) ? VoxelShapes.empty() : super.getCollisionShape(state, world, pos, context); } } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java new file mode 100644 index 0000000..3106f67 --- /dev/null +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSolarPanel.java @@ -0,0 +1,141 @@ +/* + * @file BlockDecorDirected.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 wile.engineersdecor.ModContent; +import wile.engineersdecor.ModEngineersDecor; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.IBlockReader; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; + +import javax.annotation.Nullable; + + +public class BlockDecorSolarPanel extends BlockDecor +{ + public static final IntegerProperty EXPOSITION = IntegerProperty.create("exposition", 0, 4); + + public BlockDecorSolarPanel(long config, Block.Properties builder, final AxisAlignedBB unrotatedAABB) + { + super(config, builder, unrotatedAABB); + setDefaultState(stateContainer.getBaseState().with(EXPOSITION, 1)); + } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); builder.add(EXPOSITION); } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { return getDefaultState(); } + + @Override + public boolean hasTileEntity(BlockState state) + { return true; } + + @Override + @Nullable + public TileEntity createTileEntity(BlockState state, IBlockReader world) + { return new BlockDecorSolarPanel.BTileEntity(); } + + //-------------------------------------------------------------------------------------------------------------------- + // Tile entity + //-------------------------------------------------------------------------------------------------------------------- + + public static class BTileEntity extends TileEntity implements ITickableTileEntity + { + public static final int DEFAULT_PEAK_POWER = 45; + public static final int TICK_INTERVAL = 8; + public static final int ACCUMULATION_INTERVAL = 4; + private static final Direction transfer_directions_[] = {Direction.DOWN, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH }; + private static int peak_power_per_tick_ = DEFAULT_PEAK_POWER; + private static int max_power_storage_ = 10000; + private int tick_timer_ = 0; + private int recalc_timer_ = 0; + private int accumulated_power_ = 0; + + public static void on_config(int peak_power_per_tick) + { + peak_power_per_tick_ = peak_power_per_tick; + ModEngineersDecor.logger().info("Config small solar panel: Peak production:" + peak_power_per_tick_ + "/tick"); + } + + //------------------------------------------------------------------------------------------------------------------ + + public BTileEntity() + { this(ModContent.TET_SMALL_SOLAR_PANEL); } + + public BTileEntity(TileEntityType te_type) + { super(te_type); } + + public void readnbt(CompoundNBT nbt, boolean update_packet) + { accumulated_power_ = nbt.getInt("energy"); } + + protected void writenbt(CompoundNBT nbt, boolean update_packet) + { nbt.putInt("energy", accumulated_power_); } + + // TileEntity ------------------------------------------------------------------------------ + + @Override + public void read(CompoundNBT nbt) + { super.read(nbt); readnbt(nbt, false); } + + @Override + public CompoundNBT write(CompoundNBT nbt) + { super.write(nbt); writenbt(nbt, false); return nbt; } + + @Override + public void tick() + { + if((world.isRemote) || (--tick_timer_ > 0)) return; + tick_timer_ = TICK_INTERVAL; + if(!world.canBlockSeeSky(pos)) { tick_timer_ = TICK_INTERVAL * 5; return; } + if(accumulated_power_ > 0) { + for(int i=0; (i0); ++i) { + final Direction f = transfer_directions_[i]; + TileEntity te = world.getTileEntity(pos.offset(f)); + if(te==null) continue; + IEnergyStorage es = te.getCapability(CapabilityEnergy.ENERGY, f.getOpposite()).orElse(null); + if((es==null) || (!es.canReceive())) continue; + accumulated_power_ = MathHelper.clamp(accumulated_power_-es.receiveEnergy(accumulated_power_, false),0, accumulated_power_); + } + } + if(--recalc_timer_ > 0) return; + recalc_timer_ = ACCUMULATION_INTERVAL + ((int)(Math.random()+.5)); + BlockState state = world.getBlockState(pos); + int theta = ((((int)(world.getCelestialAngleRadians(1f) * (180.0/Math.PI)))+90) % 360); + int e = 2; + if(theta > 340) e = 2; + else if(theta < 45) e = 0; + else if(theta < 80) e = 1; + else if(theta < 100) e = 2; + else if(theta < 135) e = 3; + else if(theta < 190) e = 4; + BlockState nstate = state.with(EXPOSITION, e); + if(nstate != state) world.setBlockState(pos, nstate, 1|2); + final double sb = world.getSunBrightness(1f); + double rf = Math.abs(1.0-(((double)Math.abs(MathHelper.clamp(theta, 0, 180)-90))/90)); + rf = Math.sqrt(rf) * sb * ((TICK_INTERVAL*ACCUMULATION_INTERVAL)+2) * peak_power_per_tick_; + accumulated_power_ = Math.min(accumulated_power_+(int)rf, max_power_storage_); + } + } +} diff --git a/1.14/src/main/java/wile/engineersdecor/detail/ModConfig.java b/1.14/src/main/java/wile/engineersdecor/detail/ModConfig.java index 5b67e6a..1f20253 100644 --- a/1.14/src/main/java/wile/engineersdecor/detail/ModConfig.java +++ b/1.14/src/main/java/wile/engineersdecor/detail/ModConfig.java @@ -17,6 +17,7 @@ import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.eventbus.api.SubscribeEvent; import org.apache.commons.lang3.tuple.Pair; import wile.engineersdecor.blocks.*; +import wile.engineersdecor.blocks.BlockDecorSolarPanel.BTileEntity; import javax.annotation.Nullable; import java.util.ArrayList; @@ -131,6 +132,7 @@ public class ModConfig public final ForgeConfigSpec.IntValue furnace_boost_energy_consumption; public final ForgeConfigSpec.IntValue e_furnace_speed_percent; public final ForgeConfigSpec.IntValue e_furnace_power_consumption; + public final ForgeConfigSpec.IntValue small_solar_panel_peak_production; public final ForgeConfigSpec.BooleanValue e_furnace_automatic_pulling; public final ForgeConfigSpec.DoubleValue chair_mob_sitting_probability_percent; public final ForgeConfigSpec.DoubleValue chair_mob_standup_probability_percent; @@ -364,6 +366,14 @@ public class ModConfig .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.") .define("e_furnace_automatic_pulling", false); + small_solar_panel_peak_production = builder + .translation(ModEngineersDecor.MODID + ".config.small_solar_panel_peak_production") + .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, " + + "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.") + .defineInRange("small_solar_panel_peak_production", BTileEntity.DEFAULT_PEAK_POWER, 10, 256); + builder.pop(); } } @@ -471,6 +481,7 @@ public class ModConfig BlockDecorCraftingTable.on_config(COMMON.without_crafting_table_history.get(), false, COMMON.with_crafting_quickmove_buttons.get()); BlockDecorPipeValve.on_config(COMMON.pipevalve_max_flowrate.get(), COMMON.pipevalve_redstone_gain.get()); BlockDecorFurnaceElectrical.BTileEntity.on_config(COMMON.e_furnace_speed_percent.get(), COMMON.e_furnace_power_consumption.get(), COMMON.e_furnace_automatic_pulling.get()); + BlockDecorSolarPanel.BTileEntity.on_config(COMMON.small_solar_panel_peak_production.get()); without_crafting_table = isOptedOut(ModContent.TREATED_WOOD_CRAFTING_TABLE); immersiveengineering_installed = ModAuxiliaries.isModLoaded("immersiveengineering"); { diff --git a/1.14/src/main/resources/META-INF/mods.toml b/1.14/src/main/resources/META-INF/mods.toml index f013330..c2f67d6 100644 --- a/1.14/src/main/resources/META-INF/mods.toml +++ b/1.14/src/main/resources/META-INF/mods.toml @@ -5,7 +5,6 @@ loaderVersion="[25,)" issueTrackerURL="https://github.com/stfwi/engineers-decor/issues/" [[mods]] - modId="engineersdecor" version="${file.jarVersion}" displayName="Engineer's Decor" @@ -14,12 +13,12 @@ authors="wilechaote" credits="BluSunrize, malte0811, et al., the Forge Smiths, the Modders of the World." updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/develop/meta/update.json" displayURL="https://github.com/stfwi/engineers-decor/" -logoFile="engineersdecor.png" # Double check: A file name (in the root of the mod JAR) containing a logo for display +logoFile="logo.png" [[dependencies.engineersdecor]] modId="forge" mandatory=true - versionRange="[25,)" #mandatory + versionRange="[28.0.81,)" ordering="NONE" side="BOTH" diff --git a/1.14/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json b/1.14/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json new file mode 100644 index 0000000..40f233c --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/blockstates/small_solar_panel.json @@ -0,0 +1,9 @@ +{ + "variants": { + "exposition=0": { "model": "engineersdecor:block/device/small_solar_panel_model_exp0" }, + "exposition=1": { "model": "engineersdecor:block/device/small_solar_panel_model_exp1" }, + "exposition=2": { "model": "engineersdecor:block/device/small_solar_panel_model_exp2" }, + "exposition=3": { "model": "engineersdecor:block/device/small_solar_panel_model_exp3" }, + "exposition=4": { "model": "engineersdecor:block/device/small_solar_panel_model_exp4" } + } +} diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json b/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json index f14ff5d..ab007df 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/en_us.json @@ -151,6 +151,8 @@ "block.engineersdecor.factory_dropper.help": "§6Dropper suitable for advanced factory automation.§r Has twelve round-robin selected slots. Drop force, angle, stack size, and cool-down delay adjustable in the GUI. Three stack compare slots with logical AND or OR can be used as internal trigger source. Internal trigger can be AND'ed or OR'ed with the external redstone signal trigger. Trigger simulation buttons for testing. Pre-opens shutter door when internal trigger conditions are met. Drops all matching stacks simultaneously. Click on all elements in the GUI to see how it works.", "block.engineersdecor.small_mineral_smelter": "Small Mineral Melting Furnace", "block.engineersdecor.small_mineral_smelter.help": "§6High temperature, high insulation electrical stone melting furnace.§r\n Heats up mineral blocks to magma blocks, and finally to lava. Due to the miniturized device size the process is rather inefficient - much time and energy is needed to liquefy a stone block.", + "block.engineersdecor.small_solar_panel": "Small Solar Panel", + "block.engineersdecor.small_solar_panel.help": "§6Produces a small amount of power when exposed to sunlight.§r\n Useful for charging LF capacitors in remote systems with low consumption. The internal charge pump circuit accumulates and frequently transfers RF. Production depends on day time and the weather.", "block.engineersdecor.sign_decor": "Sign Plate (Engineer's decor)", "block.engineersdecor.sign_decor.help": "§6This should not be craftable or visible in JEI. Used for creative tab and screenshots.", "block.engineersdecor.sign_hotwire": "Sign \"Caution Hot Wire\"", diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json b/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json index 8670a3c..c7094be 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/ru_ru.json @@ -150,6 +150,7 @@ "block.engineersdecor.factory_dropper": "Фабричный выбрасыватель", "block.engineersdecor.factory_dropper.help": "§6Выбрасыватель подходит для продвинутой автоматизации производства.§r Имеет 12 выборочных слотов. Сила броска, угол, размер стопки и задержка настраиваются в GUI. 3 слота сравнения стека с логическим И или ИЛИ могут использоваться в качестве внутреннего источника запуска. Внутренний триггер может быть И или ИЛИ с внешним триггерным сигналом красного камня. Триггерные кнопки симуляции для тестирования. Предварительно открывает дверцу затвора, когда выполняются условия внутреннего запуска. Сбрасывает все соответствующие стеки одновременно. Нажмите на все элементы в GUI, чтобы увидеть, как это работает.", "block.engineersdecor.small_mineral_smelter": "Small Mineral Melting Furnace", + "block.engineersdecor.small_solar_panel": "Small Solar Panel", "block.engineersdecor.sign_decor": "Табличка с надписью (Логотип Engineer's decor)", "block.engineersdecor.sign_decor.help": "§Это не должно быть крафтовым или видимым в JEI. Используется для творческой вкладки и скриншотов.", "block.engineersdecor.sign_hotwire": "Знак «Осторожно, под напряжением»", diff --git a/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json b/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json index 2d3614d..476a5e6 100644 --- a/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json +++ b/1.14/src/main/resources/assets/engineersdecor/lang/zh_cn.json @@ -112,6 +112,7 @@ "block.engineersdecor.passive_fluid_accumulator": "Passive Fluid Accumulator", "block.engineersdecor.factory_dropper": "Factory Dropper", "block.engineersdecor.small_mineral_smelter": "Small Mineral Melting Furnace", + "block.engineersdecor.small_solar_panel": "Small Solar Panel", "block.engineersdecor.sign_decor": "Sign Plate (Engineer's decor)", "block.engineersdecor.sign_hotwire": "Sign \"Caution Hot Wire\"", "block.engineersdecor.sign_mindstep": "Sign \"Mind The Step\"", diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json new file mode 100644 index 0000000..1f7c941 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp0.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:block/device/small_solar_panel_side", + "m": "engineersdecor:block/device/small_solar_panel_parts", + "particle": "engineersdecor:block/device/small_solar_panel_parts", + "tb": "engineersdecor:block/device/small_solar_panel_topbottom", + "p": "engineersdecor:block/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp1.json b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp1.json new file mode 100644 index 0000000..c1ae572 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp1.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:block/device/small_solar_panel_side", + "m": "engineersdecor:block/device/small_solar_panel_parts", + "particle": "engineersdecor:block/device/small_solar_panel_parts", + "tb": "engineersdecor:block/device/small_solar_panel_topbottom", + "p": "engineersdecor:block/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp2.json b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp2.json new file mode 100644 index 0000000..77bf0c8 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp2.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:block/device/small_solar_panel_side", + "m": "engineersdecor:block/device/small_solar_panel_parts", + "particle": "engineersdecor:block/device/small_solar_panel_parts", + "tb": "engineersdecor:block/device/small_solar_panel_topbottom", + "p": "engineersdecor:block/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp3.json b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp3.json new file mode 100644 index 0000000..ba2e39c --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp3.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:block/device/small_solar_panel_side", + "m": "engineersdecor:block/device/small_solar_panel_parts", + "particle": "engineersdecor:block/device/small_solar_panel_parts", + "tb": "engineersdecor:block/device/small_solar_panel_topbottom", + "p": "engineersdecor:block/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp4.json b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp4.json new file mode 100644 index 0000000..1519bcd --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/device/small_solar_panel_model_exp4.json @@ -0,0 +1,196 @@ +{ + "parent": "block/cube", + "textures": { + "2": "engineersdecor:block/device/small_solar_panel_side", + "m": "engineersdecor:block/device/small_solar_panel_parts", + "particle": "engineersdecor:block/device/small_solar_panel_parts", + "tb": "engineersdecor:block/device/small_solar_panel_topbottom", + "p": "engineersdecor:block/device/small_solar_panel_panel" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#tb"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#tb"} + } + }, + { + "from": [1, 9.5, 0], + "to": [15, 11.5, 16], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [1, 4.5, 15, 6.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "south": {"uv": [1, 4.5, 15, 6.5], "texture": "#m"}, + "west": {"uv": [0, 4.5, 16, 6.5], "texture": "#m"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#p"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#m"} + } + }, + { + "from": [6, 2, 11], + "to": [10, 8, 13], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "up": {"uv": [6, 11, 10, 13], "texture": "#m"}, + "down": {"uv": [6, 3, 10, 5], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 9], + "to": [9.5, 9.5, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"}, + "down": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"} + } + }, + { + "from": [5, 9, 7], + "to": [11, 9.5, 9], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [5, 6.5, 11, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "south": {"uv": [5, 6.5, 11, 7], "texture": "#m"}, + "west": {"uv": [7, 6.5, 9, 7], "texture": "#m"}, + "up": {"uv": [5, 7, 11, 9], "texture": "#m"}, + "down": {"uv": [5, 7, 11, 9], "texture": "#m"} + } + }, + { + "from": [2, 9, 3], + "to": [5, 9.5, 13], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [11, 6.5, 14, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [2, 6.5, 5, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [2, 3, 5, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 5, 13], "texture": "#m"} + } + }, + { + "from": [11, 9, 3], + "to": [14, 9.5, 13], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [2, 6.5, 5, 7], "rotation": 180, "texture": "#m"}, + "east": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "south": {"uv": [11, 6.5, 14, 7], "texture": "#m"}, + "west": {"uv": [3, 6.5, 13, 7], "texture": "#m"}, + "up": {"uv": [11, 3, 14, 13], "texture": "#m"}, + "down": {"uv": [11, 3, 14, 13], "texture": "#m"} + } + }, + { + "from": [6.5, 5.5, 5], + "to": [9.5, 9.5, 7], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [6.5, 6.5, 9.5, 10.5], "rotation": 180, "texture": "#m"}, + "east": {"uv": [9, 6.5, 11, 10.5], "texture": "#m"}, + "south": {"uv": [6.5, 6.5, 9.5, 10.5], "texture": "#m"}, + "west": {"uv": [5, 6.5, 7, 10.5], "texture": "#m"}, + "up": {"uv": [6.5, 5, 9.5, 7], "texture": "#m"}, + "down": {"uv": [6.5, 9, 9.5, 11], "texture": "#m"} + } + }, + { + "from": [6, 2, 3], + "to": [10, 8, 5], + "faces": { + "north": {"uv": [6, 8, 10, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 8, 13, 14], "texture": "#m"}, + "south": {"uv": [6, 8, 10, 14], "texture": "#2"}, + "west": {"uv": [3, 8, 5, 14], "texture": "#m"}, + "up": {"uv": [6, 3, 10, 5], "texture": "#m"}, + "down": {"uv": [6, 11, 10, 13], "texture": "#m"} + } + }, + { + "from": [2, 2, 3], + "to": [6, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [2, 3, 6, 5], "texture": "#m"}, + "down": {"uv": [2, 11, 6, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 3, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 8]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "up": {"uv": [10, 3, 14, 5], "texture": "#m"}, + "down": {"uv": [10, 11, 14, 13], "texture": "#m"} + } + }, + { + "from": [10, 2, 11], + "to": [14, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 16]}, + "faces": { + "north": {"uv": [2, 13, 6, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [10, 13, 14, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [10, 11, 14, 13], "texture": "#m"}, + "down": {"uv": [10, 3, 14, 5], "texture": "#m"} + } + }, + { + "from": [2, 2, 11], + "to": [6, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 16]}, + "faces": { + "north": {"uv": [10, 13, 14, 14], "rotation": 180, "texture": "#2"}, + "east": {"uv": [3, 13, 5, 14], "texture": "#m"}, + "south": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "west": {"uv": [11, 13, 13, 14], "texture": "#m"}, + "up": {"uv": [2, 11, 6, 13], "texture": "#m"}, + "down": {"uv": [2, 3, 6, 5], "texture": "#m"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [85, 3, -10], + "translation": [1.75, -0.75, -2.25], + "scale": [0.35, 0.35, 0.35] + }, + "ground": { + "translation": [0, -0.75, 0], + "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.14/src/main/resources/assets/engineersdecor/models/item/small_solar_panel.json b/1.14/src/main/resources/assets/engineersdecor/models/item/small_solar_panel.json new file mode 100644 index 0000000..0015876 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/item/small_solar_panel.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/device/small_solar_panel_model_exp0" } \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_panel.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_panel.png new file mode 100644 index 0000000..202ad56 Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_panel.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_parts.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_parts.png new file mode 100644 index 0000000..f81ce18 Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_parts.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_side.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_side.png new file mode 100644 index 0000000..0aee14f Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_side.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_topbottom.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_topbottom.png new file mode 100644 index 0000000..8326348 Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/device/small_solar_panel_topbottom.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png b/1.14/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png index e09864c..d1fea55 100644 Binary files a/1.14/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png and b/1.14/src/main/resources/assets/engineersdecor/textures/gui/factory_dropper_gui.png differ diff --git a/1.14/src/main/resources/data/engineersdecor/recipes/alternative/small_solar_panel_recipe_standalone.json b/1.14/src/main/resources/data/engineersdecor/recipes/alternative/small_solar_panel_recipe_standalone.json new file mode 100644 index 0000000..d6fdde3 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/recipes/alternative/small_solar_panel_recipe_standalone.json @@ -0,0 +1,23 @@ +{ + "conditions": [ + { + "type": "engineersdecor:optional", + "result": "engineersdecor:small_solar_panel", + "missing": ["immersiveengineering:metal_device1"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "QQQ", + " S ", + "SRS" + ], + "key": { + "Q": { "item": "minecraft:quartz" }, + "S": { "item": "minecraft:iron_ingot" }, + "R": { "item": "minecraft:redstone_block" } + }, + "result": { + "item": "engineersdecor:small_solar_panel" + } +} diff --git a/documentation/engineers-decor-v100a-concrete-stuff.png b/documentation/engineers-decor-v100a-concrete-stuff.png index 11e8f76..0678550 100644 Binary files a/documentation/engineers-decor-v100a-concrete-stuff.png and b/documentation/engineers-decor-v100a-concrete-stuff.png differ diff --git a/documentation/engineers-decor-v100a-summary.png b/documentation/engineers-decor-v100a-summary.png deleted file mode 100644 index f4624aa..0000000 Binary files a/documentation/engineers-decor-v100a-summary.png and /dev/null differ diff --git a/documentation/engineers-decor-v101a-summary.png b/documentation/engineers-decor-v101a-summary.png deleted file mode 100644 index 17999fa..0000000 Binary files a/documentation/engineers-decor-v101a-summary.png and /dev/null differ diff --git a/documentation/engineers-decor-v102-panzerglass.png b/documentation/engineers-decor-v102-panzerglass.png index 4eda196..9e6c02f 100644 Binary files a/documentation/engineers-decor-v102-panzerglass.png and b/documentation/engineers-decor-v102-panzerglass.png differ diff --git a/documentation/engineers-decor-v103-labfurnace-electrical-speedup.png b/documentation/engineers-decor-v103-labfurnace-electrical-speedup.png new file mode 100644 index 0000000..658cc66 Binary files /dev/null and b/documentation/engineers-decor-v103-labfurnace-electrical-speedup.png differ diff --git a/documentation/engineers-decor-v103-labfurnacegui.png b/documentation/engineers-decor-v103-labfurnacegui.png index 2c7abb4..492ad3e 100644 Binary files a/documentation/engineers-decor-v103-labfurnacegui.png and b/documentation/engineers-decor-v103-labfurnacegui.png differ diff --git a/documentation/engineers-decor-v103-stool-sitting.png b/documentation/engineers-decor-v103-stool-sitting.png index 435951e..b619a38 100644 Binary files a/documentation/engineers-decor-v103-stool-sitting.png and b/documentation/engineers-decor-v103-stool-sitting.png differ diff --git a/documentation/engineers-decor-v103-summary.png b/documentation/engineers-decor-v103-summary.png index 655c273..df2b528 100644 Binary files a/documentation/engineers-decor-v103-summary.png and b/documentation/engineers-decor-v103-summary.png differ diff --git a/documentation/engineers-decor-v103-treatedwood-pole.png b/documentation/engineers-decor-v103-treatedwood-pole.png new file mode 100644 index 0000000..2d36570 Binary files /dev/null and b/documentation/engineers-decor-v103-treatedwood-pole.png differ diff --git a/documentation/engineers-decor-v103-windows.png b/documentation/engineers-decor-v103-windows.png new file mode 100644 index 0000000..d281dfe Binary files /dev/null and b/documentation/engineers-decor-v103-windows.png differ diff --git a/documentation/engineers-decor-v104a-craftinggui.png b/documentation/engineers-decor-v104a-craftinggui.png index ebbab10..1b47ed0 100644 Binary files a/documentation/engineers-decor-v104a-craftinggui.png and b/documentation/engineers-decor-v104a-craftinggui.png differ diff --git a/documentation/engineers-decor-v104a-double_t_supports.png b/documentation/engineers-decor-v104a-double_t_supports.png new file mode 100644 index 0000000..adab318 Binary files /dev/null and b/documentation/engineers-decor-v104a-double_t_supports.png differ diff --git a/documentation/engineers-decor-v104a-redstone-valves.png b/documentation/engineers-decor-v104a-redstone-valves.png new file mode 100644 index 0000000..8b0e47b Binary files /dev/null and b/documentation/engineers-decor-v104a-redstone-valves.png differ diff --git a/documentation/engineers-decor-v104a-steelpoles.png b/documentation/engineers-decor-v104a-steelpoles.png new file mode 100644 index 0000000..284272c Binary files /dev/null and b/documentation/engineers-decor-v104a-steelpoles.png differ diff --git a/documentation/engineers-decor-v105a-e-furnace-gui.png b/documentation/engineers-decor-v105a-e-furnace-gui.png new file mode 100644 index 0000000..d43d97e Binary files /dev/null and b/documentation/engineers-decor-v105a-e-furnace-gui.png differ diff --git a/documentation/engineers-decor-v105a-e-furnace.png b/documentation/engineers-decor-v105a-e-furnace.png new file mode 100644 index 0000000..3b8c114 Binary files /dev/null and b/documentation/engineers-decor-v105a-e-furnace.png differ diff --git a/documentation/engineers-decor-v106a-factorydropper.png b/documentation/engineers-decor-v106a-factorydropper.png new file mode 100644 index 0000000..908c422 Binary files /dev/null and b/documentation/engineers-decor-v106a-factorydropper.png differ diff --git a/documentation/engineers-decor-v106a-wasteincinerator-gui.png b/documentation/engineers-decor-v106a-wasteincinerator-gui.png new file mode 100644 index 0000000..12c617f Binary files /dev/null and b/documentation/engineers-decor-v106a-wasteincinerator-gui.png differ diff --git a/documentation/engineers-decor-v106a-wasteincinerator.png b/documentation/engineers-decor-v106a-wasteincinerator.png new file mode 100644 index 0000000..338ddcb Binary files /dev/null and b/documentation/engineers-decor-v106a-wasteincinerator.png differ diff --git a/documentation/factory-dropper-directional.png b/documentation/factory-dropper-directional.png new file mode 100644 index 0000000..c688fee Binary files /dev/null and b/documentation/factory-dropper-directional.png differ diff --git a/documentation/factory-dropper-gui.png b/documentation/factory-dropper-gui.png new file mode 100644 index 0000000..16e8fc0 Binary files /dev/null and b/documentation/factory-dropper-gui.png differ diff --git a/documentation/factory-dropper-metal-press-compression.png b/documentation/factory-dropper-metal-press-compression.png new file mode 100644 index 0000000..a409eb5 Binary files /dev/null and b/documentation/factory-dropper-metal-press-compression.png differ diff --git a/documentation/readme.md b/documentation/readme.md new file mode 100644 index 0000000..2045340 --- /dev/null +++ b/documentation/readme.md @@ -0,0 +1,25 @@ + +## Engineer's Decor screenshots + +![](engineers-decor-v103-summary.png) +![](engineers-decor-v104a-craftinggui.png) +![](engineers-decor-v103-labfurnacegui.png) +![](engineers-decor-v103-labfurnace-electrical-speedup.png) +![](engineers-decor-v100a-concrete-stuff.png) +![](engineers-decor-v102-panzerglass.png) +![](engineers-decor-v105a-e-furnace.png) +![](engineers-decor-v105a-e-furnace-gui.png) +![](engineers-decor-v103-windows.png) +![](engineers-decor-v103-treatedwood-pole.png) +![](engineers-decor-v104a-steelpoles.png) +![](engineers-decor-v104a-double_t_supports.png) +![](engineers-decor-v103-stool-sitting.png) +![](engineers-decor-v106a-wasteincinerator.png) +![](engineers-decor-v106a-wasteincinerator-gui.png) +![](engineers-decor-v104a-redstone-valves.png) +![](engineers-decor-v106a-factorydropper.png) +![](factory-dropper-gui.png) +![](factory-dropper-metal-press-compression.png) +![](small-mineral-smelter-vanilla-automated.png) +![](small-solar-panel.png) +![](small-tree-cutter.png) diff --git a/documentation/small-mineral-smelter-vanilla-automated.png b/documentation/small-mineral-smelter-vanilla-automated.png new file mode 100644 index 0000000..3bddc78 Binary files /dev/null and b/documentation/small-mineral-smelter-vanilla-automated.png differ diff --git a/documentation/small-solar-panel.png b/documentation/small-solar-panel.png new file mode 100644 index 0000000..f6275d6 Binary files /dev/null and b/documentation/small-solar-panel.png differ diff --git a/documentation/small-tree-cutter.png b/documentation/small-tree-cutter.png new file mode 100644 index 0000000..b0762ce Binary files /dev/null and b/documentation/small-tree-cutter.png differ diff --git a/meta/update.json b/meta/update.json index 7d8cdc0..b7e7dae 100644 --- a/meta/update.json +++ b/meta/update.json @@ -2,15 +2,16 @@ "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "promos": { "1.12.2-recommended": "1.0.11", - "1.12.2-latest": "1.0.11", + "1.12.2-latest": "1.0.12-b1", "1.14.4-recommended": "", - "1.14.4-latest": "1.0.11-b3" + "1.14.4-latest": "1.0.12-b1" }, "1.12.2": { + "1.0.12-b1": "[A] Mineal Smelter non-experimental now.\n[M] Window submodels stripped (reopened issue #19, thx overchoice).\n[M] Opaque full block light opacity fixed (issue #50, thx Illomiurge).\n[M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, thx Aristine for the CR).", "1.0.11": "[R] Release based on v1.0.11-b3. Release-to-release changes: * Steel floor grating improvments. * Minor model box fixes. * Standalone recipes added. * Language updates.", "1.0.11-b3": "[M] Added missing standalone recipes for pipe valves, passive fluid accumulator, and waste incinerator.", "1.0.11-b2": "[F] Fixed Floor Grating issue, which could have caused a crash.\n[M] Lang update ru-ru (Shellyoung, PR #47).", - "1.0.11-b1": "[M] Lang update ru-ru (Shellyoung, PR #45).\n[F] Fixed bounding box of the Steel Table.\n[M] Steel Floor Frating: Items fall through.", + "1.0.11-b1": "[M] Lang update ru-ru (Shellyoung, PR #45).\n[F] Fixed bounding box of the Steel Table.\n[M] Steel Floor Grating: Items fall through.", "1.0.10": "[R] Release based on v1.0.10-b2. Release-to-release changes: * Steel table added. * Steel floor grating added. * Treated wood side table added. * Exit Sign added. * Recipe fixes.", "1.0.10-b2": "[A] Steel table added.\n[A] Steel floor grating added.", "1.0.10-b1": "[A] Treated wood side table added.\n[F] Fixed recipe collision of Metal Rung Ladder (issue #37, thx ProsperCraft for reporting).\n[A] Added Exit Sign (texture design by J. Carver).", @@ -60,6 +61,7 @@ "1.0.0-b1": "[A] Initial structure.\n[A] Added clinker bricks and clinker brick stairs.\n[A] Added slag bricks and slag brick stairs.\n[A] Added metal rung ladder.\n[A] Added staggered metal steps ladder.\n[A] Added treated wood ladder.\n[A] Added treated wood pole.\n[A] Added treated wood table." }, "1.14.4": { + "1.0.12-b1": "[U] Updated to Forge 1.14.4-28.0.93/20190719-1.14.3.\n[M] Logo location fixed.", "1.0.11-b3": "[U] Updated to Forge 1.14.4-28.0.81/20190719-1.14.3.\n[F] Adapted recipe condition to Forge version (issue #49).", "1.0.11-b2": "[U] JEI dependency update 1.14.4:6.0.0.10.\n[F] Fixed creative ghost block issue (issue #48).\n[M] Updated ru_ru lang file (Shellyoung, PR#47).", "1.0.11-b1": "[A] Added Steel Table\n[A] Added Treated Wood Side Table\n[A] Added Exit Sign\n[A] Added Steel Floor Grating\n[M] Sign orientation fixed, only blocked vertical placement.", diff --git a/readme.md b/readme.md index 4e4ed35..a0f69d9 100644 --- a/readme.md +++ b/readme.md @@ -7,6 +7,8 @@ for the Engineer's factory, workshop, and home. ![](documentation/engineers-decor-v103-summary.png) +[Screenshots in the documentation readme here](documentation/readme.md) + ### Distribution file download Main distribution channel for this mod is CurseForge: @@ -117,6 +119,13 @@ looking manufacturing contraptions. Current feature set: wall, or floor. Light level like a torch. Thin, hence not blocking the way. Allows illuminating places where electrical light installations are problematic. +- *Industrial signs*: "Danger", "Electrical Hazard", "Exit", etc. + +- *Slab slices*: Decorative stackable thin slabs made of of IE metal sheets, + concretes, treated wood. Useful e.g. for roofs or ramps. Left-clicking with + the same slab type in your hand while looking up/down removes slices again. + Crafted 3x3 from four slabs. + - *Fluid pipe check valve*: Check valve: IE fluid pipe styled straight valve that conducts fluids only in one direction. Crafted from 3x3 from three fluid pipes. Supports IE pressurized fluid transfer. @@ -131,12 +140,18 @@ looking manufacturing contraptions. Current feature set: drip-in to allow pumps to detect that fluids can be drained. The accumulator has a vacuum suction delay. -- *Industrial signs*: "Danger", "electrical hazard", etc. +- *Small Solar Panel*: Produces a small amount of RF power, comparable to a + IE thermal peltier generator over one day cycle. No power at night, reduced + power when raining. The power curve during day time is non-linear. Useful + for electrical lighting of remote places. -- *Slab slices*: Decorative stackable thin slabs made of of IE metal sheets, - concretes, treated wood. Useful e.g. for roofs or ramps. Left-clicking with - the same slab type in your hand while looking up/down removes slices again. - Crafted 3x3 from four slabs. +- *Small Tree Cutter*: A slab sized device that chops a tree in front of it. + Needs by default about one minute, with RF power less than 10 seconds. Useful + to build a contraptive automated tree farm. + +- *Small Mineral Smelter*: Device that slowly converts most stones or sands to + magma blocks and finally to lava. Needs a lot of power. When the lava is cooled + down in the smelter by removing the RF power, obsidian is generated. More to come slowly but steadily.