diff --git a/.gitignore b/.gitignore index 6d22088..c792a31 100644 --- a/.gitignore +++ b/.gitignore @@ -1,33 +1,36 @@ -bin -*.launch -.settings -.metadata .classpath +.gimp +.gradle +.idea +.metadata .project -out +.settings +.vscode +.DS_Store +*~ +*.iml *.ipr *.iws -*.iml -.idea -build -.gradle -*.tmp -*.log *.jks -eclipse -run -tests -/dist -signing.* -src/main/java/archive -src/main/resources/assets/minecraft -.vscode -/classes -/dev -/tmp +*.launch +*.log +*.tmp +*.xcf +/*.txt /archive /assets-src -.gimp -*.xcf +/classes +/dev +/dist +/tmp +bin +build desktop.ini -/*.txt +eclipse +out +run +signing.* +/*/src/generated +/*/src/main/java/archive +/*/src/main/resources/assets/minecraft +/*/tests diff --git a/1.12/gradle.properties b/1.12/gradle.properties index 95bfbb0..74fe1ac 100644 --- a/1.12/gradle.properties +++ b/1.12/gradle.properties @@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G version_minecraft=1.12.2 version_forge=14.23.5.2768 version_jei=4.10.0.198 -version_engineersdecor=1.0.13-b1 +version_engineersdecor=1.0.13-b2 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index 41d5c6a..6be20e4 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -1,7 +1,8 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.12.2": { - "1.0.13-b1": "[A] Small Solar Panel added.\n[A] Small Tree Cutter added.", + "1.0.13-b2": "[A] Added Steel Mesh Fence.\n[A] Added Broad Window Sill.\n[A] Small Tree Cutter can chop Dynamic Trees, chops at tree trunk radius 7 or higher.", + "1.0.13-b1": "[A] Added Small Solar Panel.\n[A] Added Small Tree Cutter.", "1.0.12": "[R] Release based on v1.0.12-b2. Release-to-release changes: * Crafting table: Recipe collision resolver added. Items are rendered on the table surface. * Small Mineral Smelter released. * Factory Dropper: Continuous dropping mode added. * Block opacity fixes, window model fixes. * Lang file updates.", "1.0.12-b2": "[A] Crafting Table: Added recipe collision resolver, also applies to crafting history refabrication.\n[A] Crafting Table: Added rendering of placed items on the top surface of the table.\n[M] Lang files updated.", "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).", @@ -59,6 +60,6 @@ }, "promos": { "1.12.2-recommended": "1.0.12", - "1.12.2-latest": "1.0.13-b1" + "1.12.2-latest": "1.0.13-b2" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index efd574c..b295e6a 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -10,8 +10,13 @@ Mod sources for Minecraft version 1.12.2. ---- ## Version history - - v1.0.13-b1 [A] Small Solar Panel added. - [A] Small Tree Cutter added. + - v1.0.13-b2 [A] Added Steel Mesh Fence. + [A] Added Broad Window Sill. + [A] Small Tree Cutter can chop Dynamic Trees, + chops at tree trunk radius 7 or higher. + + - v1.0.13-b1 [A] Added Small Solar Panel. + [A] Added Small Tree Cutter. ------------------------------------------------------------------- - v1.0.12 [R] Release based on v1.0.12-b2. Release-to-release changes: diff --git a/1.12/src/main/java/wile/engineersdecor/ModContent.java b/1.12/src/main/java/wile/engineersdecor/ModContent.java index e0397d3..7de86b2 100644 --- a/1.12/src/main/java/wile/engineersdecor/ModContent.java +++ b/1.12/src/main/java/wile/engineersdecor/ModContent.java @@ -26,7 +26,6 @@ import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.client.registry.ClientRegistry; -import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -229,6 +228,13 @@ public class ModContent //-------------------------------------------------------------------------------------------------------------------- + public static final BlockDecorFence STEEL_MESH_FENCE = new BlockDecorFence( + "steel_mesh_fence", + BlockDecor.CFG_DEFAULT, Material.IRON, 2f, 15f, SoundType.METAL + ); + + //-------------------------------------------------------------------------------------------------------------------- + public static final BlockDecor TREATED_WOOD_TABLE = new BlockDecor( "treated_wood_table", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_LOOK_PLACEMENT, @@ -250,13 +256,20 @@ public class ModContent ModAuxiliaries.getPixeledAABB(2,0,2, 14,15.9,14) ); - public static final BlockDecorDirected TREATED_WOOD_WINDOWSILL = new BlockDecorDirected( + public static final BlockDecorWindowSill TREATED_WOOD_WINDOWSILL = new BlockDecorWindowSill( "treated_wood_windowsill", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_FACING_PLACEMENT, Material.WOOD, 1.0f, 10f, SoundType.WOOD, ModAuxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16) ); + public static final BlockDecorWindowSill TREATED_WOOD_BROAD_WINDOWSILL = new BlockDecorWindowSill( + "treated_wood_broad_windowsill", + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_FACING_PLACEMENT, + Material.WOOD, 1.0f, 10f, SoundType.WOOD, + ModAuxiliaries.getPixeledAABB(0,14.5,4, 16,16,16) + ); + public static final BlockDecorDirected INSET_LIGHT_IRON = new BlockDecorDirected( "iron_inset_light", BlockDecor.CFG_CUTOUT|BlockDecor.CFG_OPPOSITE_PLACEMENT|(14< event) { // Config based registry selection - final boolean ie_installed = Loader.isModLoaded("immersiveengineering"); + final boolean ie_installed = ModAuxiliaries.isModLoaded("immersiveengineering"); int num_block_registrations_skipped = 0; int num_block_registrations_skipped_noie = 0; final boolean woor = ModConfig.isWithoutOptOutRegistration(); diff --git a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java index 54617da..20cd067 100644 --- a/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java +++ b/1.12/src/main/java/wile/engineersdecor/ModEngineersDecor.java @@ -116,6 +116,7 @@ public class ModEngineersDecor if(RecipeCondModSpecific.num_skipped > 0) logger.info("Excluded " + RecipeCondModSpecific.num_skipped + " recipes due to config opt-out."); if(ModConfig.zmisc.with_experimental) logger.info("Included experimental features due to mod config."); ExtItems.onPostInit(); + TreeCutting.reload(); } @Mod.EventBusSubscriber diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java new file mode 100644 index 0000000..2b214c6 --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java @@ -0,0 +1,75 @@ +/* + * @file BlockDecorFence.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Fence blocks. + */ +package wile.engineersdecor.blocks; + +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.BlockFaceShape; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + + +public class BlockDecorFence extends BlockDecorWall +{ + protected static final AxisAlignedBB[] AABB_BY_INDEX = mkAABBs (1.5d, 0.5d, 16d); + protected static final AxisAlignedBB[] CLIP_AABB_BY_INDEX = mkAABBs (1.5d, 0.5d, 24d); + protected static final AxisAlignedBB[][] AABB_LIST_BY_INDEX = mkCAABBs(1.5d, 0.5d, 16d); + protected static final AxisAlignedBB[][] CLIP_AABB_LIST_BY_INDEX = mkCAABBs(1.5d, 0.5d, 24d); + + public BlockDecorFence(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound) + { + super(registryName, config, material, hardness, resistance, sound); + setDefaultState(blockState.getBaseState().withProperty(UP, false).withProperty(NORTH, false).withProperty(EAST, false).withProperty(SOUTH, false).withProperty(WEST, false)); + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) + { return AABB_BY_INDEX[getAABBIndex(getActualState(state, source, pos))]; } + + @Override + @SuppressWarnings("deprecation") + public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, @Nullable Entity entityIn, boolean isActualState) + { + final AxisAlignedBB[] bbs = CLIP_AABB_LIST_BY_INDEX[getAABBIndex(isActualState ? state : getActualState(state, world, pos))]; + for(int i=0; i collidingBoxes, @Nullable Entity entityIn, boolean isActualState) - { addCollisionBoxToList(pos, entityBox, collidingBoxes, CLIP_AABB_BY_INDEX[getAABBIndex(isActualState ? state : getActualState(state, world, pos))]); } + { + final AxisAlignedBB[] bbs = CLIP_AABB_LIST_BY_INDEX[getAABBIndex(isActualState ? state : getActualState(state, world, pos))]; + for(int i=0; i choppable_states = new HashMap(); + public static long num_breaking_exceptions = 0; + + static void reload() + { + try { + choppable_states.clear(); + if(ModAuxiliaries.isModLoaded("dynamictrees")) { + ForgeRegistries.BLOCKS.getKeys().forEach((regname)->{ + if("dynamictrees".equals(regname.getNamespace())) { + if(!regname.getPath().contains("branch")) return; + try { + Block block = ForgeRegistries.BLOCKS.getValue(regname); + IBlockState state = block.getDefaultState(); + for(IProperty vaprop: state.getProperties().keySet()) { + if(!("radius".equals(vaprop.getName())) || (vaprop.getValueClass() != Integer.class)) continue; + @SuppressWarnings("unchecked") + IProperty prop = (IProperty)vaprop; + Integer max = ((Collection)prop.getAllowedValues()).stream().max(Integer::compare).orElse(0); + if(max<7) continue; + for(int r=7; r<=max; ++r) choppable_states.put(state.withProperty(prop, r), ChoppingMethod.RootBlockBreaking); + } + } catch(Throwable e) { + LOGGER.warn("Failed to register chopping for " + regname.toString()); + return; + } + } + }); + } + LOGGER.info("Dynamic Trees chopping compat: " + choppable_states.size() + " choppable states found."); + } catch(Throwable e) { + choppable_states.clear(); + LOGGER.warn("Failed to determine choppings for dynamic trees compat, skipping that:" + e); + } + } + + private static boolean canChop(IBlockState state) + { return choppable_states.containsKey(state); } + + private static int chop(World world, IBlockState state, BlockPos pos, int max_blocks_to_break, boolean without_target_block) + { + final int default_expense = 5; + switch(choppable_states.getOrDefault(state, ChoppingMethod.None)) { + case None: + return 0; + case RootBlockBreaking: { + if(num_breaking_exceptions < 16) { + try { + world.setBlockState(pos, Blocks.AIR.getDefaultState(), 1); + state.getBlock().breakBlock(world, pos, state); + } catch(Throwable e) { + if(++num_breaking_exceptions == 1) LOGGER.warn("Tree Chopper: There was an exception while trying to break a tree trunk ("+state.getBlock().getRegistryName()+"): " + e); + if(num_breaking_exceptions == 16) LOGGER.warn("Tree Chopper: There were 16 exceptions in total trying to chop modded trees. Feature has been disabled."); + } + } + return 5; + } + default: + return 0; + } + } + } + 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) ); + public static void reload() + { Compat.reload(); } + 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(); @@ -47,13 +122,14 @@ public class TreeCutting } public static boolean canChop(IBlockState state) - { return BlockCategories.isLog(state); } + { return BlockCategories.isLog(state) || Compat.canChop(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((Compat.canChop(broken_state))) return Compat.chop(world, broken_state, startPos, max_blocks_to_break, without_target_block); if(!BlockCategories.isLog(broken_state)) return 0; final long ymin = startPos.getY(); final long max_leaf_distance = 6; diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json new file mode 100644 index 0000000..1213411 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json @@ -0,0 +1,20 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:fence/steel_mesh_fence_default", + "textures": { + "wall": "engineersdecor:blocks/fence/steel_mesh_fence", + "postside": "engineersdecor:blocks/fence/steel_mesh_pole_side", + "top": "engineersdecor:blocks/fence/steel_mesh_top", + "particle": "engineersdecor:blocks/fence/steel_mesh_top" + } + }, + "variants": { + "inventory": { "model": "engineersdecor:fence/steel_mesh_fence_inventory" }, + "up" : { "false":{}, "true": {"submodel": {"smwfence_up" : {"model": "engineersdecor:fence/steel_mesh_fence_post" }}} }, + "north": { "false":{}, "true": {"submodel": {"smwfence_north" : {"model": "engineersdecor:fence/steel_mesh_fence_side", "uvlock": true, "y": 0 }}} }, + "east" : { "false":{}, "true": {"submodel": {"smwfence_east" : {"model": "engineersdecor:fence/steel_mesh_fence_side", "uvlock": true, "y": 90 }}} }, + "south": { "false":{}, "true": {"submodel": {"smwfence_south" : {"model": "engineersdecor:fence/steel_mesh_fence_side", "uvlock": true, "y": 180 }}} }, + "west" : { "false":{}, "true": {"submodel": {"smwfence_west" : {"model": "engineersdecor:fence/steel_mesh_fence_side", "uvlock": true, "y": 270 }}} } + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json new file mode 100644 index 0000000..91534b1 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json @@ -0,0 +1,11 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "engineersdecor:furniture/treated_wood_windowsill_broad_model" + }, + "variants": { + "normal": [{}], + "inventory": [{}], + "facing": { "north": {"y":0}, "south": {"y":180}, "west": {"y":-90}, "east": {"y":90}, "up":{}, "down":{} } + } +} 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 7189509..69a14b4 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 @@ -108,8 +108,12 @@ tile.engineersdecor.treated_wood_window.name=Treated Wood Window tile.engineersdecor.treated_wood_window.help=§6Wood framed triple glazed window. Well insulating.§r Does not connect to adjacent blocks like glass panes. tile.engineersdecor.treated_wood_windowsill.name=Treated Wood Window Sill tile.engineersdecor.treated_wood_windowsill.help=§6Simple window decoration. +tile.engineersdecor.treated_wood_broad_windowsill.name=Broad Treated Wood Window Sill +tile.engineersdecor.treated_wood_broad_windowsill.help=§6Simple window decoration. tile.engineersdecor.steel_framed_window.name=Steel Framed Window tile.engineersdecor.steel_framed_window.help=§6Steel framed triple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes. +tile.engineersdecor.steel_mesh_fence.name=Steel Mesh Fence +tile.engineersdecor.steel_mesh_fence.help=§6Industrial style fence.§r\nDoes not connect do regular fences. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.small_lab_furnace.name=Small Laboratory Furnace tile.engineersdecor.small_lab_furnace.help=§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. \ 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 d1695db..e71e2cc 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 @@ -105,8 +105,12 @@ tile.engineersdecor.treated_wood_window.name=Обработанное дерев tile.engineersdecor.treated_wood_window.help=§6Деревянный каркас окна с тройным остеклением. Ну и шумоизоляция. tile.engineersdecor.treated_wood_windowsill.name=Обработанный деревянный подоконник tile.engineersdecor.treated_wood_windowsill.help=§6Простое оформление окон. +tile.engineersdecor.treated_wood_broad_windowsill.name=Broad Treated Wood Window Sill +#tile.engineersdecor.treated_wood_broad_windowsill.help=§6Simple window decoration. tile.engineersdecor.steel_framed_window.name=Окно со стальной рамой tile.engineersdecor.steel_framed_window.help=§6Стальной каркас окна с тройным остеклением. Хорошо изолирует. §r Не подключается к смежным блокам, таким как стеклянные панели. +tile.engineersdecor.steel_mesh_fence.name=Steel Mesh Fence +#tile.engineersdecor.steel_mesh_fence.help=§6Industrial style fence.§r\nDoes not connect do regular fences. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.small_lab_furnace.name=Компактная лабораторная печь tile.engineersdecor.small_lab_furnace.help=§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива сверху. Немного горячее, чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива. 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 d37aeb0..2c51be5 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 @@ -106,8 +106,12 @@ tile.engineersdecor.treated_wood_window.name=Treated Wood Window #tile.engineersdecor.treated_wood_window.help=§6Wood framed triple glazed window. Well insulating.§r Does not connect to adjacent blocks like glass panes. tile.engineersdecor.treated_wood_windowsill.name=Treated Wood Window Sill #tile.engineersdecor.treated_wood_windowsill.help=§6Simple window decoration. +tile.engineersdecor.treated_wood_broad_windowsill.name=Broad Treated Wood Window Sill +#tile.engineersdecor.treated_wood_broad_windowsill.help=§6Simple window decoration. tile.engineersdecor.steel_framed_window.name=Steel Framed Window #tile.engineersdecor.steel_framed_window.help=§6Steel framed triple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes. +tile.engineersdecor.steel_mesh_fence.name=Steel Mesh Fence +#tile.engineersdecor.steel_mesh_fence.help=§6Industrial style fence.§r\nDoes not connect do regular fences. #----------------------------------------------------------------------------------------------------------- tile.engineersdecor.small_lab_furnace.name=Small Laboratory Furnace #tile.engineersdecor.small_lab_furnace.help=§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. \ diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_default.json b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_default.json new file mode 100644 index 0000000..f5cbe22 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_default.json @@ -0,0 +1,9 @@ +{ + "textures": { + "wall": "engineersdecor:blocks/fence/steel_mesh_fence", + "particle": "engineersdecor:blocks/fence/steel_mesh_fence" + }, + "elements": [{ + "from": [7.9, 7.9, 7.9], "to": [8, 8, 8], "faces": { "down": {"texture": "#wall"} } + }] +} diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json new file mode 100644 index 0000000..8212a84 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json @@ -0,0 +1,427 @@ +{ + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "wall": "engineersdecor:blocks/fence/steel_mesh_fence", + "particle": "engineersdecor:blocks/fence/steel_mesh_fence", + "top": "engineersdecor:blocks/fence/steel_mesh_top" + }, + "elements": [ + { + "name": "Full wall", + "from": [7, 0, 0.5], + "to": [9, 16, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7, 0, 13.5], + "to": [9, 16, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 0.125, 2.5], + "to": [8.125, 0.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 4.125, 2.5], + "to": [8.125, 4.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 5.8125], + "to": [8.05, 15.375, 6.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 8.125, 2.5], + "to": [8.125, 8.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 9.8125], + "to": [8.05, 15.375, 10.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 12.125, 2.5], + "to": [8.125, 12.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 2.125, 2.5], + "to": [8.125, 2.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 3.8125], + "to": [8.05, 15.375, 4.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 6.125, 2.5], + "to": [8.125, 6.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 7.8125], + "to": [8.05, 15.375, 8.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 10.125, 2.5], + "to": [8.125, 10.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 18, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 11.8125], + "to": [8.05, 15.375, 12.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 14.125, 2.5], + "to": [8.125, 14.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 1.125, 2.5], + "to": [8, 1.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 2.8125], + "to": [8.05, 15.375, 3.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 5.125, 2.5], + "to": [8, 5.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 6.8125], + "to": [8.05, 15.375, 7.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 9.125, 2.5], + "to": [8, 9.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 17, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 10.8125], + "to": [8.05, 15.375, 11.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 13.125, 2.5], + "to": [8, 13.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 21, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 15.125, 2.5], + "to": [8, 15.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 3.125, 2.5], + "to": [8, 3.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 4.8125], + "to": [8.05, 15.375, 5.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 7.125, 2.5], + "to": [8, 7.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 8.8125], + "to": [8.05, 15.375, 9.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 11.125, 2.5], + "to": [8, 11.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 19, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 12.8125], + "to": [8.05, 15.375, 13.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + } + ], + "display": { + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [0, 90, 0], + "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/fence/steel_mesh_fence_post.json b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_post.json new file mode 100644 index 0000000..ec1293d --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_post.json @@ -0,0 +1,22 @@ +{ + "textures": { + "postside": "engineersdecor:blocks/fence/steel_mesh_pole_side", + "top": "engineersdecor:blocks/fence/steel_mesh_top", + "particle": "engineersdecor:blocks/fence/steel_mesh_top" + }, + "elements": [ + { + "name": "Center post", + "from": [6.5, 0, 6.5], + "to": [9.5, 16, 9.5], + "faces": { + "north": {"texture": "#postside"}, + "east": {"texture": "#postside"}, + "south": {"texture": "#postside"}, + "west": {"texture": "#postside"}, + "up": {"texture": "#top", "cullface": "up"}, + "down": {"texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json new file mode 100644 index 0000000..875629d --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json @@ -0,0 +1,176 @@ +{ + "textures": { + "wall": "engineersdecor:blocks/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [8, 15.625, 0.0625], + "to": [8.1875, 15.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 8, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 13.625, 0.0625], + "to": [8, 13.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, 6, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 9.625, 0.0625], + "to": [8, 9.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, 2, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 5.625, 0.0625], + "to": [8, 5.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, -2, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 1.625, 0.0625], + "to": [8, 1.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, -6, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 11.625, 0.0625], + "to": [8.1875, 11.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 4, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 7.625, 0.0625], + "to": [8.1875, 7.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 0, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 3.625, 0.0625], + "to": [8.1875, 3.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, -4, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 1.875], + "to": [8.125, 15.855, 2.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 9.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 0], + "to": [8.125, 15.855, 0.1875], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 7.8125], + "to": [8.125, 15.855, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 15.8125]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 3.875], + "to": [8.125, 15.855, 4.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 11.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 5.875], + "to": [8.125, 15.855, 6.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 13.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + } + ] +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json new file mode 100644 index 0000000..ad7081a --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json @@ -0,0 +1,113 @@ +{ + "parent": "block/cube", + "textures": { + "o": "engineersdecor:blocks/iestyle/treated_wood_rough_texture", + "particle": "engineersdecor:blocks/iestyle/treated_wood_rough_texture" + }, + "elements": [ + { + "from": [1.625, 8.625, 13], + "to": [3.375, 16, 14.625], + "rotation": {"angle": -45, "axis": "x", "origin": [2.5, 11, 13.125]}, + "faces": { + "north": {"uv": [12.625, 0, 14.375, 7.375], "texture": "#o"}, + "east": {"uv": [1.375, 0, 3, 7.375], "texture": "#o"}, + "south": {"uv": [1.625, 0, 3.375, 7.375], "texture": "#o"}, + "west": {"uv": [13, 0, 14.625, 7.375], "texture": "#o"} + } + }, + { + "from": [12.625, 8.625, 13], + "to": [14.375, 16, 14.625], + "rotation": {"angle": -45, "axis": "x", "origin": [13.5, 11, 13.125]}, + "faces": { + "north": {"uv": [1.625, 0, 3.375, 7.375], "texture": "#o"}, + "east": {"uv": [1.375, 0, 3, 7.375], "texture": "#o"}, + "south": {"uv": [12.625, 0, 14.375, 7.375], "texture": "#o"}, + "west": {"uv": [13, 0, 14.625, 7.375], "texture": "#o"} + } + }, + { + "from": [0, 14.5, 4], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 1.5], "texture": "#o"}, + "east": {"uv": [0, 0, 12, 1.5], "texture": "#o"}, + "south": {"uv": [0, 0, 16, 1.5], "texture": "#o"}, + "west": {"uv": [4, 0, 16, 1.5], "texture": "#o"}, + "up": {"uv": [0, 4, 16, 16], "texture": "#o"}, + "down": {"uv": [0, 0, 16, 12], "texture": "#o"} + } + }, + { + "from": [1.5, 9, 14.375], + "to": [3.5, 15, 16], + "faces": { + "north": {"uv": [12.5, 1, 14.5, 7], "texture": "#o"}, + "east": {"uv": [0, 1, 1.625, 7], "texture": "#o"}, + "south": {"uv": [1.5, 1, 3.5, 7], "texture": "#o"}, + "west": {"uv": [14.375, 1, 16, 7], "texture": "#o"}, + "down": {"uv": [1.5, 0, 3.5, 1.625], "texture": "#o"} + } + }, + { + "from": [3.5, 14, 14.375], + "to": [12.5, 15, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [10.25, 8, 8]}, + "faces": { + "north": {"uv": [3.5, 1, 12.5, 2], "texture": "#o"}, + "east": {"uv": [0, 1, 1.625, 2], "texture": "#o"}, + "south": {"uv": [3.5, 1, 12.5, 2], "texture": "#o"}, + "west": {"uv": [14.375, 1, 16, 2], "texture": "#o"}, + "down": {"uv": [3.5, 0, 12.5, 1.625], "texture": "#o"} + } + }, + { + "from": [1.5, 14, 5.5], + "to": [14.5, 15, 14.375], + "rotation": {"angle": 0, "axis": "y", "origin": [10.25, 8, 3]}, + "faces": { + "north": {"uv": [1.5, 1, 14.5, 2], "texture": "#o"}, + "east": {"uv": [1.625, 1, 10.5, 2], "texture": "#o"}, + "south": {"uv": [1.5, 1, 14.5, 2], "texture": "#o"}, + "west": {"uv": [5.5, 1, 14.375, 2], "texture": "#o"}, + "down": {"uv": [1.5, 1.625, 14.5, 10.5], "texture": "#o"} + } + }, + { + "from": [12.5, 9, 14.25], + "to": [14.5, 15, 16], + "faces": { + "north": {"uv": [1.5, 1, 3.5, 7], "texture": "#o"}, + "east": {"uv": [0, 1, 1.75, 7], "texture": "#o"}, + "south": {"uv": [12.5, 1, 14.5, 7], "texture": "#o"}, + "west": {"uv": [14.25, 1, 16, 7], "texture": "#o"}, + "down": {"uv": [12.5, 0, 14.5, 1.75], "texture": "#o"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [-8, 154, 97], + "translation": [-1.75, -1.75, -2.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-2, -59, -46], + "translation": [0, -0.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0.75, -4.5, -3], + "scale": [0.7, 0.7, 0.7] + }, + "fixed": { + "translation": [0, 0, -3.75], + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/brick/steel_mesh_fence_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/brick/steel_mesh_fence_recipe.json new file mode 100644 index 0000000..419297a --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/brick/steel_mesh_fence_recipe.json @@ -0,0 +1,28 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:steel_mesh_fence", + "required": ["engineersdecor:thin_steel_pole"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PNP", + "PNP" + ], + "key": { + "P": { + "item": "engineersdecor:thin_steel_pole", + "data": 0 + }, + "N": { + "item": "minecraft:iron_nugget", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:steel_mesh_fence", + "count": 6 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/treated_wood_broad_windowsill_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/treated_wood_broad_windowsill_recipe.json new file mode 100644 index 0000000..3ebc8bb --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/standalone/treated_wood_broad_windowsill_recipe.json @@ -0,0 +1,23 @@ +{ + "conditions": [ + { + "type": "engineersdecor:grc", + "result": "engineersdecor:treated_wood_broad_windowsill", + "required": ["engineersdecor:treated_wood_windowsill"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "WW" + ], + "key": { + "W": { + "item": "engineersdecor:treated_wood_windowsill", + "data": 0 + } + }, + "result": { + "item": "engineersdecor:treated_wood_broad_windowsill", + "count": 2 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_fence.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_fence.png new file mode 100644 index 0000000..4d40a2d Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_fence.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_pole_side.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_pole_side.png new file mode 100644 index 0000000..773c4b9 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_pole_side.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_top.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_top.png new file mode 100644 index 0000000..8a14fa4 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/fence/steel_mesh_top.png differ diff --git a/1.12/src/main/resources/mcmod.info b/1.12/src/main/resources/mcmod.info index d3a4be4..8abae22 100644 --- a/1.12/src/main/resources/mcmod.info +++ b/1.12/src/main/resources/mcmod.info @@ -7,7 +7,7 @@ "mcversion": "${mcversion}", "url": "https://github.com/stfwi/engineers-decor/", "authorList": ["wile"], - "credits": "BluSunrize, malte0811, et al., the Forge Smiths, the Modders of the World.", + "credits": "BluSunrize, Damien Hazard, malte0811, et al., the Forge Smiths, the Modders of the World.", "logoFile": "assets/engineersdecor/logo.png", "screenshots": [], "useDependencyInformation": false, diff --git a/1.14/Makefile b/1.14/Makefile index 9251e35..3c5bf78 100644 --- a/1.14/Makefile +++ b/1.14/Makefile @@ -24,18 +24,23 @@ wildcardr=$(foreach d,$(wildcard $1*),$(call wildcardr,$d/,$2) $(filter $(subst # # Targets # -.PHONY: default mod init clean clean-all mrproper all run install sanatize dist-check dist start-server assets +.PHONY: default mod data init clean clean-all mrproper all run install sanatize dist-check dist start-server assets default: mod all: clean clean-all mod | install -mod: +mod: data @echo "[1.14] Building mod using gradle ..." @$(GRADLE) build $(GRADLE_OPTS) +data: + @echo "[1.14] Running data generators ..." + @djs tasks.js datagen + clean: @echo "[1.14] Cleaning ..." + @rm -rf src/generated @rm -rf mcmodsrepo @rm -f build/libs/* @$(GRADLE) clean diff --git a/1.14/gradle.properties b/1.14/gradle.properties index b00d3e6..3eadd2d 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.105 +version_forge_minecraft=1.14.4-28.1.31 version_fml_mappings=20190719-1.14.3 version_jei=1.14.4:6.0.0.10 -version_engineersdecor=1.0.13-b1 +version_engineersdecor=1.0.13-b3 diff --git a/1.14/meta/update.json b/1.14/meta/update.json index db4c15d..213a61d 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.13-b2": "[A] Added Steel Mesh Fence.\n[A] Added Broad Window Sill.", "1.0.12-b3": "[U] Updated to Forge 1.14.4-28.1.10/20190719-1.14.3.\n[A] Crafting Table: Added recipe collision resolver, also applies to crafting history refabrication.\n[A] Crafting Table: Added rendering of placed items on the top surface of the table.\n[A] Waterlogging of non-full-blocks added.", "1.0.12-b2": "[U] Updated to Forge 1.14.4-28.0.105/20190719-1.14.3.\n[A] Small Solar Panel added.\n[M] Items fall through the Steel Floor Grating like in 1.12.2 version.\n[M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, thx Aristine for the CR).", "1.0.12-b1": "[U] Updated to Forge 1.14.4-28.0.93/20190719-1.14.3.\n[M] Logo location fixed.", @@ -25,6 +26,6 @@ }, "promos": { "1.14.4-recommended": "", - "1.14.4-latest": "1.0.12-b3" + "1.14.4-latest": "1.0.13-b2" } } \ No newline at end of file diff --git a/1.14/readme.md b/1.14/readme.md index cd71298..3d4fd73 100644 --- a/1.14/readme.md +++ b/1.14/readme.md @@ -11,7 +11,11 @@ Mod sources for Minecraft version 1.14.4. ## Version history - ~ v1.0.13-b1 [A] + ~ v1.0.13-b3 [U] Updated to Forge 1.14.4-28.1.31/20190719-1.14.3. + [M] Switched to integrated loot table generation. + + - v1.0.13-b2 [A] Added Steel Mesh Fence. + [A] Added Broad Window Sill. - v1.0.12-b3 [U] Updated to Forge 1.14.4-28.1.10/20190719-1.14.3. [A] Crafting Table: Added recipe collision resolver, diff --git a/1.14/src/main/java/wile/engineersdecor/ModContent.java b/1.14/src/main/java/wile/engineersdecor/ModContent.java index 33262c7..a2c3498 100644 --- a/1.14/src/main/java/wile/engineersdecor/ModContent.java +++ b/1.14/src/main/java/wile/engineersdecor/ModContent.java @@ -210,6 +210,12 @@ public class ModContent ModAuxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16) )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_windowsill")); + public static final BlockDecorDirected.WaterLoggable TREATED_WOOD_BROAD_WINDOWSILL = (BlockDecorDirected.WaterLoggable)(new BlockDecorDirected.WaterLoggable( + BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL|BlockDecor.CFG_FACING_PLACEMENT, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD), + ModAuxiliaries.getPixeledAABB(0,14.5,4, 16,16,16) + )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_broad_windowsill")); + public static final BlockDecorDirected.WaterLoggable INSET_LIGHT_IRON = (BlockDecorDirected.WaterLoggable)(new BlockDecorDirected.WaterLoggable( BlockDecor.CFG_CUTOUT|BlockDecor.CFG_OPPOSITE_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).lightValue(15), @@ -442,6 +448,13 @@ public class ModContent // ------------------------------------------------------------------------------------------------------------------- + public static final BlockDecorFence STEEL_MESH_FENCE = (BlockDecorFence)(new BlockDecorFence( + BlockDecor.CFG_CUTOUT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL) + )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence")); + + // ------------------------------------------------------------------------------------------------------------------- + private static final Block modBlocks[] = { TREATED_WOOD_CRAFTING_TABLE, SMALL_LAB_FURNACE, @@ -486,11 +499,13 @@ public class ModContent TREATED_WOOD_STOOL, TREATED_WOOD_SIDE_TABLE, TREATED_WOOD_WINDOWSILL, + TREATED_WOOD_BROAD_WINDOWSILL, TREATED_WOOD_WINDOW, STEEL_FRAMED_WINDOW, STEEL_TABLE, INSET_LIGHT_IRON, STEEL_FLOOR_GRATING, + STEEL_MESH_FENCE, TREATED_WOOD_POLE, TREATED_WOOD_POLE_HEAD, TREATED_WOOD_POLE_SUPPORT, @@ -631,6 +646,14 @@ public class ModContent private static ArrayList registeredBlocks = new ArrayList<>(); + public static ArrayList allBlocks() + { + ArrayList blocks = new ArrayList<>(); + Collections.addAll(blocks, modBlocks); + Collections.addAll(blocks, devBlocks); + return blocks; + } + public static boolean isExperimentalBlock(Block block) { return ArrayUtils.contains(devBlocks, block); } @@ -640,17 +663,13 @@ public class ModContent public static final void registerBlocks(final RegistryEvent.Register event) { - ArrayList allBlocks = new ArrayList<>(); - Collections.addAll(allBlocks, modBlocks); if(ModAuxiliaries.isModLoaded("immersiveengineering")) ModAuxiliaries.logInfo("Immersive Engineering also installed ..."); - // @todo: config not available yet, other registration control for experimental features needed. - Collections.addAll(allBlocks, devBlocks); - registeredBlocks.addAll(allBlocks); + registeredBlocks.addAll(allBlocks()); for(Block e:registeredBlocks) event.getRegistry().register(e); ModAuxiliaries.logInfo("Registered " + Integer.toString(registeredBlocks.size()) + " blocks."); } - public static final void registerItemBlocks(final RegistryEvent.Register event) + public static final void registerBlockItems(final RegistryEvent.Register event) { int n = 0; for(Block e:registeredBlocks) { diff --git a/1.14/src/main/java/wile/engineersdecor/ModEngineersDecor.java b/1.14/src/main/java/wile/engineersdecor/ModEngineersDecor.java index fd7efdc..a3f0b95 100644 --- a/1.14/src/main/java/wile/engineersdecor/ModEngineersDecor.java +++ b/1.14/src/main/java/wile/engineersdecor/ModEngineersDecor.java @@ -4,6 +4,7 @@ import wile.engineersdecor.detail.ModConfig; import wile.engineersdecor.detail.Networking; import wile.engineersdecor.blocks.*; import wile.engineersdecor.detail.OptionalRecipeCondition.Serializer; +import wile.engineersdecor.datagen.ModLootTables; import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; @@ -22,10 +23,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; -import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; +import net.minecraftforge.fml.event.lifecycle.*; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.api.distmarker.Dist; @@ -85,7 +83,7 @@ public class ModEngineersDecor @SubscribeEvent public static void onItemRegistry(final RegistryEvent.Register event) - { ModContent.registerItemBlocks(event); } + { ModContent.registerBlockItems(event); } @SubscribeEvent public static void onTileEntityRegistry(final RegistryEvent.Register> event) @@ -124,6 +122,13 @@ public class ModEngineersDecor ModEngineersDecor.logger().error("Failed to load changed config: " + e.getMessage()); } } + + @SubscribeEvent + public static void onDataGeneration(GatherDataEvent event) + { + event.getGenerator().addProvider(new ModLootTables(event.getGenerator())); + } + } // diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecor.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecor.java index af1fbf4..6a315d4 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecor.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecor.java @@ -140,16 +140,16 @@ public class BlockDecor extends Block implements IDecorBlock @Override public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest, IFluidState fluid) - { return dropBlock(state, world, pos, false); } + { return hasDynamicDropList() ? dropBlock(state, world, pos, false) : super.removedByPlayer(state, world,pos , player, willHarvest, fluid); } @Override public void onExplosionDestroy(World world, BlockPos pos, Explosion explosion) - { dropBlock(world.getBlockState(pos), world, pos, false); } + { if(hasDynamicDropList()) dropBlock(world.getBlockState(pos), world, pos, true); } @Override @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) - { return Collections.singletonList(ItemStack.EMPTY); } // { return Collections.singletonList(new ItemStack(this.asItem())); } // + { return hasDynamicDropList() ? Collections.singletonList(ItemStack.EMPTY) : super.getDrops(state, builder); } @Override public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java index cc86b26..1f534da 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorCraftingTable.java @@ -108,6 +108,10 @@ public class BlockDecorCraftingTable extends BlockDecorDirected.WaterLoggable ((BTileEntity)te).markDirty(); } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { 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 c5311bb..e5e8d25 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorDropper.java @@ -113,6 +113,10 @@ public class BlockDecorDropper extends BlockDecorDirected ((BlockDecorDropper.BTileEntity)te).markDirty(); } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java new file mode 100644 index 0000000..2e8ccb1 --- /dev/null +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFence.java @@ -0,0 +1,115 @@ +/* + * @file BlockDecorWall.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Wall blocks. + */ +package wile.engineersdecor.blocks; + +import wile.engineersdecor.detail.ModAuxiliaries; +import net.minecraft.world.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.IFluidState; +import net.minecraft.entity.EntityType; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.state.StateContainer; +import net.minecraft.block.*; +import net.minecraft.block.material.PushReaction; +import net.minecraft.block.BlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import javax.annotation.Nullable; +import java.util.List; + + +public class BlockDecorFence extends WallBlock implements IDecorBlock +{ + private final VoxelShape[] shape_voxels; + private final VoxelShape[] collision_shape_voxels; + + public BlockDecorFence(long config, Block.Properties builder) + { + super(builder); + this.shape_voxels = buildWallShapes(1.5f, 1.5f, 16f, 0f, 16f); + this.collision_shape_voxels = buildWallShapes(1.5f, 1.5f, 24f, 0f, 24f); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable IBlockReader world, List tooltip, ITooltipFlag flag) + { ModAuxiliaries.Tooltip.addInformation(stack, world, tooltip, flag, true); } + + protected VoxelShape[] buildWallShapes(float pole_width_x, float pole_width_z, float pole_height, float side_min_y, float side_max_y) + { return super.makeShapes(pole_width_x, pole_width_z, pole_height, side_min_y, side_max_y); } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext selectionContext) + { return shape_voxels[this.getIndex(state)]; } + + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext selectionContext) + { return collision_shape_voxels[this.getIndex(state)]; } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); } + + private boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) + { + final Block block = facingState.getBlock(); + if((block instanceof FenceGateBlock) || (block instanceof BlockDecorFence) || (block instanceof BlockDecorWall)) return true; + final BlockState oppositeState = world.getBlockState(facingPos.offset(side, 2)); + if(!(oppositeState.getBlock() instanceof BlockDecorFence)) return false; + return facingState.isNormalCube(world, facingPos) && hasSolidSide(facingState, world, facingPos, side); + } + + public BlockState getStateForPlacement(BlockItemUseContext context) + { + IWorldReader world = context.getWorld(); + BlockPos pos = context.getPos(); + IFluidState fs = context.getWorld().getFluidState(context.getPos()); + boolean n = attachesTo(world.getBlockState(pos.north()), world, pos.north(), Direction.SOUTH); + boolean e = attachesTo(world.getBlockState(pos.east()), world, pos.east(), Direction.WEST); + boolean s = attachesTo(world.getBlockState(pos.south()), world, pos.south(), Direction.NORTH); + boolean w = attachesTo(world.getBlockState(pos.west()), world, pos.west(), Direction.EAST); + boolean not_straight = (!n || !s || e || w) && (n || s || !e || !w); + return getDefaultState().with(UP, not_straight).with(NORTH, n).with(EAST, e).with(SOUTH, s).with(WEST, w).with(WATERLOGGED, fs.getFluid() == Fluids.WATER); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction side, BlockState facingState, IWorld world, BlockPos currentPos, BlockPos facingPos) + { + if(state.get(WATERLOGGED)) world.getPendingFluidTicks().scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + if(side == Direction.DOWN) return super.updatePostPlacement(state, side, facingState, world, currentPos, facingPos); + boolean n = (side==Direction.NORTH) ? attachesTo(facingState, world, facingPos, side) : state.get(NORTH); + boolean e = (side==Direction.EAST) ? attachesTo(facingState, world, facingPos, side) : state.get(EAST); + boolean s = (side==Direction.SOUTH) ? attachesTo(facingState, world, facingPos, side) : state.get(SOUTH); + boolean w = (side==Direction.WEST) ? attachesTo(facingState, world, facingPos, side) : state.get(WEST); + boolean not_straight = (!n || !s || e || w) && (n || s || !e || !w); + return state.with(UP, not_straight).with(NORTH, n).with(EAST, e).with(SOUTH, s).with(WEST, w); + } + + @Override + @SuppressWarnings("deprecation") + public boolean canEntitySpawn(BlockState state, IBlockReader world, BlockPos pos, EntityType entityType) + { return false; } + + @Override + public boolean canSpawnInBlock() + { return false; } + + @Override + @SuppressWarnings("deprecation") + public PushReaction getPushReaction(BlockState state) + { return PushReaction.NORMAL; } +} diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java index 1e7cddb..238cca7 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorFurnace.java @@ -121,6 +121,10 @@ public class BlockDecorFurnace extends BlockDecorDirected world.setBlockState(pos, state.with(LIT, bte.burning())); } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { final List stacks = new ArrayList(); diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHalfSlab.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHalfSlab.java index 83997c6..60d6612 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHalfSlab.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorHalfSlab.java @@ -124,6 +124,10 @@ public class BlockDecorHalfSlab extends BlockDecor implements IWaterLoggable public BlockState mirror(BlockState state, Mirror mirrorIn) { return state; } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { return new ArrayList(Collections.singletonList(new ItemStack(this.asItem(), num_slabs_contained_in_parts_[state.get(PARTS) & 0xf]))); } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java index f932c57..c84f603 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorLadder.java @@ -95,11 +95,4 @@ public class BlockDecorLadder extends LadderBlock implements IDecorBlock player.setMotionMultiplier(state, new Vec3d(0.2, (lvy>0)?(3):(6), 0.2)); } - @Override - public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest, IFluidState fluid) - { return BlockDecor.dropBlock(state, world, pos, false); } - - @Override - public void onExplosionDestroy(World world, BlockPos pos, Explosion explosion) - { BlockDecor.dropBlock(world.getBlockState(pos), world, pos, true); } } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java index a8567c4..94433ef 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorMineralSmelter.java @@ -93,6 +93,10 @@ public class BlockDecorMineralSmelter extends BlockDecorDirectedHorizontal public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) {} + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSlab.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSlab.java index d4d0728..3d15529 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSlab.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorSlab.java @@ -109,6 +109,10 @@ public class BlockDecorSlab extends BlockDecor public BlockState mirror(BlockState state, Mirror mirrorIn) { return state; } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { return new ArrayList(Collections.singletonList(new ItemStack(this.asItem(), num_slabs_contained_in_parts_[state.get(PARTS) & 0x3]))); } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorStairs.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorStairs.java index 5ddc731..7913d19 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorStairs.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorStairs.java @@ -53,11 +53,4 @@ public class BlockDecorStairs extends StairsBlock implements IDecorBlock public PushReaction getPushReaction(BlockState state) { return PushReaction.NORMAL; } - @Override - public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest, IFluidState fluid) - { return BlockDecor.dropBlock(state, world, pos, false); } - - @Override - public void onExplosionDestroy(World world, BlockPos pos, Explosion explosion) - { BlockDecor.dropBlock(world.getBlockState(pos), world, pos, true); } } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java index 57d4b0e..d462812 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWall.java @@ -8,11 +8,11 @@ */ package wile.engineersdecor.blocks; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.world.*; import wile.engineersdecor.detail.ModAuxiliaries; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.IFluidState; -import net.minecraft.world.Explosion; -import net.minecraft.world.World; import net.minecraft.entity.EntityType; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.state.StateContainer; @@ -28,8 +28,6 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; @@ -69,13 +67,26 @@ public class BlockDecorWall extends WallBlock implements IDecorBlock protected void fillStateContainer(StateContainer.Builder builder) { super.fillStateContainer(builder); builder.add(TEXTURE_VARIANT); } - private boolean attachesTo(BlockState facingState, IWorld world, BlockPos facingPos, Direction side) + private boolean attachesTo(BlockState facingState, IWorldReader world, BlockPos facingPos, Direction side) { final Block block = facingState.getBlock(); if((block instanceof FenceGateBlock) || (block instanceof WallBlock)) return true; - // return this.func_220113_a(facingState, Block.func_220056_d(facingState, world, facingPos, side), side); - // @todo: CHANGE HERE WHEN DEOBF METHOD IS AVAILABLE - return false; + final BlockState oppositeState = world.getBlockState(facingPos.offset(side, 2)); + if(!(oppositeState.getBlock() instanceof BlockDecorWall)) return false; + return facingState.isNormalCube(world, facingPos) && hasSolidSide(facingState, world, facingPos, side); + } + + public BlockState getStateForPlacement(BlockItemUseContext context) + { + IWorldReader world = context.getWorld(); + BlockPos pos = context.getPos(); + IFluidState fs = context.getWorld().getFluidState(context.getPos()); + boolean n = attachesTo(world.getBlockState(pos.north()), world, pos.north(), Direction.SOUTH); + boolean e = attachesTo(world.getBlockState(pos.east()), world, pos.east(), Direction.WEST); + boolean s = attachesTo(world.getBlockState(pos.south()), world, pos.south(), Direction.NORTH); + boolean w = attachesTo(world.getBlockState(pos.west()), world, pos.west(), Direction.EAST); + boolean not_straight = (!n || !s || e || w) && (n || s || !e || !w); + return getDefaultState().with(UP, not_straight).with(NORTH, n).with(EAST, e).with(SOUTH, s).with(WEST, w).with(WATERLOGGED, fs.getFluid() == Fluids.WATER); } @Override @@ -105,11 +116,4 @@ public class BlockDecorWall extends WallBlock implements IDecorBlock public PushReaction getPushReaction(BlockState state) { return PushReaction.NORMAL; } - @Override - public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest, IFluidState fluid) - { return BlockDecor.dropBlock(state, world, pos, false); } - - @Override - public void onExplosionDestroy(World world, BlockPos pos, Explosion explosion) - { BlockDecor.dropBlock(world.getBlockState(pos), world, pos, true); } } diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java index e5793d9..62be7ee 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/BlockDecorWasteIncinerator.java @@ -110,6 +110,10 @@ public class BlockDecorWasteIncinerator extends BlockDecor ((BlockDecorWasteIncinerator.BTileEntity)te).markDirty(); } + @Override + public boolean hasDynamicDropList() + { return true; } + @Override public List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { diff --git a/1.14/src/main/java/wile/engineersdecor/blocks/IDecorBlock.java b/1.14/src/main/java/wile/engineersdecor/blocks/IDecorBlock.java index 216a657..a84c2ce 100644 --- a/1.14/src/main/java/wile/engineersdecor/blocks/IDecorBlock.java +++ b/1.14/src/main/java/wile/engineersdecor/blocks/IDecorBlock.java @@ -16,9 +16,12 @@ import java.util.Collections; import java.util.List; -interface IDecorBlock +public interface IDecorBlock { + default boolean hasDynamicDropList() + { return false; } + default List dropList(BlockState state, World world, BlockPos pos, boolean explosion) { return Collections.singletonList((!world.isRemote()) ? (new ItemStack(state.getBlock().asItem())) : (ItemStack.EMPTY)); } diff --git a/1.14/src/main/java/wile/engineersdecor/datagen/ModLootTables.java b/1.14/src/main/java/wile/engineersdecor/datagen/ModLootTables.java new file mode 100644 index 0000000..724d294 --- /dev/null +++ b/1.14/src/main/java/wile/engineersdecor/datagen/ModLootTables.java @@ -0,0 +1,92 @@ +/* + * @file ModLootTables.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Loot table generator. + */ +package wile.engineersdecor.datagen; + +import wile.engineersdecor.ModContent; +import wile.engineersdecor.blocks.IDecorBlock; +import wile.engineersdecor.detail.ModAuxiliaries; +import net.minecraft.block.Block; +import net.minecraft.data.*; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.storage.loot.*; +import net.minecraft.world.storage.loot.functions.CopyName; +import net.minecraft.world.storage.loot.functions.CopyName.Source; +import net.minecraft.world.storage.loot.functions.CopyNbt; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class ModLootTables extends LootTableProvider +{ + private static final Logger LOGGER = LogManager.getLogger(); + private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create(); + private final DataGenerator generator; + + //-------------------------------------------------------------------------------------------------------------------- + + public ModLootTables(DataGenerator gen) + { super(gen); generator=gen; } + + //-- LootTableProvider ----------------------------------------------------------------------------------------------- + + @Override + public String getName() + { return ModAuxiliaries.MODID + " Loot Tables"; } + + @Override + public void act(DirectoryCache cache) + { save(cache, generate()); } + + //-------------------------------------------------------------------------------------------------------------------- + + private Map generate() + { + final HashMap tables = new HashMap(); + final List blocks = ModContent.allBlocks(); + blocks.forEach((block)->{ + if((!(block instanceof IDecorBlock)) || (!(((IDecorBlock)block).hasDynamicDropList()))) { + tables.put( + block.getLootTable(), + defaultBlockDrops(block.getRegistryName().getPath() + "_dlt", block) + .setParameterSet(LootParameterSets.BLOCK).build()); + } + }); + return tables; + } + + private void save(DirectoryCache cache, Map tables) + { + final Path root = generator.getOutputFolder(); + tables.forEach((rl,tab)->{ + Path fp = root.resolve("data/" + rl.getNamespace() + "/loot_tables/" + rl.getPath() + ".json"); + try { + IDataProvider.save(GSON, cache, LootTableManager.toJson(tab), fp); + } catch(Exception e) { + LOGGER.error("Failed to save loottable '"+fp+"', exception: " + e); + } + }); + } + + private LootTable.Builder defaultBlockDrops(String rl_path, Block block) + { + ItemLootEntry.Builder iltb = ItemLootEntry.builder(block); + iltb.acceptFunction(CopyName.func_215893_a(Source.BLOCK_ENTITY)); + if(block.hasTileEntity(block.getDefaultState())) { + iltb.acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY)); + } + return LootTable.builder().addLootPool(LootPool.builder().name(rl_path).rolls(ConstantRange.of(1)).addEntry(iltb)); + } + +} diff --git a/1.14/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java b/1.14/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java index 8c5155f..d5cd541 100644 --- a/1.14/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java +++ b/1.14/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java @@ -34,6 +34,8 @@ import java.util.regex.Pattern; public class ModAuxiliaries { + public static final String MODID = ModEngineersDecor.MODID; + /** * Text localisation wrapper, implicitly prepends `ModEngineersDecor.MODID` to the * translation keys. Forces formatting argument, nullable if no special formatting shall be applied.. diff --git a/1.14/src/main/resources/META-INF/mods.toml b/1.14/src/main/resources/META-INF/mods.toml index c2f67d6..748ef9e 100644 --- a/1.14/src/main/resources/META-INF/mods.toml +++ b/1.14/src/main/resources/META-INF/mods.toml @@ -10,7 +10,7 @@ version="${file.jarVersion}" displayName="Engineer's Decor" description="Adds cosmetic blocks for the engineer's workshop, factory and home." authors="wilechaote" -credits="BluSunrize, malte0811, et al., the Forge Smiths, the Modders of the World." +credits="BluSunrize, Damien Hazard, malte0811, et al., the Forge Smiths, the Modders of the World." updateJSONURL="https://raw.githubusercontent.com/stfwi/engineers-decor/develop/meta/update.json" displayURL="https://github.com/stfwi/engineers-decor/" logoFile="logo.png" diff --git a/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json b/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json new file mode 100644 index 0000000..027f6ae --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/blockstates/steel_mesh_fence.json @@ -0,0 +1,9 @@ +{ + "multipart": [ + { "when": { "up": "true" }, "apply": { "model": "engineersdecor:block/fence/steel_mesh_fence_post" } }, + { "when": { "north": "true" }, "apply": { "model": "engineersdecor:block/fence/steel_mesh_fence_side", "uvlock": true } }, + { "when": { "east": "true" }, "apply": { "model": "engineersdecor:block/fence/steel_mesh_fence_side", "y": 90, "uvlock": true } }, + { "when": { "south": "true" }, "apply": { "model": "engineersdecor:block/fence/steel_mesh_fence_side", "y": 180, "uvlock": true } }, + { "when": { "west": "true" }, "apply": { "model": "engineersdecor:block/fence/steel_mesh_fence_side", "y": 270, "uvlock": true } } + ] +} diff --git a/1.14/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json b/1.14/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json new file mode 100644 index 0000000..40eba2c --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/blockstates/treated_wood_broad_windowsill.json @@ -0,0 +1,7 @@ +{ + "forge_marker": 1, + "defaults": { "model": "engineersdecor:block/furniture/treated_wood_windowsill_broad_model" }, + "variants": { + "facing": { "north": {"y":0}, "south": {"y":180}, "west": {"y":-90}, "east": {"y":90}, "up":{}, "down":{} } + } +} 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 ab007df..8a109e3 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 @@ -73,6 +73,8 @@ "block.engineersdecor.rebar_concrete_tile_slab.help": "§6Steel reinforced concrete tile slab.§r Expensive but Creeper-proof like obsidian.", "block.engineersdecor.panzerglass_slab": "Panzer Glass Slab", "block.engineersdecor.panzerglass_slab.help": "§6Reinforced glass slab.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible.", + "block.engineersdecor.treated_wood_floor": "Treated Wood Floor", + "block.engineersdecor.treated_wood_floor.help": "§6Decorative floor tiles with texture variations.§r", "block.engineersdecor.rebar_concrete_wall": "Rebar Concrete Wall", "block.engineersdecor.rebar_concrete_wall.help": "§6Steel reinforced concrete wall.§r Expensive but Creeper-proof like obsidian.", "block.engineersdecor.concrete_wall": "Concrete Wall", @@ -131,8 +133,12 @@ "block.engineersdecor.treated_wood_window.help": "§6Wood framed triple glazed window. Well insulating.§r Does not connect to adjacent blocks like glass panes.", "block.engineersdecor.treated_wood_windowsill": "Treated Wood Window Sill", "block.engineersdecor.treated_wood_windowsill.help": "§6Simple window decoration.", + "block.engineersdecor.treated_wood_broad_windowsill": "Broad Treated Wood Window Sill", + "block.engineersdecor.treated_wood_broad_windowsill.help": "§6Simple window decoration.", "block.engineersdecor.steel_framed_window": "Steel Framed Window", "block.engineersdecor.steel_framed_window.help": "§6Steel framed triple glazed window. Well insulating. §r Does not connect to adjacent blocks like glass panes.", + "block.engineersdecor.steel_mesh_fence": "Steel Mesh Fence", + "block.engineersdecor.steel_mesh_fence.help": "§6Industrial style fence.§r\nDoes not connect do regular fences.", "block.engineersdecor.small_lab_furnace": "Small Laboratory Furnace", "block.engineersdecor.small_lab_furnace.help": "§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. Slightly hotter and better isolated than a cobblestone furnace, therefore more efficient. Two auxiliary slots e.g. for storage. Two stack internal hopper fifos for input, output, and fuel. Place an external heater into a aux slot and connect power for electrical smelting speed boost.", "block.engineersdecor.small_electrical_furnace": "Small Electrical Furnace", @@ -153,6 +159,8 @@ "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.small_tree_cutter": "Small Tree Cutter", + "block.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 (takes a long time without power).", "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\"", @@ -181,5 +189,7 @@ "block.engineersdecor.halfslab_sheetmetal_gold": "Gold Sheet Metal Slice", "block.engineersdecor.halfslab_sheetmetal_gold.help": "§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.", "block.engineersdecor.halfslab_sheetmetal_aluminum": "Aluminum Sheet Metal Slice", - "block.engineersdecor.halfslab_sheetmetal_aluminum.help": "§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices." + "block.engineersdecor.halfslab_sheetmetal_aluminum.help": "§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.", + "block.engineersdecor.testblock": "ED Test Block (do NOT use)", + "block.engineersdecor.testblock.help": "§6Uncraftable mod testing block with changing experimental functionality. DO NOT USE, may even cause a crash in the worst case!!" } \ No newline at end of file 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 c7094be..6e639fe 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 @@ -73,6 +73,7 @@ "block.engineersdecor.rebar_concrete_tile_slab.help": "§6Бетонная плитка, усиленная сталью.§r Дорогая, но взрывоустойчивая, как обсидиан.", "block.engineersdecor.panzerglass_slab": "Плита из бронированного стекла", "block.engineersdecor.panzerglass_slab.help": "§6Усиленная стеклянная плита.§r Дорогая, взрывоустойчивая. Имеет тёмно-серый оттенок, слегка видны структурные линии.", + "block.engineersdecor.treated_wood_floor": "Treated Wood Floor", "block.engineersdecor.rebar_concrete_wall": "Железобетонная стена", "block.engineersdecor.rebar_concrete_wall.help": "§6Стальная железобетонная стена.§r Дорогая, но взрывоустойчивая, как обсидиан.", "block.engineersdecor.concrete_wall": "Бетонная стена", @@ -131,8 +132,10 @@ "block.engineersdecor.treated_wood_window.help": "§6Деревянный каркас окна с тройным остеклением. Ну и шумоизоляция.", "block.engineersdecor.treated_wood_windowsill": "Обработанный деревянный подоконник", "block.engineersdecor.treated_wood_windowsill.help": "§6Простое оформление окон.", + "block.engineersdecor.treated_wood_broad_windowsill": "Broad Treated Wood Window Sill", "block.engineersdecor.steel_framed_window": "Окно со стальной рамой", "block.engineersdecor.steel_framed_window.help": "§6Стальной каркас окна с тройным остеклением. Хорошо изолирует. §r Не подключается к смежным блокам, таким как стеклянные панели.", + "block.engineersdecor.steel_mesh_fence": "Steel Mesh Fence", "block.engineersdecor.small_lab_furnace": "Компактная лабораторная печь", "block.engineersdecor.small_lab_furnace.help": "§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива сверху. Немного горячее, чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива.", "block.engineersdecor.small_electrical_furnace": "Компактная конвейерная электрическая печь", @@ -151,6 +154,7 @@ "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.small_tree_cutter": "Small Tree Cutter", "block.engineersdecor.sign_decor": "Табличка с надписью (Логотип Engineer's decor)", "block.engineersdecor.sign_decor.help": "§Это не должно быть крафтовым или видимым в JEI. Используется для творческой вкладки и скриншотов.", "block.engineersdecor.sign_hotwire": "Знак «Осторожно, под напряжением»", @@ -179,5 +183,6 @@ "block.engineersdecor.halfslab_sheetmetal_gold": "Часть золотого листового металла", "block.engineersdecor.halfslab_sheetmetal_gold.help": "§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.", "block.engineersdecor.halfslab_sheetmetal_aluminum": "Часть алюминиевого листового металла", - "block.engineersdecor.halfslab_sheetmetal_aluminum.help": "§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей." + "block.engineersdecor.halfslab_sheetmetal_aluminum.help": "§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.", + "block.engineersdecor.testblock": "ED Test Block (do NOT use)" } \ No newline at end of file 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 476a5e6..318abf5 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 @@ -63,6 +63,7 @@ "block.engineersdecor.rebar_concrete_slab": "Rebar Concrete Slab", "block.engineersdecor.rebar_concrete_tile_slab": "Rebar Concrete Tile Slab", "block.engineersdecor.panzerglass_slab": "Panzer Glass Slab", + "block.engineersdecor.treated_wood_floor": "Treated Wood Floor", "block.engineersdecor.rebar_concrete_wall": "钢筋混凝土墙", "block.engineersdecor.rebar_concrete_wall.help": "§6钢筋混凝土墙.§r 昂贵,但像黑曜石一样防苦力怕.", "block.engineersdecor.concrete_wall": "水泥墙", @@ -102,7 +103,9 @@ "block.engineersdecor.iron_inset_light": "Inset Light", "block.engineersdecor.treated_wood_window": "Treated Wood Window", "block.engineersdecor.treated_wood_windowsill": "Treated Wood Window Sill", + "block.engineersdecor.treated_wood_broad_windowsill": "Broad Treated Wood Window Sill", "block.engineersdecor.steel_framed_window": "Steel Framed Window", + "block.engineersdecor.steel_mesh_fence": "Steel Mesh Fence", "block.engineersdecor.small_lab_furnace": "Small Laboratory Furnace", "block.engineersdecor.small_electrical_furnace": "Small Electrical Furnace", "block.engineersdecor.small_waste_incinerator": "Small Waste Incinerator", @@ -113,6 +116,7 @@ "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.small_tree_cutter": "Small Tree Cutter", "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\"", @@ -127,5 +131,6 @@ "block.engineersdecor.halfslab_sheetmetal_steel": "Steel Sheet Metal Slice", "block.engineersdecor.halfslab_sheetmetal_copper": "Copper Sheet Metal Slice", "block.engineersdecor.halfslab_sheetmetal_gold": "Gold Sheet Metal Slice", - "block.engineersdecor.halfslab_sheetmetal_aluminum": "Aluminum Sheet Metal Slice" + "block.engineersdecor.halfslab_sheetmetal_aluminum": "Aluminum Sheet Metal Slice", + "block.engineersdecor.testblock": "ED Test Block (do NOT use)" } \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json new file mode 100644 index 0000000..85ee931 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_inventory.json @@ -0,0 +1,427 @@ +{ + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "wall": "engineersdecor:block/fence/steel_mesh_fence", + "particle": "engineersdecor:block/fence/steel_mesh_fence", + "top": "engineersdecor:block/fence/steel_mesh_top" + }, + "elements": [ + { + "name": "Full wall", + "from": [7, 0, 0.5], + "to": [9, 16, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7, 0, 13.5], + "to": [9, 16, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 0.125, 2.5], + "to": [8.125, 0.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 4.125, 2.5], + "to": [8.125, 4.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 5.8125], + "to": [8.05, 15.375, 6.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 8.125, 2.5], + "to": [8.125, 8.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 9.8125], + "to": [8.05, 15.375, 10.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 12.125, 2.5], + "to": [8.125, 12.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [8, 2.125, 2.5], + "to": [8.125, 2.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 3.8125], + "to": [8.05, 15.375, 4.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 6.125, 2.5], + "to": [8.125, 6.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 7.8125], + "to": [8.05, 15.375, 8.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 10.125, 2.5], + "to": [8.125, 10.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 18, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 11.8125], + "to": [8.05, 15.375, 12.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [8, 14.125, 2.5], + "to": [8.125, 14.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 1.125, 2.5], + "to": [8, 1.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 2.8125], + "to": [8.05, 15.375, 3.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 5.125, 2.5], + "to": [8, 5.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 6.8125], + "to": [8.05, 15.375, 7.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 9.125, 2.5], + "to": [8, 9.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 17, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 10.8125], + "to": [8.05, 15.375, 11.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 13.125, 2.5], + "to": [8, 13.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 21, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 15.125, 2.5], + "to": [8, 15.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.875, 3.125, 2.5], + "to": [8, 3.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 4.8125], + "to": [8.05, 15.375, 5.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 7.125, 2.5], + "to": [8, 7.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 8.8125], + "to": [8.05, 15.375, 9.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + }, + { + "name": "Full wall", + "from": [7.875, 11.125, 2.5], + "to": [8, 11.5, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 19, 14.5]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall", "cullface": "south"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#top"}, + "down": {"texture": "#wall", "cullface": "down"} + } + }, + { + "name": "Full wall", + "from": [7.925, 0, 12.8125], + "to": [8.05, 15.375, 13.1875], + "rotation": {"angle": 0, "axis": "x", "origin": [7.875, 5.8125, 7.5]}, + "faces": { + "north": {"rotation": 180, "texture": "#wall", "cullface": "down"}, + "east": {"rotation": 270, "texture": "#wall"}, + "south": {"texture": "#top"}, + "west": {"rotation": 90, "texture": "#wall"}, + "up": {"rotation": 180, "texture": "#wall", "cullface": "north"}, + "down": {"texture": "#wall", "cullface": "south"} + } + } + ], + "display": { + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [0, 90, 0], + "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/fence/steel_mesh_fence_post.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_post.json new file mode 100644 index 0000000..c4bb3ac --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_post.json @@ -0,0 +1,22 @@ +{ + "textures": { + "postside": "engineersdecor:block/fence/steel_mesh_pole_side", + "top": "engineersdecor:block/fence/steel_mesh_top", + "particle": "engineersdecor:block/fence/steel_mesh_top" + }, + "elements": [ + { + "name": "Center post", + "from": [6.5, 0, 6.5], + "to": [9.5, 16, 9.5], + "faces": { + "north": {"texture": "#postside"}, + "east": {"texture": "#postside"}, + "south": {"texture": "#postside"}, + "west": {"texture": "#postside"}, + "up": {"texture": "#top", "cullface": "up"}, + "down": {"texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json new file mode 100644 index 0000000..221e813 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/fence/steel_mesh_fence_side.json @@ -0,0 +1,176 @@ +{ + "textures": { + "wall": "engineersdecor:block/fence/steel_mesh_fence" + }, + "elements": [ + { + "from": [8, 15.625, 0.0625], + "to": [8.1875, 15.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 8, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 13.625, 0.0625], + "to": [8, 13.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, 6, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 9.625, 0.0625], + "to": [8, 9.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, 2, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 5.625, 0.0625], + "to": [8, 5.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, -2, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.8125, 1.625, 0.0625], + "to": [8, 1.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.0625, -6, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 11.625, 0.0625], + "to": [8.1875, 11.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 4, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 7.625, 0.0625], + "to": [8.1875, 7.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, 0, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [8, 3.625, 0.0625], + "to": [8.1875, 3.98, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8.25, -4, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 1.875], + "to": [8.125, 15.855, 2.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 9.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 0], + "to": [8.125, 15.855, 0.1875], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 8]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 7.8125], + "to": [8.125, 15.855, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 15.8125]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 3.875], + "to": [8.125, 15.855, 4.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 11.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + }, + { + "from": [7.875, 0, 5.875], + "to": [8.125, 15.855, 6.25], + "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 8, 13.875]}, + "faces": { + "north": {"texture": "#wall", "cullface": "north"}, + "east": {"texture": "#wall"}, + "south": {"texture": "#wall"}, + "west": {"texture": "#wall"}, + "up": {"texture": "#wall"}, + "down": {"texture": "#wall"} + } + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json b/1.14/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json new file mode 100644 index 0000000..1a1fc0a --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/block/furniture/treated_wood_windowsill_broad_model.json @@ -0,0 +1,113 @@ +{ + "parent": "block/cube", + "textures": { + "o": "engineersdecor:block/iestyle/treated_wood_rough_texture", + "particle": "engineersdecor:block/iestyle/treated_wood_rough_texture" + }, + "elements": [ + { + "from": [1.625, 8.625, 13], + "to": [3.375, 16, 14.625], + "rotation": {"angle": -45, "axis": "x", "origin": [2.5, 11, 13.125]}, + "faces": { + "north": {"uv": [12.625, 0, 14.375, 7.375], "texture": "#o"}, + "east": {"uv": [1.375, 0, 3, 7.375], "texture": "#o"}, + "south": {"uv": [1.625, 0, 3.375, 7.375], "texture": "#o"}, + "west": {"uv": [13, 0, 14.625, 7.375], "texture": "#o"} + } + }, + { + "from": [12.625, 8.625, 13], + "to": [14.375, 16, 14.625], + "rotation": {"angle": -45, "axis": "x", "origin": [13.5, 11, 13.125]}, + "faces": { + "north": {"uv": [1.625, 0, 3.375, 7.375], "texture": "#o"}, + "east": {"uv": [1.375, 0, 3, 7.375], "texture": "#o"}, + "south": {"uv": [12.625, 0, 14.375, 7.375], "texture": "#o"}, + "west": {"uv": [13, 0, 14.625, 7.375], "texture": "#o"} + } + }, + { + "from": [0, 14.5, 4], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 1.5], "texture": "#o"}, + "east": {"uv": [0, 0, 12, 1.5], "texture": "#o"}, + "south": {"uv": [0, 0, 16, 1.5], "texture": "#o"}, + "west": {"uv": [4, 0, 16, 1.5], "texture": "#o"}, + "up": {"uv": [0, 4, 16, 16], "texture": "#o"}, + "down": {"uv": [0, 0, 16, 12], "texture": "#o"} + } + }, + { + "from": [1.5, 9, 14.375], + "to": [3.5, 15, 16], + "faces": { + "north": {"uv": [12.5, 1, 14.5, 7], "texture": "#o"}, + "east": {"uv": [0, 1, 1.625, 7], "texture": "#o"}, + "south": {"uv": [1.5, 1, 3.5, 7], "texture": "#o"}, + "west": {"uv": [14.375, 1, 16, 7], "texture": "#o"}, + "down": {"uv": [1.5, 0, 3.5, 1.625], "texture": "#o"} + } + }, + { + "from": [3.5, 14, 14.375], + "to": [12.5, 15, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [10.25, 8, 8]}, + "faces": { + "north": {"uv": [3.5, 1, 12.5, 2], "texture": "#o"}, + "east": {"uv": [0, 1, 1.625, 2], "texture": "#o"}, + "south": {"uv": [3.5, 1, 12.5, 2], "texture": "#o"}, + "west": {"uv": [14.375, 1, 16, 2], "texture": "#o"}, + "down": {"uv": [3.5, 0, 12.5, 1.625], "texture": "#o"} + } + }, + { + "from": [1.5, 14, 5.5], + "to": [14.5, 15, 14.375], + "rotation": {"angle": 0, "axis": "y", "origin": [10.25, 8, 3]}, + "faces": { + "north": {"uv": [1.5, 1, 14.5, 2], "texture": "#o"}, + "east": {"uv": [1.625, 1, 10.5, 2], "texture": "#o"}, + "south": {"uv": [1.5, 1, 14.5, 2], "texture": "#o"}, + "west": {"uv": [5.5, 1, 14.375, 2], "texture": "#o"}, + "down": {"uv": [1.5, 1.625, 14.5, 10.5], "texture": "#o"} + } + }, + { + "from": [12.5, 9, 14.25], + "to": [14.5, 15, 16], + "faces": { + "north": {"uv": [1.5, 1, 3.5, 7], "texture": "#o"}, + "east": {"uv": [0, 1, 1.75, 7], "texture": "#o"}, + "south": {"uv": [12.5, 1, 14.5, 7], "texture": "#o"}, + "west": {"uv": [14.25, 1, 16, 7], "texture": "#o"}, + "down": {"uv": [12.5, 0, 14.5, 1.75], "texture": "#o"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [-8, 154, 97], + "translation": [-1.75, -1.75, -2.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-2, -59, -46], + "translation": [0, -0.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0.75, -4.5, -3], + "scale": [0.7, 0.7, 0.7] + }, + "fixed": { + "translation": [0, 0, -3.75], + "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/steel_mesh_fence.json b/1.14/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence.json new file mode 100644 index 0000000..d542133 --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/item/steel_mesh_fence.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/fence/steel_mesh_fence_inventory" } \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/models/item/treated_wood_broad_windowsill.json b/1.14/src/main/resources/assets/engineersdecor/models/item/treated_wood_broad_windowsill.json new file mode 100644 index 0000000..fc14a8b --- /dev/null +++ b/1.14/src/main/resources/assets/engineersdecor/models/item/treated_wood_broad_windowsill.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/furniture/treated_wood_windowsill_broad_model" } \ No newline at end of file diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_fence.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_fence.png new file mode 100644 index 0000000..4d40a2d Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_fence.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_pole_side.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_pole_side.png new file mode 100644 index 0000000..773c4b9 Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_pole_side.png differ diff --git a/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_top.png b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_top.png new file mode 100644 index 0000000..8a14fa4 Binary files /dev/null and b/1.14/src/main/resources/assets/engineersdecor/textures/block/fence/steel_mesh_top.png differ diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_block.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_block.json new file mode 100644 index 0000000..b56fa62 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "clinker_brick_block_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:clinker_brick_block" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_block.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_block.json new file mode 100644 index 0000000..8d36204 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "clinker_brick_stained_block_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:clinker_brick_stained_block" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_stairs.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_stairs.json new file mode 100644 index 0000000..214393e --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stained_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "clinker_brick_stained_stairs_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:clinker_brick_stained_stairs" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stairs.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stairs.json new file mode 100644 index 0000000..e2eb757 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "clinker_brick_stairs_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:clinker_brick_stairs" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_wall.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_wall.json new file mode 100644 index 0000000..f916bd0 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/clinker_brick_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "clinker_brick_wall_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:clinker_brick_wall" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/concrete_wall.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/concrete_wall.json new file mode 100644 index 0000000..2741909 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/concrete_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "concrete_wall_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:concrete_wall" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/iron_inset_light.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/iron_inset_light.json new file mode 100644 index 0000000..5737422 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/iron_inset_light.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "iron_inset_light_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:iron_inset_light" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_ladder.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_ladder.json new file mode 100644 index 0000000..ed0c14c --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_ladder.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "metal_rung_ladder_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:metal_rung_ladder" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_steps.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_steps.json new file mode 100644 index 0000000..3a33780 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/metal_rung_steps.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "metal_rung_steps_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:metal_rung_steps" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/panzerglass_block.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/panzerglass_block.json new file mode 100644 index 0000000..799655b --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/panzerglass_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "panzerglass_block_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:panzerglass_block" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/passive_fluid_accumulator.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/passive_fluid_accumulator.json new file mode 100644 index 0000000..41cc2f0 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/passive_fluid_accumulator.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "passive_fluid_accumulator_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [] + } + ], + "name": "engineersdecor:passive_fluid_accumulator" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete.json new file mode 100644 index 0000000..5732c7d --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "rebar_concrete_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:rebar_concrete" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_stairs.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_stairs.json new file mode 100644 index 0000000..556730a --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "rebar_concrete_stairs_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:rebar_concrete_stairs" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile.json new file mode 100644 index 0000000..db50010 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "rebar_concrete_tile_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:rebar_concrete_tile" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile_stairs.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile_stairs.json new file mode 100644 index 0000000..5ee6765 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_tile_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "rebar_concrete_tile_stairs_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:rebar_concrete_tile_stairs" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_wall.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_wall.json new file mode 100644 index 0000000..06d12f5 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/rebar_concrete_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "rebar_concrete_wall_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:rebar_concrete_wall" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_danger.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_danger.json new file mode 100644 index 0000000..864d962 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_danger.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_danger_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_danger" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_decor.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_decor.json new file mode 100644 index 0000000..f2c34b9 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_decor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_decor_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_decor" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_defense.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_defense.json new file mode 100644 index 0000000..29ce9f1 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_defense.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_defense_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_defense" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_exit.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_exit.json new file mode 100644 index 0000000..601bf78 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_exit.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_exit_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_exit" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_factoryarea.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_factoryarea.json new file mode 100644 index 0000000..60148f4 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_factoryarea.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_factoryarea_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_factoryarea" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_hotwire.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_hotwire.json new file mode 100644 index 0000000..1358a49 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/sign_hotwire.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "sign_hotwire_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:sign_hotwire" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_block.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_block.json new file mode 100644 index 0000000..8b1d3b3 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "slag_brick_block_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:slag_brick_block" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_stairs.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_stairs.json new file mode 100644 index 0000000..1a2693c --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "slag_brick_stairs_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:slag_brick_stairs" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_wall.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_wall.json new file mode 100644 index 0000000..20963b4 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/slag_brick_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "slag_brick_wall_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:slag_brick_wall" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/small_solar_panel.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/small_solar_panel.json new file mode 100644 index 0000000..d2c69c7 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/small_solar_panel.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "small_solar_panel_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [] + } + ], + "name": "engineersdecor:small_solar_panel" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_double_t_support.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_double_t_support.json new file mode 100644 index 0000000..08aa309 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_double_t_support.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_double_t_support_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_double_t_support" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_floor_grating.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_floor_grating.json new file mode 100644 index 0000000..a1443be --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_floor_grating.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_floor_grating_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_floor_grating" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_framed_window.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_framed_window.json new file mode 100644 index 0000000..9f35905 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_framed_window.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_framed_window_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_framed_window" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence.json new file mode 100644 index 0000000..8cc12f4 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_mesh_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_mesh_fence_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_mesh_fence" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_table.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_table.json new file mode 100644 index 0000000..9388483 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/steel_table.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "steel_table_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:steel_table" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve.json new file mode 100644 index 0000000..4fdf31b --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "straight_pipe_valve_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [] + } + ], + "name": "engineersdecor:straight_pipe_valve" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone.json new file mode 100644 index 0000000..ab54cbc --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "straight_pipe_valve_redstone_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [] + } + ], + "name": "engineersdecor:straight_pipe_valve_redstone" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone_analog.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone_analog.json new file mode 100644 index 0000000..6203000 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/straight_pipe_valve_redstone_analog.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "straight_pipe_valve_redstone_analog_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [] + } + ], + "name": "engineersdecor:straight_pipe_valve_redstone_analog" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole.json new file mode 100644 index 0000000..f9f5791 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "thick_steel_pole_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:thick_steel_pole" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole_head.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole_head.json new file mode 100644 index 0000000..edb7358 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thick_steel_pole_head.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "thick_steel_pole_head_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:thick_steel_pole_head" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole.json new file mode 100644 index 0000000..7d1556d --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "thin_steel_pole_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:thin_steel_pole" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole_head.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole_head.json new file mode 100644 index 0000000..4f2a317 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/thin_steel_pole_head.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "thin_steel_pole_head_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:thin_steel_pole_head" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_broad_windowsill.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_broad_windowsill.json new file mode 100644 index 0000000..7fe56a8 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_broad_windowsill.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_broad_windowsill_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_broad_windowsill" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_ladder.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_ladder.json new file mode 100644 index 0000000..815d18b --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_ladder.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_ladder_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_ladder" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole.json new file mode 100644 index 0000000..c692e89 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_pole_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_pole" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_head.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_head.json new file mode 100644 index 0000000..49ccfdf --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_head.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_pole_head_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_pole_head" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_support.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_support.json new file mode 100644 index 0000000..75896f2 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_pole_support.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_pole_support_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_pole_support" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_side_table.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_side_table.json new file mode 100644 index 0000000..519ac4e --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_side_table.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_side_table_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_side_table" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_stool.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_stool.json new file mode 100644 index 0000000..1d3ade2 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_stool.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_stool_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_stool" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_table.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_table.json new file mode 100644 index 0000000..2e3d4c3 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_table.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_table_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_table" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_window.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_window.json new file mode 100644 index 0000000..d4b723c --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_window.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_window_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_window" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_windowsill.json b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_windowsill.json new file mode 100644 index 0000000..c7370d8 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/loot_tables/blocks/treated_wood_windowsill.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "treated_wood_windowsill_dlt", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + } + ], + "name": "engineersdecor:treated_wood_windowsill" + } + ] + } + ] +} \ No newline at end of file diff --git a/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_recipe.json b/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_recipe.json new file mode 100644 index 0000000..8514eb5 --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/recipes/independent/steel_mesh_fence_recipe.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "engineersdecor:optional", + "result": "engineersdecor:steel_mesh_fence", + "required": ["engineersdecor:thin_steel_pole"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "PNP", + "PNP" + ], + "key": { + "P": { + "item": "engineersdecor:thin_steel_pole" + }, + "N": { + "item": "minecraft:iron_nugget" + } + }, + "result": { + "item": "engineersdecor:steel_mesh_fence", + "count": 6 + } +} diff --git a/1.14/src/main/resources/data/engineersdecor/recipes/independent/treated_wood_broad_windowsill.json b/1.14/src/main/resources/data/engineersdecor/recipes/independent/treated_wood_broad_windowsill.json new file mode 100644 index 0000000..efeaacb --- /dev/null +++ b/1.14/src/main/resources/data/engineersdecor/recipes/independent/treated_wood_broad_windowsill.json @@ -0,0 +1,20 @@ +{ + "conditions": [ + { + "type": "engineersdecor:optional", + "result": "engineersdecor:treated_wood_broad_windowsill", + "required": ["engineersdecor:treated_wood_windowsill"] + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "WW" + ], + "key": { + "W": { "item": "engineersdecor:treated_wood_windowsill" } + }, + "result": { + "item": "engineersdecor:treated_wood_broad_windowsill", + "count": 2 + } +} diff --git a/1.14/tasks.js b/1.14/tasks.js index c8001a6..4a3e677 100644 --- a/1.14/tasks.js +++ b/1.14/tasks.js @@ -13,9 +13,8 @@ tasks["sync-languages"] = function() { liblang.sync_languages(); }; -tasks["assets"] = function() { - libtask114.stdtasks["assets"](); -}; +tasks["assets"] = libtask114.stdtasks["assets"]; +tasks["datagen"] = libtask114.stdtasks["datagen"]; tasks["create-slab-assets"] = function() { const libassets = include("../meta/lib/libassets.js")(constants); diff --git a/credits.md b/credits.md index 66bd702..f12835e 100644 --- a/credits.md +++ b/credits.md @@ -2,7 +2,7 @@ As addon for Immersive Engineering, this mod is heavily inspired by the designs and the code base of IE, and I would like to give special credits to the Software Engineers of Immersive Engineering -(BluSunrize, malte0811, et al). Please see: +(BluSunrize, malte0811, Damien Hazard, et al). Please see: - https://github.com/BluSunrize/ImmersiveEngineering/ - https://github.com/BluSunrize/ImmersiveEngineering/graphs/contributors diff --git a/documentation/engineers-decor-mesh-fence.png b/documentation/engineers-decor-mesh-fence.png new file mode 100644 index 0000000..b35b744 Binary files /dev/null and b/documentation/engineers-decor-mesh-fence.png differ diff --git a/documentation/readme.md b/documentation/readme.md index 06d746e..f1100c3 100644 --- a/documentation/readme.md +++ b/documentation/readme.md @@ -24,3 +24,4 @@ ![](engineers-decor-small-mineral-smelter-vanilla-automated.png) ![](engineers-decor-small-solar-panel.png) ![](engineers-decor-small-tree-cutter.png) +![](engineers-decor-mesh-fence.png) diff --git a/meta/lib/libtask.1.14.js b/meta/lib/libtask.1.14.js index 1393b69..b9fe43e 100644 --- a/meta/lib/libtask.1.14.js +++ b/meta/lib/libtask.1.14.js @@ -342,6 +342,31 @@ me.tasks.map_regnames_lang_file_keys(); }; + me.stdtasks["datagen"] = function() { + sys.exec("gradlew.bat", ["--no-daemon", "runData"]); + // double check and really only copy json files. + const dst = fs.realpath("src/main/resources/data/" + constants.modid); + const src = fs.realpath("src/generated/resources/data/" + constants.modid); + if(!dst || !src) throw "Source or destination directory not found."; + const src_files = fs.find(src, "*.json"); + const upath = function(s) { return s.replace(/[\\]/g,"/").replace(/^[\/]/,""); } // for correct display on win32 + if(src_files===undefined) return 1; + for(var i in src_files) { + const srcfile = src_files[i]; + const dstfile = srcfile.replace(src, dst); + const dstdir = fs.dirname(dstfile); + if(!fs.isdir(dstdir)) fs.mkdir(dstdir); + if(!fs.isfile(dstfile)) { + print("[copy] ", upath(srcfile.replace(src,""))); + fs.copy(srcfile, dstdir); + } else if(sys.hash.sha1(srcfile,true) != sys.hash.sha1(dstfile,true)) { + print("[edit] ", upath(srcfile.replace(src,""))); + fs.unlink(dstfile); + fs.copy(srcfile, dstdir); + } + } + }; + Object.freeze(me); Object.freeze(me.tasks); Object.freeze(me.parsing); diff --git a/meta/update.json b/meta/update.json index ddfa7fb..4383e8c 100644 --- a/meta/update.json +++ b/meta/update.json @@ -2,12 +2,13 @@ "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "promos": { "1.12.2-recommended": "1.0.12", - "1.12.2-latest": "1.0.13-b1", + "1.12.2-latest": "1.0.13-b2", "1.14.4-recommended": "", - "1.14.4-latest": "1.0.12-b3" + "1.14.4-latest": "1.0.13-b2" }, "1.12.2": { - "1.0.13-b1": "[A] Small Solar Panel added.\n[A] Small Tree Cutter added.", + "1.0.13-b2": "[A] Added Steel Mesh Fence.\n[A] Added Broad Window Sill.\n[A] Small Tree Cutter can chop Dynamic Trees, chops at tree trunk radius 7 or higher.", + "1.0.13-b1": "[A] Added Small Solar Panel.\n[A] Added Small Tree Cutter.", "1.0.12": "[R] Release based on v1.0.12-b2. Release-to-release changes: * Crafting table: Recipe collision resolver added. Items are rendered on the table surface. * Small Mineral Smelter released. * Factory Dropper: Continuous dropping mode added. * Block opacity fixes, window model fixes. * Lang file updates.", "1.0.12-b2": "[A] Crafting Table: Added recipe collision resolver, also applies to crafting history refabrication.\n[A] Crafting Table: Added rendering of placed items on the top surface of the table.\n[M] Lang files updated.", "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).", @@ -64,6 +65,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.13-b2": "[A] Added Steel Mesh Fence.\n[A] Added Broad Window Sill.", "1.0.12-b3": "[U] Updated to Forge 1.14.4-28.1.10/20190719-1.14.3.\n[A] Crafting Table: Added recipe collision resolver, also applies to crafting history refabrication.\n[A] Crafting Table: Added rendering of placed items on the top surface of the table.\n[A] Waterlogging of non-full-blocks added.", "1.0.12-b2": "[U] Updated to Forge 1.14.4-28.0.105/20190719-1.14.3.\n[A] Small Solar Panel added.\n[M] Items fall through the Steel Floor Grating like in 1.12.2 version.\n[M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, thx Aristine for the CR).", "1.0.12-b1": "[U] Updated to Forge 1.14.4-28.0.93/20190719-1.14.3.\n[M] Logo location fixed.",