Steel mesh fence added, Broad Windowsill added, Tree Cutter can chop DyncmicTrees (issue #52).

This commit is contained in:
stfwi 2019-10-05 14:13:08 +02:00
parent 1eeaa1229e
commit 1b0a84ae7f
119 changed files with 3399 additions and 133 deletions

View file

@ -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

View file

@ -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

View file

@ -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"
}
}

View file

@ -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,

View file

@ -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<Block> registeredBlocks = new ArrayList<>();
public static ArrayList<Block> allBlocks()
{
ArrayList<Block> 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<Block> event)
{
ArrayList<Block> 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<Item> event)
public static final void registerBlockItems(final RegistryEvent.Register<Item> event)
{
int n = 0;
for(Block e:registeredBlocks) {

View file

@ -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<Item> event)
{ ModContent.registerItemBlocks(event); }
{ ModContent.registerBlockItems(event); }
@SubscribeEvent
public static void onTileEntityRegistry(final RegistryEvent.Register<TileEntityType<?>> 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()));
}
}
//

View file

@ -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<ItemStack> 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)

View file

@ -108,6 +108,10 @@ public class BlockDecorCraftingTable extends BlockDecorDirected.WaterLoggable
((BTileEntity)te).markDirty();
}
@Override
public boolean hasDynamicDropList()
{ return true; }
@Override
public List<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{

View file

@ -113,6 +113,10 @@ public class BlockDecorDropper extends BlockDecorDirected
((BlockDecorDropper.BTileEntity)te).markDirty();
}
@Override
public boolean hasDynamicDropList()
{ return true; }
@Override
public List<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{

View file

@ -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<ITextComponent> 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<Block, BlockState> 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; }
}

View file

@ -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<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion) {
final List<ItemStack> stacks = new ArrayList<ItemStack>();

View file

@ -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<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{ return new ArrayList<ItemStack>(Collections.singletonList(new ItemStack(this.asItem(), num_slabs_contained_in_parts_[state.get(PARTS) & 0xf]))); }

View file

@ -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); }
}

View file

@ -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<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{

View file

@ -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<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{ return new ArrayList<ItemStack>(Collections.singletonList(new ItemStack(this.asItem(), num_slabs_contained_in_parts_[state.get(PARTS) & 0x3]))); }

View file

@ -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); }
}

View file

@ -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<Block, BlockState> 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); }
}

View file

@ -110,6 +110,10 @@ public class BlockDecorWasteIncinerator extends BlockDecor
((BlockDecorWasteIncinerator.BTileEntity)te).markDirty();
}
@Override
public boolean hasDynamicDropList()
{ return true; }
@Override
public List<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{

View file

@ -16,9 +16,12 @@ import java.util.Collections;
import java.util.List;
interface IDecorBlock
public interface IDecorBlock
{
default boolean hasDynamicDropList()
{ return false; }
default List<ItemStack> dropList(BlockState state, World world, BlockPos pos, boolean explosion)
{ return Collections.singletonList((!world.isRemote()) ? (new ItemStack(state.getBlock().asItem())) : (ItemStack.EMPTY)); }

View file

@ -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<ResourceLocation, LootTable> generate()
{
final HashMap<ResourceLocation, LootTable> tables = new HashMap<ResourceLocation, LootTable>();
final List<Block> 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<ResourceLocation, LootTable> 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));
}
}

View file

@ -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..

View file

@ -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"

View file

@ -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 } }
]
}

View file

@ -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":{} }
}
}

View file

@ -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!!"
}

View file

@ -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)"
}

View file

@ -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)"
}

View file

@ -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]
}
}
}

View file

@ -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"}
}
}
]
}

View file

@ -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"}
}
}
]
}

View file

@ -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]
}
}
}

View file

@ -0,0 +1 @@
{ "parent": "engineersdecor:block/fence/steel_mesh_fence_inventory" }

View file

@ -0,0 +1 @@
{ "parent": "engineersdecor:block/furniture/treated_wood_windowsill_broad_model" }

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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"
}
]
}
]
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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);