Backport updates

This commit is contained in:
zontreck 2024-09-14 15:16:50 -07:00
parent 6cec3dcbbc
commit 728b2467a3
766 changed files with 32570 additions and 268 deletions

View file

@ -5,27 +5,49 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.antiexplode.CreeperHealQueue;
import dev.zontreck.essentials.blocks.ModBlocks;
import dev.zontreck.essentials.client.Keybindings;
import dev.zontreck.essentials.client.renderer.TimeBoostEntityRenderer;
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
import dev.zontreck.essentials.configs.client.AEClientConfig;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.essentials.entities.ModEntities;
import dev.zontreck.essentials.events.MainEventHandlers;
import dev.zontreck.essentials.events.TeleportEvent;
import dev.zontreck.essentials.gui.HeartsRenderer;
import dev.zontreck.essentials.client.renderer.HeartsRenderer;
import dev.zontreck.essentials.imc.Events;
import dev.zontreck.essentials.items.CreativeModeTabs;
import dev.zontreck.essentials.items.ModItems;
import dev.zontreck.essentials.networking.ModMessages;
import dev.zontreck.essentials.rtp.RTPCaches;
import dev.zontreck.essentials.rtp.RTPCachesEventHandlers;
import dev.zontreck.essentials.util.BackPositionCaches;
import dev.zontreck.essentials.util.CommandCooldowns;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueueRegistry;
import dev.zontreck.libzontreck.memory.world.SavedBlock;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.util.SNbtIo;
import dev.zontreck.libzontreck.util.ServerUtilities;
import dev.zontreck.libzontreck.vectors.Vector3i;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.client.renderer.entity.EntityRenderers;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.level.ExplosionEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import org.slf4j.Logger;
@ -53,6 +75,7 @@ public class AriasEssentials {
public static boolean ALIVE;
public static Map<UUID, Homes> player_homes = new HashMap<>();
public static boolean DEBUG = true;
public static ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
@ -60,10 +83,11 @@ public class AriasEssentials {
{
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
bus.addListener(this::setup);
DelayedExecutorService.setup();
LOGGER.info("/!\\ Loading Aria's Essentials Configuration Files /!\\");
AEServerConfig.loadFromFile();
AEClientConfig.loadFromFile();
LOGGER.info("/!\\ DONE LOADING AECONFIG /!\\");
@ -75,8 +99,16 @@ public class AriasEssentials {
MinecraftForge.EVENT_BUS.register(new RTPCachesEventHandlers());
MinecraftForge.EVENT_BUS.register(new CommandCooldowns());
MinecraftForge.EVENT_BUS.register(RTPCachesEventHandlers.class);
MinecraftForge.EVENT_BUS.register(Events.class);
MinecraftForge.EVENT_BUS.register(MainEventHandlers.class);
ModItems.register(bus);
ModBlocks.register(bus);
ModEntities.register(bus);
CreativeModeTabs.register(bus);
}
@SubscribeEvent
public void onTeleport(TeleportEvent event)
{
@ -99,8 +131,9 @@ public class AriasEssentials {
public void onServerStart(final ServerStartedEvent ev)
{
ALIVE=true;
// Print out the server config
LOGGER.debug(NbtUtils.structureToSnbt(AEServerConfig.getInstance().serialize()));
}
@ -109,9 +142,6 @@ public class AriasEssentials {
{
ALIVE=false;
LOGGER.info("Tearing down Aria's Essentials functions and tasks");
DelayedExecutorService.stop();
DelayedExecutorService.getInstance().EXECUTORS.clear();
RTPCaches.Locations.clear();
}
@ -141,9 +171,17 @@ public class AriasEssentials {
LOGGER.info("Client setup");
EntityRenderers.register(ModEntities.TIAB_ENTITY.get(), TimeBoostEntityRenderer::new);
MinecraftForge.EVENT_BUS.register(new HeartsRenderer());
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onRegisterKeyBinds(RegisterKeyMappingsEvent ev)
{
ev.register(Keybindings.AUTOWALK);
}
}
}

View file

@ -0,0 +1,43 @@
package dev.zontreck.essentials.antiexplode;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.libzontreck.memory.world.*;
import net.minecraft.world.level.block.Blocks;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class CreeperHealQueue extends BlockRestoreQueue
{
@Override
public String getRestoreQueueName() {
return "creeperheal";
}
@Override
public boolean usesDatabase() {
return true;
}
@Override
public void databaseUpdate(PrimitiveBlock block) {
if(Blocks.AIR == block.blockType) return; // Do not cache air
super.databaseUpdate(block);
notifyDirtyQueue(true);
}
@Override
public void notifyDirtyQueue(boolean b) {
// Queue was modified.
// Restart the timer for repairing blocks if necessary
}
@Override
public boolean sorted() {
return true;
}
}

View file

@ -0,0 +1,330 @@
package dev.zontreck.essentials.blocks;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.blocks.logicgates.TFlipFlopBlock;
import dev.zontreck.essentials.items.CreativeModeTabs;
import dev.zontreck.libzontreck.blocks.BlockCustomVoxels;
import dev.zontreck.libzontreck.blocks.PartialTransparentBlock;
import dev.zontreck.libzontreck.blocks.PartialTransparentSlabBlock;
import dev.zontreck.libzontreck.blocks.RotatableBlockCustomVoxels;
import dev.zontreck.libzontreck.edlibmc.Auxiliaries;
import dev.zontreck.libzontreck.edlibmc.StandardBlocks;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockSetType;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.shapes.BooleanOp;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.stream.Stream;
public class ModBlocks {
private static BlockBehaviour.StatePredicate shulkerState = (p_152653_, p_152654_, p_152655_) -> {
BlockEntity blockentity = p_152654_.getBlockEntity(p_152655_);
if (!(blockentity instanceof ShulkerBoxBlockEntity)) {
return true;
} else {
ShulkerBoxBlockEntity shulkerboxblockentity = (ShulkerBoxBlockEntity)blockentity;
return shulkerboxblockentity.isClosed();
}
};
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, AriasEssentials.MODID);
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, AriasEssentials.MODID);
private static boolean never(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos) {
return false;
}
private static boolean always(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos) {
return true;
}
private static boolean neverSpawn(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, EntityType<?> entityType) {
return false;
}
public static void register(IEventBus bus){
BLOCKS.register(bus);
ITEMS.register(bus);
AriasEssentials.LOGGER.info("Registering all blocks...");
}
private static BlockBehaviour.Properties standardBehavior()
{
return BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(7F).destroyTime(6).isValidSpawn(ModBlocks::neverSpawn);
}
private static BlockBehaviour.Properties gratingBlock()
{
return standardBehavior()
.noOcclusion()
.strength(0.5f, 2000f)
.isViewBlocking(ModBlocks::never);
}
private static BlockBehaviour.Properties stoneLikeBehavior()
{
return BlockBehaviour.Properties.copy(Blocks.COBBLESTONE).isValidSpawn(ModBlocks::neverSpawn);
}
private static BlockBehaviour.Properties explosionResistance()
{
return standardBehavior().explosionResistance(1200);
}
private static BlockBehaviour.Properties noViewBlocking()
{
return standardBehavior().noOcclusion().isViewBlocking(ModBlocks::never);
}
private static BlockBehaviour.Properties fullBright()
{
return standardBehavior().lightLevel((X)->{
return 15;
}).noOcclusion();
}
private static BlockBehaviour.Properties standard = standardBehavior();
private static BlockBehaviour.Properties explosionResistance = explosionResistance();
private static BlockBehaviour.Properties noViewBlocking = noViewBlocking();
private static BlockBehaviour.Properties stone = stoneLikeBehavior();
private static BlockBehaviour.Properties gratingBlock = gratingBlock();
private static BlockBehaviour.Properties poolLightClean = BlockBehaviour.Properties.copy(Blocks.GLASS).lightLevel((X) -> 15);
private static BlockBehaviour.Properties poolLightDirty = BlockBehaviour.Properties.copy(Blocks.GLASS).lightLevel((X) -> 12);
private static BlockBehaviour.Properties poolLightFilthy = BlockBehaviour.Properties.copy(Blocks.GLASS).lightLevel((X) -> 4);
public static RegistryObject<Block> registerWithItem(RegistryObject<Block> blk, Item.Properties props)
{
CreativeModeTabs.addToAETab(ITEMS.register(blk.getId().getPath(), ()->new BlockItem(blk.get(), props)));
return blk;
}
/*
ENGINEERS DECOR BLOCKS
*/
public static final RegistryObject<Block> CLINKER_BRICK_BLOCK = registerWithItem(BLOCKS.register("clinker_brick_block", ()->new StandardBlocks.BaseBlock(
StandardBlocks.CFG_DEFAULT,
BlockBehaviour.Properties.of().strength(0.5f, 7f).sound(SoundType.STONE)
)), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_RECESSED = registerWithItem(BLOCKS.register("clinker_brick_recessed", ()->new StandardBlocks.HorizontalWaterLoggable(
StandardBlocks.CFG_CUTOUT|StandardBlocks.CFG_HORIZIONTAL|StandardBlocks.CFG_LOOK_PLACEMENT,
BlockBehaviour.Properties.of().strength(0.5f, 7f).sound(SoundType.STONE),
new AABB[] {
Auxiliaries.getPixeledAABB( 3,0, 0, 13,16, 1),
Auxiliaries.getPixeledAABB( 0,0, 1, 16,16,11),
Auxiliaries.getPixeledAABB( 4,0,11, 12,16,13)
}
)), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_VERTICALLY_SLIT = registerWithItem(BLOCKS.register("clinker_brick_vertically_slit", ()->new StandardBlocks.HorizontalWaterLoggable(
StandardBlocks.CFG_CUTOUT|StandardBlocks.CFG_HORIZIONTAL|StandardBlocks.CFG_LOOK_PLACEMENT,
BlockBehaviour.Properties.of().strength(0.5f, 7f).sound(SoundType.STONE),
new AABB[] {
Auxiliaries.getPixeledAABB( 3,0, 0, 13,16, 1),
Auxiliaries.getPixeledAABB( 3,0,15, 13,16,16),
Auxiliaries.getPixeledAABB( 0,0, 1, 16,16,15)
}
)), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_SLAB = registerWithItem(BLOCKS.register("clinker_brick_slab", ()->new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_SLAB))), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_STAIRS = registerWithItem(BLOCKS.register("clinker_brick_stairs", ()->new StairBlock(CLINKER_BRICK_BLOCK.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.STONE_STAIRS))), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_WALL = registerWithItem(BLOCKS.register("clinker_brick_wall", ()->new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICK_WALL))), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_STAINED_BLOCK = registerWithItem(BLOCKS.register("clinker_brick_stained_block", ()->new Block(BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_STAINED_SLAB = registerWithItem(BLOCKS.register("clinker_brick_stained_slab", ()-> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
public static final RegistryObject<Block> CLINKER_BRICK_STAINED_STAIRS = registerWithItem(BLOCKS.register("clinker_brick_stained_stairs", ()-> new StairBlock(CLINKER_BRICK_STAINED_BLOCK.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
/*public static final RegistryObject<Block> CLINKER_BRICK_VERTICAL_SLAB_STRUCTURED = registerWithItem(BLOCKS.register("clinker_brick_vertical_slab_structured", () -> new StandardBlocks.HorizontalWaterLoggable(
StandardBlocks.CFG_CUTOUT | StandardBlocks.CFG_HORIZIONTAL | StandardBlocks.CFG_LOOK_PLACEMENT,
BlockBehaviour.Properties.of().strength(0.5f, 7f).sound(SoundType.STONE),
new AABB[]{
Auxiliaries.getPixeledAABB(0, 0, 0, 16, 16, 8),
}
)), new Item.Properties());*/
public static final RegistryObject<Block> SLAG_BRICK_BLOCK = registerWithItem(BLOCKS.register("slag_brick_block", ()-> new Block(BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
public static final RegistryObject<Block> SLAG_BRICK_SLAB = registerWithItem(BLOCKS.register("slag_brick_slab", ()-> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
public static final RegistryObject<Block> SLAG_BRICK_STAIRS = registerWithItem(BLOCKS.register("slag_brick_stairs", ()-> new StairBlock(SLAG_BRICK_BLOCK.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.STONE))), new Item.Properties());
public static final RegistryObject<Block> SLAG_BRICK_WALL = registerWithItem(BLOCKS.register("slag_brick_wall", ()-> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICK_WALL))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_BLOCK = registerWithItem(BLOCKS.register("rebar_concrete", ()-> new Block(BlockBehaviour.Properties.copy(Blocks.STONE).isValidSpawn(ModBlocks::neverSpawn).strength(1f, 2000f))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_SLAB = registerWithItem(BLOCKS.register("rebar_concrete_slab", ()-> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE).strength(1f, 2000f).isValidSpawn(ModBlocks::neverSpawn))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_STAIRS = registerWithItem(BLOCKS.register("rebar_concrete_stairs", ()-> new StairBlock(ModBlocks.REBAR_CONCRETE_BLOCK.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.STONE).strength(1f, 2000f).isValidSpawn(ModBlocks::neverSpawn))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_WALL = registerWithItem(BLOCKS.register("rebar_concrete_wall", ()-> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE).strength(1f, 2000f).isValidSpawn(ModBlocks::neverSpawn))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_TILE_BLOCK = registerWithItem(BLOCKS.register("rebar_concrete_tile", ()-> new Block(BlockBehaviour.Properties.copy(Blocks.STONE).isValidSpawn(ModBlocks::neverSpawn).strength(1f, 2000f))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_TILE_SLAB = registerWithItem(BLOCKS.register("rebar_concrete_tile_slab", ()-> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE).strength(1f, 2000f).isValidSpawn(ModBlocks::neverSpawn))), new Item.Properties());
public static final RegistryObject<Block> REBAR_CONCRETE_TILE_STAIRS = registerWithItem(BLOCKS.register("rebar_concrete_tile_stairs", ()-> new StairBlock(ModBlocks.REBAR_CONCRETE_BLOCK.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.STONE).strength(1f, 2000f).isValidSpawn(ModBlocks::neverSpawn))), new Item.Properties());
/*public static final RegistryObject<Block> REBAR_CONCRETE_HALFSLAB = registerWithItem(BLOCKS.register("halfslab_rebar_concrete", () -> new SlabSliceBlock(
StandardBlocks.CFG_CUTOUT,
BlockBehaviour.Properties.of().strength(1.0f, 2000f).sound(SoundType.STONE).isValidSpawn(ModBlocks::neverSpawn)
)), new Item.Properties());*/
public static final RegistryObject<Block> PANZER_GLASS_BLOCK = registerWithItem(BLOCKS.register("panzerglass_block", ()-> new PartialTransparentBlock(BlockBehaviour.Properties.of().noOcclusion().strength(0.5f, 2000f).isValidSpawn(ModBlocks::neverSpawn).sound(SoundType.METAL))), new Item.Properties());
public static final RegistryObject<Block> PANZER_GLASS_SLAB = registerWithItem(BLOCKS.register("panzerglass_slab", ()-> new PartialTransparentSlabBlock(BlockBehaviour.Properties.of().noOcclusion().strength(0.5f, 2000f).isValidSpawn(ModBlocks::neverSpawn).sound(SoundType.METAL))), new Item.Properties());
public static final RegistryObject<Block> OLD_INDUSTRIAL_WOOD_PLANKS = registerWithItem(BLOCKS.register("old_industrial_wood_planks", ()-> new Block(BlockBehaviour.Properties.copy(Blocks.OAK_PLANKS).strength(0.5f, 6f).sound(SoundType.WOOD))), new Item.Properties());
public static final RegistryObject<Block> OLD_INDUSTRIAL_WOOD_SLAB = registerWithItem(BLOCKS.register("old_industrial_wood_slab", ()-> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.OAK_PLANKS).strength(0.5f, 6f).sound(SoundType.WOOD))), new Item.Properties());
public static final RegistryObject<Block> OLD_INDUSTRIAL_WOOD_STAIRS = registerWithItem(BLOCKS.register("old_industrial_wood_stairs", ()-> new StairBlock(ModBlocks.OLD_INDUSTRIAL_WOOD_PLANKS.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.OAK_PLANKS).strength(0.5f, 6f).sound(SoundType.WOOD))), new Item.Properties());
public static final RegistryObject<Block> OLD_INDUSTRIAL_WOOD_DOOR = registerWithItem(BLOCKS.register("old_industrial_wood_door", ()-> new DoorBlock(BlockBehaviour.Properties.copy(Blocks.OAK_PLANKS).strength(0.5f, 6f).noOcclusion(), BlockSetType.DARK_OAK)), new Item.Properties());
public static final RegistryObject<Block> STEEL_CATWALK = registerWithItem(BLOCKS.register("steel_catwalk", ()-> new BlockCustomVoxels(gratingBlock, Block.box(0, 0, 0, 16, 2, 16))), new Item.Properties());
public static final RegistryObject<Block> STEEL_CATWALK_TOP = registerWithItem(BLOCKS.register("steel_catwalk_top", ()-> new BlockCustomVoxels(gratingBlock, Block.box(0, 14, 0, 16, 16, 16))), new Item.Properties());
public static final RegistryObject<Block> STEEL_GRATING = registerWithItem(BLOCKS.register("steel_floor_grating", ()-> new BlockCustomVoxels(gratingBlock, Block.box(0, 0, 0, 16, 2, 16))), new Item.Properties());
public static final RegistryObject<Block> STEEL_GRATING_TOP = registerWithItem(BLOCKS.register("steel_floor_grating_top", ()-> new BlockCustomVoxels(gratingBlock, Block.box(0, 14, 0, 16, 16, 16))), new Item.Properties());
public static final RegistryObject<Block> STEEL_TABLE = registerWithItem(BLOCKS.register("steel_table", ()-> new BlockCustomVoxels(gratingBlock, Block.box(0, 0, 0, 16, 16, 16))), new Item.Properties());
private static final VoxelShape STEEL_CATWALK_STAIRS_NORTH = Shapes.join(Block.box(1, 10, 0, 15, 12, 8), Block.box(1, 2, 8, 15, 4, 16), BooleanOp.OR);
private static final VoxelShape STEEL_CATWALK_STAIRS_SOUTH = Shapes.join(Block.box(1, 10, 8, 15, 12, 16), Block.box(1, 2, 0, 15, 4, 8), BooleanOp.OR);
private static final VoxelShape STEEL_CATWALK_STAIRS_EAST = Shapes.join(Block.box(8, 10, 1, 16, 12, 15), Block.box(0, 2, 1, 8, 4, 15), BooleanOp.OR);
private static final VoxelShape STEEL_CATWALK_STAIRS_WEST = Shapes.join(Block.box(0, 10, 1, 8, 12, 15), Block.box(8, 2, 1, 16, 4, 15), BooleanOp.OR);
public static final RegistryObject<Block> STEEL_CATWALK_STAIRS = registerWithItem(BLOCKS.register("steel_catwalk_stairs", ()-> new RotatableBlockCustomVoxels(gratingBlock, STEEL_CATWALK_STAIRS_NORTH, STEEL_CATWALK_STAIRS_SOUTH, STEEL_CATWALK_STAIRS_WEST, STEEL_CATWALK_STAIRS_EAST)), new Item.Properties());
private static final VoxelShape STEEL_CATWALK_STAIRS_LR_NORTH = Stream.of(
Block.box(1, 2, 8, 15, 4, 16),
Block.box(1, 10, 0, 15, 12, 8),
Block.box(0, 0, 0, 1, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_LR_SOUTH = Stream.of(
Block.box(1, 2, 0, 15, 4, 8),
Block.box(1, 10, 8, 15, 12, 16),
Block.box(15, 0, 0, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_LR_EAST = Stream.of(
Block.box(0, 2, 1, 8, 4, 15),
Block.box(8, 10, 1, 16, 12, 15),
Block.box(0, 0, 0, 16, 21, 1)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_LR_WEST = Stream.of(
Block.box(8, 2, 1, 16, 4, 15),
Block.box(0, 10, 1, 8, 12, 15),
Block.box(0, 0, 15, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
public static final RegistryObject<Block> STEEL_CATWALK_STAIRS_LR = registerWithItem(BLOCKS.register("steel_catwalk_stairs_lr", ()-> new RotatableBlockCustomVoxels(gratingBlock, STEEL_CATWALK_STAIRS_LR_NORTH, STEEL_CATWALK_STAIRS_LR_SOUTH, STEEL_CATWALK_STAIRS_LR_WEST, STEEL_CATWALK_STAIRS_LR_EAST)), new Item.Properties());
private static final VoxelShape STEEL_CATWALK_STAIRS_RR_NORTH = Stream.of(
Block.box(1, 2, 8, 15, 4, 16),
Block.box(1, 10, 0, 15, 12, 8),
Block.box(15, 0, 0, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_RR_SOUTH = Stream.of(
Block.box(1, 2, 0, 15, 4, 8),
Block.box(1, 10, 8, 15, 12, 16),
Block.box(0, 0, 0, 1, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_RR_EAST = Stream.of(
Block.box(0, 2, 1, 8, 4, 15),
Block.box(8, 10, 1, 16, 12, 15),
Block.box(0, 0, 15, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_RR_WEST = Stream.of(
Block.box(8, 2, 1, 16, 4, 15),
Block.box(0, 10, 1, 8, 12, 15),
Block.box(0, 0, 0, 16, 21, 1)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
public static final RegistryObject<Block> STEEL_CATWALK_STAIRS_RR = registerWithItem(BLOCKS.register("steel_catwalk_stairs_rr", ()-> new RotatableBlockCustomVoxels(gratingBlock, STEEL_CATWALK_STAIRS_RR_NORTH, STEEL_CATWALK_STAIRS_RR_SOUTH, STEEL_CATWALK_STAIRS_RR_WEST, STEEL_CATWALK_STAIRS_RR_EAST)), new Item.Properties());
private static final VoxelShape STEEL_CATWALK_STAIRS_DR_NORTH = Stream.of(
Block.box(1, 10, 0, 15, 12, 8),
Block.box(1, 2, 8, 15, 4, 16),
Block.box(0, 0, 0, 1, 21, 16),
Block.box(15, 0, 0, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_DR_SOUTH = Stream.of(
Block.box(1, 10, 8, 15, 12, 16),
Block.box(1, 2, 0, 15, 4, 8),
Block.box(15, 0, 0, 16, 21, 16),
Block.box(0, 0, 0, 1, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_DR_WEST = Stream.of(
Block.box(8, 10, 1, 16, 12, 15),
Block.box(0, 2, 1, 8, 4, 15),
Block.box(0, 0, 0, 16, 21, 1),
Block.box(0, 0, 15, 16, 21, 16)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
private static final VoxelShape STEEL_CATWALK_STAIRS_DR_EAST = Stream.of(
Block.box(0, 10, 1, 8, 12, 15),
Block.box(8, 2, 1, 16, 4, 15),
Block.box(0, 0, 15, 16, 21, 16),
Block.box(0, 0, 0, 16, 21, 1)
).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();
public static final RegistryObject<Block> STEEL_CATWALK_STAIRS_DR = registerWithItem(BLOCKS.register("steel_catwalk_stairs_dr", ()-> new RotatableBlockCustomVoxels(gratingBlock, STEEL_CATWALK_STAIRS_DR_NORTH, STEEL_CATWALK_STAIRS_DR_SOUTH, STEEL_CATWALK_STAIRS_DR_WEST, STEEL_CATWALK_STAIRS_DR_EAST)), new Item.Properties());
private static final VoxelShape STEEL_RAILING_NORTH = Block.box(0.25, 0.25, 0.25, 15.75, 16, 1.25);
private static final VoxelShape STEEL_RAILING_SOUTH = Block.box(0.25, 0.25, 14.75, 15.75, 16, 15.75);
private static final VoxelShape STEEL_RAILING_WEST = Block.box(14.75, 0.25, 0.25, 15.75, 16, 15.75);
private static final VoxelShape STEEL_RAILING_EAST = Block.box(0.25, 0.25, 0.25, 1.25, 16, 15.75);
public static final RegistryObject<Block> STEEL_RAILING = registerWithItem(BLOCKS.register("steel_railing", ()->new RotatableBlockCustomVoxels(gratingBlock, STEEL_RAILING_NORTH, STEEL_RAILING_SOUTH, STEEL_RAILING_WEST, STEEL_RAILING_EAST)), new Item.Properties());
public static final RegistryObject<Block> STEEL_CATWALK_BLOCK = registerWithItem(BLOCKS.register("steel_catwalk_block", ()-> new Block(gratingBlock)), new Item.Properties());
public static final VoxelShape SHAPE_T_FLIPFLOP = Block.box(0, 0, 0, 16, 1, 16);
public static final RegistryObject<Block> TFLIPFLOP_BLOCK = registerWithItem(BLOCKS.register("tflipflop", () -> new TFlipFlopBlock(noViewBlocking().noOcclusion().noCollission())), new Item.Properties());
}

View file

@ -0,0 +1,55 @@
package dev.zontreck.essentials.blocks.logicgates;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.blocks.ModBlocks;
import dev.zontreck.libzontreck.blocks.RedstoneBlock;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class TFlipFlopBlock extends RedstoneBlock
{
public TFlipFlopBlock(Properties p_49795_) {
super(p_49795_, Direction.NORTH, Direction.SOUTH);
}
@Override
public boolean propagatesSkylightDown(BlockState p_49928_, BlockGetter p_49929_, BlockPos p_49930_) {
return true;
}
@Override
public VoxelShape getShape(BlockState p_60555_, BlockGetter p_60556_, BlockPos p_60557_, CollisionContext p_60558_) {
return ModBlocks.SHAPE_T_FLIPFLOP;
}
@Override
protected void onRedstone(LevelReader levelReader, BlockPos blockPos, boolean b) {
}
@Override
protected void onRedstoneInputChanged(LevelReader levelReader, BlockPos blockPos, boolean b) {
BlockState state = levelReader.getBlockState(blockPos);
AriasEssentials.LOGGER.info("Redstone connected to TFlipFlop block, B : " + b + "; INP:" + state.getValue(INPUT_POWER) + "; POW:" + state.getValue(POWERED));
if (b) {
if (state.getValue(POWERED)) {
state.setValue(POWERED, false);
} else {
state.setValue(POWERED, true);
}
}
}
@Override
public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
int signal = super.getSignal(state, level, pos, direction);
return state.getValue(FACING) == direction ? signal : 0;
}
}

View file

@ -5,9 +5,8 @@ import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.KeyMapping;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
@OnlyIn(Dist.CLIENT)
public class Keybindings {
@ -20,5 +19,11 @@ public class Keybindings {
final KeyMapping key = new KeyMapping(name, keycode, category);
return key;
}
@SubscribeEvent
public static void registerKeyMappings(RegisterKeyMappingsEvent event)
{
event.register(AUTOWALK);
}
}

View file

@ -7,7 +7,7 @@
*
*/
package dev.zontreck.essentials.gui;
package dev.zontreck.essentials.client.renderer;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
@ -17,7 +17,7 @@ import dev.zontreck.essentials.configs.client.AEClientConfig;
import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.effect.MobEffectInstance;
@ -44,7 +44,7 @@ public class HeartsRenderer {
"textures/gui/hearts.png");
private static final ResourceLocation ICON_ABSORB = new ResourceLocation(AriasEssentials.MODID,
"textures/gui/absorb.png");
private static final ResourceLocation ICON_VANILLA = GuiComponent.GUI_ICONS_LOCATION;
private static final ResourceLocation ICON_VANILLA = Gui.GUI_ICONS_LOCATION;
private final Minecraft mc = Minecraft.getInstance();
@ -67,8 +67,8 @@ public class HeartsRenderer {
* @param width Width to draw
* @param height Height to draw
*/
private void blit(PoseStack matrixStack, int x, int y, int textureX, int textureY, int width, int height) {
Minecraft.getInstance().gui.blit(matrixStack, x, y, textureX, textureY, width, height);
private void blit(GuiGraphics matrixStack, int x, int y, int textureX, int textureY, int width, int height, ResourceLocation resource) {
matrixStack.blit(resource, x, y, textureX, textureY, width, height);
}
/* HUD */
@ -178,7 +178,7 @@ public class HeartsRenderer {
MARGIN += 72;
float absorbRemaining = absorb;
PoseStack matrixStack = event.getPoseStack();
GuiGraphics matrixStack = event.getGuiGraphics();
for (int i = Mth.ceil((healthMax + absorb) / 2.0F) - 1; i >= 0; --i) {
int row = Mth.ceil((float) (i + 1) / 10.0F) - 1;
int x = left + i % 10 * 8;
@ -189,29 +189,29 @@ public class HeartsRenderer {
if (i == this.regen)
y -= 2;
this.blit(matrixStack, x, y, BACKGROUND, TOP, 9, 9);
this.blit(matrixStack, x, y, BACKGROUND, TOP, 9, 9, ICON_VANILLA);
if (highlight) {
if (i * 2 + 1 < healthLast) {
this.blit(matrixStack, x, y, MARGIN + 54, TOP, 9, 9); // 6
this.blit(matrixStack, x, y, MARGIN + 54, TOP, 9, 9, ICON_VANILLA); // 6
} else if (i * 2 + 1 == healthLast) {
this.blit(matrixStack, x, y, MARGIN + 63, TOP, 9, 9); // 7
this.blit(matrixStack, x, y, MARGIN + 63, TOP, 9, 9, ICON_VANILLA); // 7
}
}
if (absorbRemaining > 0.0F) {
if (absorbRemaining == absorb && absorb % 2.0F == 1.0F) {
this.blit(matrixStack, x, y, MARGIN + 153, TOP, 9, 9); // 17
this.blit(matrixStack, x, y, MARGIN + 153, TOP, 9, 9, ICON_VANILLA); // 17
absorbRemaining -= 1.0F;
} else {
this.blit(matrixStack, x, y, MARGIN + 144, TOP, 9, 9); // 16
this.blit(matrixStack, x, y, MARGIN + 144, TOP, 9, 9, ICON_VANILLA); // 16
absorbRemaining -= 2.0F;
}
} else {
if (i * 2 + 1 < health) {
this.blit(matrixStack, x, y, MARGIN + 36, TOP, 9, 9); // 4
this.blit(matrixStack, x, y, MARGIN + 36, TOP, 9, 9, ICON_VANILLA); // 4
} else if (i * 2 + 1 == health) {
this.blit(matrixStack, x, y, MARGIN + 45, TOP, 9, 9); // 5
this.blit(matrixStack, x, y, MARGIN + 45, TOP, 9, 9, ICON_VANILLA); // 5
}
}
}
@ -229,10 +229,9 @@ public class HeartsRenderer {
RenderSystem.disableBlend();
this.mc.getProfiler().pop();
MinecraftForge.EVENT_BUS
.post(new RenderGuiOverlayEvent.Post(mc.getWindow(), event.getPoseStack(), event.getPartialTick(), ActualOverlay));
.post(new RenderGuiOverlayEvent.Post(mc.getWindow(), event.getGuiGraphics(), event.getPartialTick(), ActualOverlay));
}
/**
* Gets the texture from potion effects
*
@ -264,7 +263,7 @@ public class HeartsRenderer {
* @param yBasePos Health bar top corner
* @param player Player instance
*/
private void renderExtraHearts(PoseStack matrixStack, int xBasePos, int yBasePos, Player player) {
private void renderExtraHearts(GuiGraphics matrixStack, int xBasePos, int yBasePos, Player player) {
int potionOffset = this.getPotionOffset(player);
// Extra hearts
@ -273,7 +272,6 @@ public class HeartsRenderer {
this.renderCustomHearts(matrixStack, xBasePos, yBasePos, potionOffset, hp, false);
}
/**
* Renders the absorption health above 10 hearts
*
@ -282,7 +280,7 @@ public class HeartsRenderer {
* @param yBasePos Health bar top corner
* @param player Player instance
*/
private void renderExtraAbsorption(PoseStack matrixStack, int xBasePos, int yBasePos, Player player) {
private void renderExtraAbsorption(GuiGraphics matrixStack, int xBasePos, int yBasePos, Player player) {
int potionOffset = this.getPotionOffset(player);
// Extra hearts
@ -303,6 +301,7 @@ public class HeartsRenderer {
/**
* Shared logic to render custom hearts
*
* @param matrixStack Matrix stack instance
* @param xBasePos Health bar top corner
* @param yBasePos Health bar top corner
@ -310,7 +309,8 @@ public class HeartsRenderer {
* @param count Number to render
* @param absorb If true, render absorption hearts
*/
private void renderCustomHearts(PoseStack matrixStack, int xBasePos, int yBasePos, int potionOffset, int count, boolean absorb) {
private void renderCustomHearts(GuiGraphics matrixStack, int xBasePos, int yBasePos, int potionOffset, int count,
boolean absorb) {
int regenOffset = absorb ? 10 : 0;
for (int iter = 0; iter < count / 20; iter++) {
int renderHearts = (count - 20 * (iter + 1)) / 2;
@ -321,16 +321,16 @@ public class HeartsRenderer {
for (int i = 0; i < renderHearts; i++) {
int y = this.getYRegenOffset(i, regenOffset);
if (absorb) {
this.blit(matrixStack, xBasePos + 8 * i, yBasePos + y, 0, 54, 9, 9);
this.blit(matrixStack, xBasePos + 8 * i, yBasePos + y, 0, 54, 9, 9, ICON_ABSORB);
}
this.blit(matrixStack, xBasePos + 8 * i, yBasePos + y, 18 * heartIndex, potionOffset, 9, 9);
this.blit(matrixStack, xBasePos + 8 * i, yBasePos + y, 18 * heartIndex, potionOffset, 9, 9, ICON_HEARTS);
}
if (count % 2 == 1 && renderHearts < 10) {
int y = this.getYRegenOffset(renderHearts, regenOffset);
if (absorb) {
this.blit(matrixStack, xBasePos + 8 * renderHearts, yBasePos + y, 0, 54, 9, 9);
this.blit(matrixStack, xBasePos + 8 * renderHearts, yBasePos + y, 0, 54, 9, 9, ICON_ABSORB);
}
this.blit(matrixStack, xBasePos + 8 * renderHearts, yBasePos + y, 9 + 18 * heartIndex, potionOffset, 9, 9);
this.blit(matrixStack, xBasePos + 8 * renderHearts, yBasePos + y, 9 + 18 * heartIndex, potionOffset, 9, 9, ICON_HEARTS);
}
}
}

View file

@ -0,0 +1,60 @@
package dev.zontreck.essentials.client.renderer;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import dev.zontreck.essentials.entities.TimeBoostEntity;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.Font;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;
import org.joml.Quaternionf;
import org.joml.Vector3f;
public class TimeBoostEntityRenderer extends EntityRenderer<TimeBoostEntity>
{
public TimeBoostEntityRenderer(EntityRendererProvider.Context erp) {
super(erp);
}
@Override
public void render(TimeBoostEntity entity, float entityYaw, float partialTicks, PoseStack matrixStack, MultiBufferSource bufferIn, int packedLightIn) {
String timeRate = "x" + 2 * entity.getTimeRate();
float paddingLeftRight = 2 * entity.getTimeRate() < 10 ? 0.11F : 0.19F;
drawText(matrixStack, bufferIn, timeRate, new Vector3f(-paddingLeftRight, 0.064F, 0.51F), Axis.YP.rotationDegrees(0), ChatFormatting.WHITE.getColor()); // Front
drawText(matrixStack, bufferIn, timeRate, new Vector3f(paddingLeftRight, 0.064F, -0.51F), Axis.YP.rotationDegrees(180F), ChatFormatting.WHITE.getColor()); // Back
drawText(matrixStack, bufferIn, timeRate, new Vector3f(0.51F, 0.064F, paddingLeftRight), Axis.YP.rotationDegrees(90F), ChatFormatting.WHITE.getColor()); // Right
drawText(matrixStack, bufferIn, timeRate, new Vector3f(-0.51F, 0.064F, -paddingLeftRight), Axis.YP.rotationDegrees(-90F), ChatFormatting.WHITE.getColor()); // Left
drawText(matrixStack, bufferIn, timeRate, new Vector3f(-paddingLeftRight, 0.51F, -0.064F), Axis.XP.rotationDegrees(90F), ChatFormatting.WHITE.getColor()); // Top
drawText(matrixStack, bufferIn, timeRate, new Vector3f(-paddingLeftRight, -0.51F, 0.064F), Axis.XP.rotationDegrees(-90F), ChatFormatting.WHITE.getColor()); // Bottom
}
@Override
public ResourceLocation getTextureLocation(TimeBoostEntity entity) {
return null;
}
private void drawText(PoseStack matrixStack, MultiBufferSource source, String text, Vector3f translateVector, Quaternionf rotate, int color) {
matrixStack.pushPose();
matrixStack.translate(translateVector.x(), translateVector.y(), translateVector.z());
matrixStack.scale(0.02F, -0.02F, 0.02F);
matrixStack.mulPose(rotate);
getFont().drawInBatch(
text,
0,
0,
-1,
false,
matrixStack.last().pose(),
source,
Font.DisplayMode.NORMAL,
0,
color
);
matrixStack.popPose();
}
}

View file

@ -2,7 +2,6 @@ package dev.zontreck.essentials.commands.gui;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.essentials.networking.ModMessages;
@ -10,7 +9,6 @@ import dev.zontreck.essentials.networking.packets.s2c.S2CUpdateHearts;
import dev.zontreck.libzontreck.util.ChatHelpers;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.common.MinecraftForge;
public class HeartsCommand
@ -23,30 +21,24 @@ public class HeartsCommand
private static int hearts(CommandSourceStack stack, boolean compressHearts)
{
ServerPlayer player = null;
try {
player = stack.getPlayerOrException();
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(player, "hearts");
var exec = new CommandExecutionEvent(stack.getPlayer(), "hearts");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
}
// Send the state to the client, then update the config
// Send feedback to the user
ChatHelpers.broadcastTo(player.getUUID(), ChatHelpers.macro(Messages.HEARTS_UPDATED), stack.getServer());
ChatHelpers.broadcastTo(stack.getPlayer().getUUID(), ChatHelpers.macro(Messages.HEARTS_UPDATED), stack.getServer());
S2CUpdateHearts update = new S2CUpdateHearts(compressHearts);
ModMessages.sendToPlayer(update, player);
ModMessages.sendToPlayer(update, stack.getPlayer());
return 0;
}
private static int usage(CommandSourceStack stack)
{
ChatHelpers.broadcastTo(stack.getEntity().getUUID(), ChatHelpers.macro(Messages.HEARTS_USAGE), stack.getServer());
ChatHelpers.broadcastTo(stack.getPlayer().getUUID(), ChatHelpers.macro(Messages.HEARTS_USAGE), stack.getServer());
return 0;

View file

@ -3,7 +3,6 @@ package dev.zontreck.essentials.commands.homes;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
@ -22,10 +21,8 @@ public class DelHomeCommand {
Commands.literal("rmhome")
.executes(c->rmHome(c.getSource(), "default"))
.then(Commands.argument("nickname", StringArgumentType.string())
.suggests(HomesSuggestionProvider.PROVIDER)
.executes(c -> rmHome(c.getSource(), StringArgumentType.getString(c, "nickname")))
)
)
);
//dispatcher.register(Commands.literal("sethome").then(Commands.argument("nickname", StringArgumentType.string())).executes(command -> {
@ -37,12 +34,7 @@ public class DelHomeCommand {
private static int rmHome(CommandSourceStack ctx, String homeName)
{
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(ctx.getPlayerOrException(), "delhome");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(ctx.getPlayer(), "delhome");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;

View file

@ -22,8 +22,7 @@ import net.minecraftforge.common.MinecraftForge;
public class HomeCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
{
dispatcher.register(Commands.literal("home").executes(c-> home(c.getSource(), "default"))
.then(Commands.argument("nickname", StringArgumentType.string()).suggests(HomesSuggestionProvider.PROVIDER).executes(c -> home(c.getSource(), StringArgumentType.getString(c, "nickname")))));
dispatcher.register(Commands.literal("home").executes(c-> home(c.getSource(), "default")).then(Commands.argument("name", StringArgumentType.string()).executes(c->home(c.getSource(), StringArgumentType.getString(c, "name")))));
//dispatcher.register(Commands.literal("sethome").then(Commands.argument("nickname", StringArgumentType.string())).executes(command -> {
//String arg = StringArgumentType.getString(command, "nickname");
@ -33,12 +32,7 @@ public class HomeCommand {
private static int home(CommandSourceStack ctx, String homeName)
{
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(ctx.getPlayerOrException(), "home");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(ctx.getPlayer(), "home");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;

View file

@ -60,7 +60,7 @@ public class HomesCommand {
{
stack = new ItemStack(Items.GRASS_BLOCK, 1);
}
stack.setHoverName(ChatHelpers.macro(string.homeName));
stack.setHoverName(Component.literal(string.homeName));
ChestGUIButton button = new ChestGUIButton(stack, (stackx, container, lore)-> {

View file

@ -17,8 +17,9 @@ import dev.zontreck.essentials.homes.Home;
import dev.zontreck.libzontreck.chat.ChatColor;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.vectors.Vector2;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector2f;
import dev.zontreck.libzontreck.vectors.Vector2i;
import dev.zontreck.libzontreck.vectors.Vector3d;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
@ -43,12 +44,7 @@ public class SetHomeCommand {
private static int setHome(CommandSourceStack ctx, String homeName)
{
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(ctx.getPlayerOrException(), "sethome");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(ctx.getPlayer(), "sethome");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -64,7 +60,7 @@ public class SetHomeCommand {
p = ctx.getPlayerOrException();
if(TeleportActioner.isBlacklistedDimension(p.getLevel()))
if(TeleportActioner.isBlacklistedDimension(p.serverLevel()))
{
ChatHelpers.broadcastTo(p, ChatHelpers.macro(Messages.ESSENTIALS_PREFIX + AEServerConfig.getInstance().messages.BlacklistedDimensionError), p.server);
@ -74,11 +70,10 @@ public class SetHomeCommand {
Vec3 position = p.position();
Vec2 rot = p.getRotationVector();
TeleportDestination dest = new TeleportDestination(new Vector3(position), new Vector2(rot), p.getLevel());
BlockState bs = p.getLevel().getBlockState(dest.Position.moveDown().asBlockPos());
TeleportDestination dest = new TeleportDestination(new Vector3d(position), new Vector2f(rot), p.serverLevel());
BlockState bs = p.serverLevel().getBlockState(dest.Position.moveDown().asBlockPos());
Home newhome = new Home(p, homeName, dest, new ItemStack(bs.getBlock().asItem()));
Home newhome = new Home(p, homeName, dest, new ItemStack(p.getBlockStateOn().getBlock().asItem()));
AriasEssentials.player_homes.get(p.getUUID()).add(newhome);

View file

@ -1,7 +1,6 @@
package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.essentials.events.CommandExecutionEvent;
@ -21,12 +20,7 @@ public class BackCommand
public static int back(CommandSourceStack ctx)
{
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(ctx.getPlayerOrException(), "back");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(ctx.getPlayer(), "back");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -34,20 +28,20 @@ public class BackCommand
try {
if(!AEServerConfig.getInstance().back.Enabled && !ctx.hasPermission(ctx.getServer().getOperatorUserPermissionLevel()))
{
ChatHelpers.broadcastTo(ctx.getPlayerOrException(), ChatHelpers.macro(Messages.TELEPORT_BACK_DISABLED), ctx.getServer());
ChatHelpers.broadcastTo(ctx.getPlayer(), ChatHelpers.macro(Messages.TELEPORT_BACK_DISABLED), ctx.getServer());
return 0;
}
WorldPosition wp = BackPositionCaches.Pop(ctx.getPlayerOrException().getUUID());
WorldPosition wp = BackPositionCaches.Pop(ctx.getPlayer().getUUID());
ChatHelpers.broadcastTo(ctx.getPlayerOrException(), ChatHelpers.macro(Messages.TELEPORT_BACK), ctx.getServer());
ChatHelpers.broadcastTo(ctx.getPlayer(), ChatHelpers.macro(Messages.TELEPORT_BACK), ctx.getServer());
TeleportContainer cont = new TeleportContainer(ctx.getPlayerOrException(), wp.Position.asMinecraftVector(), ctx.getRotation(), wp.getActualDimension());
TeleportContainer cont = new TeleportContainer(ctx.getPlayer(), wp.Position.asMinecraftVector(), ctx.getRotation(), wp.getActualDimension());
TeleportActioner.ApplyTeleportEffect(ctx.getPlayerOrException());
TeleportActioner.ApplyTeleportEffect(ctx.getPlayer());
TeleportActioner.PerformTeleport(cont, true);
} catch (Exception e) {
ChatHelpers.broadcastTo(ctx.getEntity().getUUID(), ChatHelpers.macro(Messages.NO_BACK), ctx.getServer());
ChatHelpers.broadcastTo(ctx.getPlayer(), ChatHelpers.macro(Messages.NO_BACK), ctx.getServer());
}
return 0;
}

View file

@ -2,7 +2,6 @@ package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.essentials.rtp.RandomPositionFactory;
import net.minecraft.commands.CommandSourceStack;
@ -28,12 +27,7 @@ public class RTPCommand {
private static int rtp(CommandSourceStack source) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "rtp");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "rtp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -64,7 +58,7 @@ public class RTPCommand {
Vec3 pos = pla.position();
//boolean found_place= false;
RandomPositionFactory.beginRTP(pla, pla.getLevel());
RandomPositionFactory.beginRTP(pla, pla.serverLevel());
}

View file

@ -2,7 +2,6 @@ package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.libzontreck.util.ChatHelpers;
@ -28,12 +27,7 @@ public class SpawnCommand {
private static int respawn(CommandSourceStack source) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "spawn");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "spawn");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -42,10 +36,10 @@ public class SpawnCommand {
ChatHelpers.broadcastTo(p.getUUID(), ChatHelpers.macro(Messages.RESPAWNING), p.server);
BlockPos spawn = p.getLevel().getSharedSpawnPos();
BlockPos spawn = p.serverLevel().getSharedSpawnPos();
TeleportActioner.ApplyTeleportEffect(p);
TeleportContainer cont = new TeleportContainer(p, new Vec3(spawn.getX(), spawn.getY(), spawn.getZ()), Vec2.ZERO, p.getLevel());
TeleportContainer cont = new TeleportContainer(p, new Vec3(spawn.getX(), spawn.getY(), spawn.getZ()), Vec2.ZERO, p.serverLevel());
TeleportActioner.PerformTeleport(cont, false);

View file

@ -2,9 +2,7 @@ package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.ariaslib.terminal.Task;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.libzontreck.chat.ChatColor;
@ -38,12 +36,7 @@ public class TPACommand {
private static int tpa(CommandSourceStack source, ServerPlayer serverPlayer) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "tpa");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "tpa");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -108,23 +101,29 @@ public class TPACommand {
append(ChatHelpers.macro(Messages.TELEPORT_DENY).setStyle(s2)), serverPlayer.server);
TeleportRegistry.get().add(cont);
DelayedExecutorService.getInstance().schedule(new Task("tpa_expire",true){
Thread tx = new Thread(new Task("tpa_expire",true){
@Override
public void run()
{
try {
Thread.sleep(30 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!(TeleportRegistry.get().contains(cont)))return;
TeleportRegistry.get().remove(cont);
ChatHelpers.broadcastTo(cont.ToPlayer, ChatHelpers.macro("!Dark_Red!Teleport request has expired"), cont.Dimension.getServer());
ChatHelpers.broadcastTo(cont.FromPlayer, ChatHelpers.macro("!Dark_Red!Teleport request has expired"), cont.Dimension.getServer());
}
}, 30);
});
tx.start();
return 0;
}
private static int usage(CommandSourceStack source) {
ChatHelpers.broadcastTo(source.getEntity().getUUID(), ChatHelpers.macro("/tpa USAGE\n\n "+ChatColor.BOLD + ChatColor.DARK_GRAY+"/tpa "+ChatColor.DARK_RED+"target_player\n"), source.getServer());
source.sendSystemMessage(ChatHelpers.macro("/tpa USAGE\n\n "+ChatColor.BOLD + ChatColor.DARK_GRAY+"/tpa "+ChatColor.DARK_RED+"target_player\n"));
return 0;
}
}

View file

@ -2,9 +2,7 @@ package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.ariaslib.terminal.Task;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.libzontreck.chat.ChatColor;
@ -34,12 +32,7 @@ public class TPAHereCommand {
private static int tpa(CommandSourceStack source, ServerPlayer serverPlayer) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "tpahere");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "tpahere");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -105,22 +98,27 @@ public class TPAHereCommand {
TeleportRegistry.get().add(cont);
DelayedExecutorService.getInstance().schedule(new Task("tpahere_expire",true){
Thread tx = new Thread(new Task("tpahere_expire",true){
@Override
public void run()
{
try {
Thread.sleep(30 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!(TeleportRegistry.get().contains(cont)))return;
TeleportRegistry.get().remove(cont);
ChatHelpers.broadcastTo(cont.ToPlayer, ChatHelpers.macro("!Dark_Red!Teleport request has expired"), cont.Dimension.getServer());
ChatHelpers.broadcastTo(cont.FromPlayer, ChatHelpers.macro("!Dark_Red!Teleport request has expired"), cont.Dimension.getServer());
}
}, 30);
});
return 0;
}
private static int usage(CommandSourceStack source) {
ChatHelpers.broadcastTo(source.getEntity().getUUID(), ChatHelpers.macro("/tpahere USAGE\n\n !Bold!!Dark_Gray!/tpahere !Dark_Red!target_player\n"), source.getServer());
source.sendSystemMessage(ChatHelpers.macro("/tpahere USAGE\n\n !Bold!!Dark_Gray!/tpahere !Dark_Red!target_player\n"));
return 0;
}
}

View file

@ -6,7 +6,6 @@ import java.util.UUID;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.libzontreck.chat.ChatColor;
@ -26,12 +25,7 @@ public class TPAcceptCommand {
private static int doAccept(CommandSourceStack source, String TPID) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "tpaccept");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "tpaccept");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -60,7 +54,7 @@ public class TPAcceptCommand {
cont.PlayerInst = from;
cont.Position = to.position();
cont.Rotation = to.getRotationVector();
cont.Dimension = to.getLevel();
cont.Dimension = to.serverLevel();
TeleportActioner.ApplyTeleportEffect(from);
TeleportActioner.PerformTeleport(cont, false);

View file

@ -2,7 +2,6 @@ package dev.zontreck.essentials.commands.teleport;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.libzontreck.chestgui.ChestGUI;
import dev.zontreck.libzontreck.chestgui.ChestGUIButton;
@ -28,19 +27,13 @@ public class TPEffectsCommand
public static int tpeffects(CommandSourceStack source, boolean disabled)
{
ServerPlayer player = null;
try {
player = source.getPlayerOrException();
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
ServerPlayer player = source.getPlayer();
try {
Profile prof = Profile.get_profile_of(player.getStringUUID());
prof.NBT.putBoolean("tpeffects", disabled);
ChatHelpers.broadcastTo(player.getUUID(), ChatHelpers.macro(Messages.TP_EFFECTS_TOGGLED, disabled ? "disabled" : "enabled"), player.server);
return 0;
} catch (UserProfileNotYetExistsException e) {
throw new RuntimeException(e);

View file

@ -1,12 +1,10 @@
package dev.zontreck.essentials.commands.teleport;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.libzontreck.profiles.Profile;
import dev.zontreck.libzontreck.profiles.UserProfileNotYetExistsException;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.commands.EffectCommands;
import net.minecraft.server.level.ServerLevel;
@ -21,26 +19,18 @@ public class TeleportActioner
{
public static void PerformTeleport(TeleportContainer contain, boolean eventless){
//sub_runnable run = new sub_runnable(contain);
DelayedExecutorService.getInstance().schedule(new TeleportRunnable(contain, eventless), 2);
Thread tx = new Thread(new TeleportRunnable(contain, eventless));
tx.start();
}
public static boolean isBlacklistedDimension(ServerLevel level)
{
WorldPosition pos = new WorldPosition(Vector3.ZERO, level);
WorldPosition pos = new WorldPosition(Vector3d.ZERO, level);
return AEServerConfig.getInstance().teleport.Blacklist.contains(pos.Dimension);
}
public static void ApplyTeleportEffect(ServerPlayer player){
try {
Profile prof = Profile.get_profile_of(player.getStringUUID());
if(prof.NBT.getBoolean("tpeffects"))
{
return;
}
} catch (UserProfileNotYetExistsException e) {
throw new RuntimeException(e);
}
if(isBlacklistedDimension(player.getLevel())){
if(isBlacklistedDimension(player.serverLevel())){
return;
}
// 10/05/2022 - Thinking ahead here to future proof it so i can do things in threads safely
@ -53,7 +43,7 @@ public class TeleportActioner
for(int i = 0; i < effects.size(); i++) {
RegistryObject<MobEffect> effect = RegistryObject.create(new ResourceLocation(effects.get(i)), ForgeRegistries.MOB_EFFECTS);
int duration = AriasEssentials.random.nextInt(2, 5) * 20;
int duration = AriasEssentials.random.nextInt(5, 10) * 20;
int amplifier = AriasEssentials.random.nextInt(1, 3);
if (effects.get(i).equals("minecraft:slow_falling"))

View file

@ -3,7 +3,7 @@ package dev.zontreck.essentials.commands.teleport;
import java.time.Instant;
import java.util.UUID;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
@ -42,7 +42,7 @@ public class TeleportContainer implements Comparable{
public TeleportContainer(ServerPlayer f_p, Vec3 f_pos, Vec2 f_rot, ServerLevel f_dim) {
SetTeleportDestination(f_p, f_pos, f_rot, f_dim);
world_pos = new WorldPosition(new Vector3(f_pos), f_dim);
world_pos = new WorldPosition(new Vector3d(f_pos), f_dim);
}
private void SetTeleportDestination(ServerPlayer f_p, Vec3 f_pos, Vec2 f_rot, ServerLevel f_dim) {
@ -50,7 +50,7 @@ public class TeleportContainer implements Comparable{
Position = f_pos;
Rotation = f_rot;
Dimension = f_dim;
world_pos = new WorldPosition(new Vector3(f_pos), f_dim);
world_pos = new WorldPosition(new Vector3d(f_pos), f_dim);
}
@Override

View file

@ -1,7 +1,9 @@
package dev.zontreck.essentials.commands.teleport;
import dev.zontreck.libzontreck.vectors.Vector2;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.api.Vector2;
import dev.zontreck.libzontreck.vectors.Vector2f;
import dev.zontreck.libzontreck.vectors.Vector2i;
import dev.zontreck.libzontreck.vectors.Vector3d;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import dev.zontreck.libzontreck.exceptions.InvalidDeserialization;
import net.minecraft.nbt.CompoundTag;
@ -13,20 +15,20 @@ import net.minecraft.server.level.ServerLevel;
**/
public class TeleportDestination extends WorldPosition
{
public Vector2 Rotation;
public Vector2f Rotation;
public TeleportDestination(CompoundTag tag) throws InvalidDeserialization
{
super(tag, true);
Rotation = new Vector2(tag.getString("Rotation"));
Rotation = Vector2f.parseString(tag.getString("Rotation"));
}
public TeleportDestination(Vector3 pos, Vector2 rot, String dim)
public TeleportDestination(Vector3d pos, Vector2f rot, String dim)
{
super(pos, dim);
Rotation = rot;
}
public TeleportDestination(Vector3 pos, Vector2 rot, ServerLevel dim)
public TeleportDestination(Vector3d pos, Vector2f rot, ServerLevel dim)
{
super(pos,dim);
Rotation=rot;

View file

@ -2,7 +2,6 @@ package dev.zontreck.essentials.commands.teleport;
import dev.zontreck.ariaslib.terminal.Task;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.events.TeleportEvent;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraftforge.common.MinecraftForge;
@ -35,15 +34,23 @@ public class TeleportRunnable extends Task
Action.PlayerInst.onUpdateAbilities();
DelayedExecutorService.getInstance().schedule(new Task("tp_action",true){
Thread tx = new Thread(new Task("tp_action",true){
public final TeleportContainer container=Action;
@Override
public void run()
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
container.PlayerInst.onUpdateAbilities();
container.PlayerInst.setPos(container.Position);
container.PlayerInst.giveExperiencePoints(1);
}
}, 1);
});
tx.start();
}
}

View file

@ -3,7 +3,6 @@ package dev.zontreck.essentials.commands.warps;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.events.CommandExecutionEvent;
import dev.zontreck.essentials.warps.NoSuchWarpException;
@ -30,12 +29,7 @@ public class DelWarpCommand {
private static int setWarp(CommandSourceStack source, String string) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "delwarp");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "delwarp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;

View file

@ -7,7 +7,6 @@ import java.sql.SQLException;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.commands.teleport.TeleportDestination;
import dev.zontreck.essentials.events.CommandExecutionEvent;
@ -16,8 +15,9 @@ import dev.zontreck.essentials.warps.Warp;
import dev.zontreck.essentials.warps.WarpsProvider;
import dev.zontreck.libzontreck.chat.ChatColor;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.vectors.Vector2;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector2f;
import dev.zontreck.libzontreck.vectors.Vector2i;
import dev.zontreck.libzontreck.vectors.Vector3d;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
@ -41,12 +41,7 @@ public class RTPWarpCommand {
private static int setWarp(CommandSourceStack source, String string) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "setwarp");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "setwarp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -56,7 +51,7 @@ public class RTPWarpCommand {
Vec3 position = p.position();
Vec2 rot = p.getRotationVector();
TeleportDestination dest = new TeleportDestination(new Vector3(position), new Vector2(rot), p.getLevel());
TeleportDestination dest = new TeleportDestination(new Vector3d(position), new Vector2f(rot), p.serverLevel());
Warp warp = new Warp(p.getUUID(), string, true, true, dest, new ItemStack(p.getFeetBlockState().getBlock().asItem()));
WarpCreatedEvent event = new WarpCreatedEvent(warp);
if(MinecraftForge.EVENT_BUS.post(event))

View file

@ -7,7 +7,6 @@ import java.sql.SQLException;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.essentials.Messages;
import dev.zontreck.essentials.commands.teleport.TeleportDestination;
import dev.zontreck.essentials.events.CommandExecutionEvent;
@ -16,8 +15,9 @@ import dev.zontreck.essentials.warps.Warp;
import dev.zontreck.essentials.warps.WarpsProvider;
import dev.zontreck.libzontreck.chat.ChatColor;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.vectors.Vector2;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector2f;
import dev.zontreck.libzontreck.vectors.Vector2i;
import dev.zontreck.libzontreck.vectors.Vector3d;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
@ -42,12 +42,7 @@ public class SetWarpCommand {
private static int setWarp(CommandSourceStack source, String string) {
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "setwarp");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "setwarp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return 0;
@ -58,9 +53,8 @@ public class SetWarpCommand {
Vec3 position = p.position();
Vec2 rot = p.getRotationVector();
TeleportDestination dest = new TeleportDestination(new Vector3(position), new Vector2(rot), p.getLevel());
BlockState bs = p.getLevel().getBlockState(dest.Position.moveDown().asBlockPos());
TeleportDestination dest = new TeleportDestination(new Vector3d(position), new Vector2f(rot), p.serverLevel());
BlockState bs = p.serverLevel().getBlockState(dest.Position.moveDown().asBlockPos());
Warp w = new Warp(p.getUUID(), string, false, true, dest, new ItemStack(bs.getBlock().asItem()));
WarpCreatedEvent event = new WarpCreatedEvent(w);

View file

@ -15,7 +15,7 @@ import dev.zontreck.essentials.warps.Warp;
import dev.zontreck.essentials.warps.WarpsProvider;
import dev.zontreck.libzontreck.chat.Clickable;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerLevel;
@ -64,12 +64,12 @@ public class WarpCommand {
if(type==1){
try {
var exec = new CommandExecutionEvent(source.getPlayerOrException(), "rtp");
var exec = new CommandExecutionEvent(source.getPlayer(), "rtp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return;
}
dest.Position = Vector3.ZERO;
dest.Position = Vector3d.ZERO;
RandomPositionFactory.beginRTP(p, f_dim);
return;
} catch (Exception e) {
@ -78,12 +78,7 @@ public class WarpCommand {
}
}
CommandExecutionEvent exec = null;
try {
exec = new CommandExecutionEvent(source.getPlayerOrException(), "warp");
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
var exec = new CommandExecutionEvent(source.getPlayer(), "warp");
if(MinecraftForge.EVENT_BUS.post(exec))
{
return;

View file

@ -30,7 +30,7 @@ import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.util.heads.HeadCache;
import dev.zontreck.libzontreck.util.heads.HeadUtilities;
import dev.zontreck.libzontreck.vectors.Vector2i;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.*;
@ -118,7 +118,7 @@ public class WarpsCommand {
TeleportDestination dest = warp.destination;
if(warpType == 1)
{
dest.Position = Vector3.ZERO;
dest.Position = Vector3d.ZERO;
RandomPositionFactory.beginRTP(p, warp.destination.getActualDimension());
chestGui.close();
return;
@ -141,7 +141,11 @@ public class WarpsCommand {
.withInfo(new LoreEntry.Builder().text(ChatHelpers.macro(appendType, warp.destination.Dimension).getString()).build());
ChatHelpers.broadcastTo(p, warpMsg, p.server);
if(!(warps.size() > (2*9)))
if(warps.size() > (2*9))
{
// Say to person
ChatHelpers.broadcastTo(p, warpMsg, p.server);
}else
chestGui.withButton(button);
iconY++;

View file

@ -0,0 +1,13 @@
package dev.zontreck.essentials.configs;
public class NBTKeys {
// for time in a bottle item
public static final String STORED_TIME = "storedTime";
public static final String TOTAL_ACCUMULATED_TIME = "totalAccumulatedTime";
// for time accelerator entity
public static final String ENTITY_TIME_RATE = "timeRate";
public static final String ENTITY_REMAINING_TIME = "remainingTime";
public static final String ENTITY_POS = "position";
}

View file

@ -1,11 +1,8 @@
package dev.zontreck.essentials.configs.client;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.zontreck.ariaslib.util.FileIO;
import dev.zontreck.essentials.util.EssentialsDatastore;
import dev.zontreck.libzontreck.util.SNbtIo;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import java.nio.file.Path;
@ -31,6 +28,7 @@ public class AEClientConfig
Path serverConfig = EssentialsDatastore.of("client.snbt");
if(serverConfig.toFile().exists())
{
inst = deserialize(SNbtIo.loadSnbt(serverConfig));
}else {
initNewConfig();
@ -59,8 +57,6 @@ public class AEClientConfig
Path serverConfig = EssentialsDatastore.of("client.snbt", false);
CompoundTag tag = inst.serialize();
SNbtIo.writeSnbt(serverConfig, tag);
}

View file

@ -1,9 +1,11 @@
package dev.zontreck.essentials.configs.server;
import dev.zontreck.ariaslib.util.Lists;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.configs.server.sections.*;
import dev.zontreck.essentials.util.EssentialsDatastore;
import dev.zontreck.essentials.util.Maps;
import dev.zontreck.libzontreck.chat.ChatColor;
import dev.zontreck.libzontreck.util.SNbtIo;
import net.minecraft.nbt.*;
@ -20,24 +22,42 @@ public class AEServerConfig
public Back back;
public Teleportation teleport;
public Messages messages;
public Bottles bottles;
public CreeperHeal creeperHeal;
public static AEServerConfig deserialize(CompoundTag tag)
{
AEServerConfig config = new AEServerConfig();
config.costs = Costs.deserialize(tag.getCompound(Costs.TAG_NAME));
config.limits = Limitations.deserialize(tag.getCompound(Limitations.TAG_NAME));
config.cooldowns = new HashMap<>();
ListTag cools = tag.getList(Cooldown.TAG_NAME, ListTag.TAG_COMPOUND);
for(Tag cooldown : cools)
{
Cooldown cd = Cooldown.deserialize((CompoundTag) cooldown);
config.cooldowns.put(cd.Command, cd);
try {
AriasEssentials.LOGGER.info("Loading Aria's Essentials configuration for - Server");
config.costs = Costs.deserialize(tag.getCompound(Costs.TAG_NAME));
config.limits = Limitations.deserialize(tag.getCompound(Limitations.TAG_NAME));
config.cooldowns = new HashMap<>();
ListTag cools = tag.getList(Cooldown.TAG_NAME, ListTag.TAG_COMPOUND);
for(Tag cooldown : cools)
{
Cooldown cd = Cooldown.deserialize((CompoundTag) cooldown);
config.cooldowns.put(cd.Command, cd);
}
config.back = Back.deserialize(tag.getCompound(Back.TAG_NAME));
config.teleport = Teleportation.deserialize(tag.getCompound(Teleportation.TAG_NAME));
config.messages = Messages.deserialize(tag.getCompound(Messages.TAG_NAME));
if(tag.contains(Bottles.TAG_NAME))
{
config.bottles = Bottles.deserialize(tag.getCompound(Bottles.TAG_NAME));
} else config.bottles = new Bottles();
if(tag.contains(CreeperHeal.TAG_NAME))
{
config.creeperHeal = CreeperHeal.deserialize(tag.getCompound(CreeperHeal.TAG_NAME));
} else config.creeperHeal = new CreeperHeal();
AriasEssentials.LOGGER.info("Aria's Essentials Server Configuration Loaded");
} catch(Exception e){
e.printStackTrace();
}
config.back = Back.deserialize(tag.getCompound(Back.TAG_NAME));
config.teleport = Teleportation.deserialize(tag.getCompound(Teleportation.TAG_NAME));
config.messages = Messages.deserialize(tag.getCompound(Messages.TAG_NAME));
return config;
@ -45,11 +65,12 @@ public class AEServerConfig
public static void loadFromFile()
{
Path serverConfig = EssentialsDatastore.of("server.snbt");
Path serverConfig = EssentialsDatastore.of("server.snbt",false);
if(serverConfig.toFile().exists())
{
inst = deserialize(SNbtIo.loadSnbt(serverConfig));
save(); // incase of updates
}else {
initNewConfig();
}
@ -60,7 +81,7 @@ public class AEServerConfig
private static void initNewConfig()
{
inst = new AEServerConfig();
inst.reset();
inst.reset(); // also saves
}
private void reset()
@ -76,7 +97,7 @@ public class AEServerConfig
back = new Back();
teleport = new Teleportation();
teleport.Effects = Lists.of(
"minecraft:blindness",
"minecraft:darkness",
"minecraft:levitation",
"minecraft:slow_falling",
"minecraft:hunger"
@ -89,6 +110,8 @@ public class AEServerConfig
"witherstormmod:bowels"
);
messages = new Messages();
bottles = new Bottles();
creeperHeal = new CreeperHeal();
@ -100,7 +123,6 @@ public class AEServerConfig
Path serverConfig = EssentialsDatastore.of("server.snbt", false);
CompoundTag tag = inst.serialize();
SNbtIo.writeSnbt(serverConfig, tag);
}
@ -118,6 +140,8 @@ public class AEServerConfig
tag.put(Back.TAG_NAME, back.serialize());
tag.put(Teleportation.TAG_NAME, teleport.serialize());
tag.put(Messages.TAG_NAME, messages.serialize());
tag.put(Bottles.TAG_NAME, bottles.serialize());
tag.put(CreeperHeal.TAG_NAME, creeperHeal.serialize());

View file

@ -0,0 +1,82 @@
package dev.zontreck.essentials.configs.server.sections;
import net.minecraft.nbt.CompoundTag;
public class Bottles {
public static final String TAG_NAME = "bottles";
public static final String TAG_DURATION = "durationEachUse";
public static final String TAG_TICKS = "ticks";
public static final String TAG_RANDOM_TICKS = "avgRandomTicks";
public static final String TAG_MAX_TIME_RATE = "maxTimeRate";
public static final String TAG_STORED_TIME = "maxTime";
public static final String TAG_MESSAGE_STORED_TIME = "msg_storedTime";
public static final String TAG_MESSAGE_ACCUMULATED_TIME = "msg_accumulatedTime";
public static final String TAG_TOTAL_USES = "msg_totalUses";
public int eachUseDuration = 30;
public int ticks = 20;
public int avgRandomTicks = 512;
public int maxTimeRate = 8;
public int maxTime = (60 * 60 * 24 * 30); // 30 days is the default
public String storedTimeStr = "!Dark_Green!Stored Time: [0]";
public String accumulatedTimeStr = "!Gray!Total Accumulated Time: [0]";
public String totalUses = "!Dark_Red!Total available uses: [0]";
public CompoundTag serialize()
{
CompoundTag tag = new CompoundTag();
tag.putInt(TAG_DURATION, eachUseDuration);
tag.putInt(TAG_TICKS, ticks);
tag.putInt(TAG_RANDOM_TICKS, avgRandomTicks);
tag.putInt(TAG_MAX_TIME_RATE, maxTimeRate);
tag.putString(TAG_MESSAGE_STORED_TIME, storedTimeStr);
tag.putString(TAG_MESSAGE_ACCUMULATED_TIME, accumulatedTimeStr);
tag.putString(TAG_TOTAL_USES, totalUses);
tag.putInt(TAG_STORED_TIME, maxTime);
return tag;
}
public static Bottles deserialize(CompoundTag tag)
{
Bottles bottles = new Bottles();
if(tag.contains(TAG_DURATION))
{
bottles.eachUseDuration = tag.getInt(TAG_DURATION);
}
if(tag.contains(TAG_TICKS))
bottles.ticks = tag.getInt(TAG_TICKS);
if(tag.contains(TAG_RANDOM_TICKS))
bottles.avgRandomTicks = tag.getInt(TAG_RANDOM_TICKS);
if(tag.contains(TAG_MAX_TIME_RATE))
bottles.maxTimeRate = tag.getInt(TAG_MAX_TIME_RATE);
if(tag.contains(TAG_MESSAGE_STORED_TIME))
bottles.storedTimeStr = tag.getString(TAG_MESSAGE_STORED_TIME);
if(tag.contains(TAG_MESSAGE_ACCUMULATED_TIME))
bottles.accumulatedTimeStr = tag.getString(TAG_MESSAGE_ACCUMULATED_TIME);
if(tag.contains(TAG_STORED_TIME))
bottles.maxTime = tag.getInt(TAG_STORED_TIME);
if(tag.contains(TAG_TOTAL_USES))
bottles.totalUses = tag.getString(TAG_TOTAL_USES);
return bottles;
}
}

View file

@ -0,0 +1,54 @@
package dev.zontreck.essentials.configs.server.sections;
import dev.zontreck.ariaslib.util.Lists;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.libzontreck.util.TagUtils;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringTag;
import net.minecraft.nbt.Tag;
import java.util.ArrayList;
import java.util.List;
public class CreeperHeal
{
public static final String TAG_NAME = "creeper_heal";
public static final String TAG_BLACKLIST = "blacklisted_dims";
public static final String TAG_DURATION = "duration";
public List<String> blacklistedDimensions = Lists.of("minecraft:the_nether", "minecraft:the_end");
public int duration = 40; // Once every 2 seconds
public CompoundTag serialize()
{
CompoundTag tag = new CompoundTag();
ListTag blacklist = new ListTag();
for(String dimension : blacklistedDimensions)
{
blacklist.add(StringTag.valueOf(dimension));
}
tag.put(TAG_BLACKLIST, blacklist);
tag.putInt(TAG_DURATION, duration);
return tag;
}
public static CreeperHeal deserialize(CompoundTag tag)
{
CreeperHeal heal = new CreeperHeal();
heal.duration = TagUtils.intOr(tag, TAG_DURATION, 40);
ListTag lst = tag.getList(TAG_BLACKLIST, StringTag.TAG_STRING);
heal.blacklistedDimensions.clear();
for(Tag t : lst)
{
heal.blacklistedDimensions.add(t.getAsString());
}
return heal;
}
}

View file

@ -0,0 +1,470 @@
package dev.zontreck.essentials.data;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.blocks.ModBlocks;
import net.minecraft.core.Direction;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.state.properties.*;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.client.model.generators.ConfiguredModel;
import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.client.model.generators.VariantBlockStateBuilder;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.concurrent.atomic.AtomicReference;
public class ModBlockStatesProvider extends BlockStateProvider {
public ModBlockStatesProvider(PackOutput output, ExistingFileHelper existingFileHelper) {
super(output, AriasEssentials.MODID, existingFileHelper);
}
@Override
protected void registerStatesAndModels() {
ResourceLocation[] clinkerBlock = new ResourceLocation[]{
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture3"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture4"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture5"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture6"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_texture7")
};
ResourceLocation[] clinkerStainedBlock = new ResourceLocation[]{
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture3"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture4"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture5"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture6"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/clinker_brick/clinker_brick_stained_texture7")
};
ResourceLocation[] slagBricks = new ResourceLocation[]{
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture3"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture4"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture5"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture6"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/slag_brick/slag_brick_texture7")
};
ResourceLocation[] rebarConcrete = new ResourceLocation[] {
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture3"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture4"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture5"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture6"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_texture7")
};
ResourceLocation[] rebarConcreteTile = new ResourceLocation[] {
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture3"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture4"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture5"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture6"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/concrete/rebar_concrete_tile_texture7")
};
ResourceLocation[] panzerglass = new ResourceLocation[]{
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/glass/panzerglass_block_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/glass/panzerglass_block_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/glass/panzerglass_block_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/glass/panzerglass_block_texture3")
};
ResourceLocation[] oldIndustrialWood = new ResourceLocation[]{
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/material/industrial_planks_texture0"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/material/industrial_planks_texture1"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/material/industrial_planks_texture2"),
new ResourceLocation(AriasEssentials.MODID, "engineersdecor/material/industrial_planks_texture3"),
};
variantCubeBlock(ModBlocks.CLINKER_BRICK_BLOCK, clinkerBlock);
customSlabBlock(ModBlocks.CLINKER_BRICK_SLAB, clinkerBlock);
customStairBlock(ModBlocks.CLINKER_BRICK_STAIRS, clinkerBlock);
variantCubeBlock(ModBlocks.CLINKER_BRICK_STAINED_BLOCK, clinkerStainedBlock);
customSlabBlock(ModBlocks.CLINKER_BRICK_STAINED_SLAB, clinkerStainedBlock);
customStairBlock(ModBlocks.CLINKER_BRICK_STAINED_STAIRS, clinkerStainedBlock);
wallBlock(ModBlocks.CLINKER_BRICK_WALL, new ResourceLocation(AriasEssentials.MODID, "block/engineersdecor/clinker_brick/clinker_brick_wall0"));
variantCubeBlock(ModBlocks.SLAG_BRICK_BLOCK, slagBricks);
customSlabBlock(ModBlocks.SLAG_BRICK_SLAB, slagBricks);
customStairBlock(ModBlocks.SLAG_BRICK_STAIRS, slagBricks);
wallBlock(ModBlocks.SLAG_BRICK_WALL, new ResourceLocation(AriasEssentials.MODID, "block/engineersdecor/slag_brick/slag_brick_wall0"));
variantCubeBlock(ModBlocks.REBAR_CONCRETE_BLOCK, rebarConcrete);
customSlabBlock(ModBlocks.REBAR_CONCRETE_SLAB, rebarConcrete);
customStairBlock(ModBlocks.REBAR_CONCRETE_STAIRS, rebarConcrete);
wallBlock(ModBlocks.REBAR_CONCRETE_WALL, new ResourceLocation(AriasEssentials.MODID, "block/" + rebarConcrete[0].getPath()));
variantCubeBlock(ModBlocks.REBAR_CONCRETE_TILE_BLOCK, rebarConcreteTile);
customSlabBlock(ModBlocks.REBAR_CONCRETE_TILE_SLAB, rebarConcreteTile);
customStairBlock(ModBlocks.REBAR_CONCRETE_TILE_STAIRS, rebarConcreteTile);
variantTransparentCubeBlock(ModBlocks.PANZER_GLASS_BLOCK, new ResourceLocation(AriasEssentials.MODID, "engineersdecor/glass/panzerglass_block_texture_inventory"), panzerglass);
customTransparentSlabBlock(ModBlocks.PANZER_GLASS_SLAB, panzerglass);
variantCubeBlock(ModBlocks.OLD_INDUSTRIAL_WOOD_PLANKS, oldIndustrialWood);
customSlabBlock(ModBlocks.OLD_INDUSTRIAL_WOOD_SLAB, oldIndustrialWood);
customStairBlock(ModBlocks.OLD_INDUSTRIAL_WOOD_STAIRS, oldIndustrialWood);
doorBlock(ModBlocks.OLD_INDUSTRIAL_WOOD_DOOR, new ResourceLocation(AriasEssentials.MODID, "block/engineersdecor/door/old_industrial_door_texture_bottom"), new ResourceLocation(AriasEssentials.MODID, "block/engineersdecor/door/old_industrial_door_texture_top"));
blockWithExistingModel(ModBlocks.STEEL_GRATING, "block/engineersdecor/furniture/steel_floor_grating", false);
blockWithExistingModel(ModBlocks.STEEL_GRATING_TOP, "block/engineersdecor/furniture/steel_floor_grating_top", false);
blockWithExistingModel(ModBlocks.STEEL_TABLE, "block/engineersdecor/furniture/steel_table", false);
blockWithExistingModel(ModBlocks.STEEL_CATWALK, "block/engineersdecor/furniture/steel_catwalk", false);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_TOP, "block/engineersdecor/furniture/steel_catwalk_top", false);
blockWithExistingModel(ModBlocks.STEEL_RAILING, "block/engineersdecor/furniture/steel_railing", true);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_STAIRS, "block/engineersdecor/furniture/steel_catwalk_stairs", true);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_STAIRS_LR, "block/engineersdecor/furniture/steel_catwalk_stairs_lr", true);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_STAIRS_RR, "block/engineersdecor/furniture/steel_catwalk_stairs_rr", true);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_STAIRS_DR, "block/engineersdecor/furniture/steel_catwalk_stairs_dr", true);
blockWithExistingModel(ModBlocks.STEEL_CATWALK_BLOCK, "block/engineersdecor/steel_catwalk_block", false);
blockWithExistingModel(ModBlocks.TFLIPFLOP_BLOCK, "block/logicgates/tflipflop", true);
}
private void blockWithExistingModel(RegistryObject<Block> blk, String model, boolean rotatable)
{
ResourceLocation modelLoc = new ResourceLocation(AriasEssentials.MODID, model);
ModelFile mFile = models().withExistingParent(name(blk.get()), modelLoc);
if(!rotatable)
simpleBlock(blk.get(), mFile);
else horizontalBlock(blk.get(), mFile);
simpleBlockItem(blk.get(), mFile);
}
private void doorBlock(RegistryObject<Block> blk, ResourceLocation textureTop, ResourceLocation textureBottom)
{
doorBlockWithRenderType((DoorBlock) blk.get(), textureBottom, textureTop, new ResourceLocation("translucent"));
simpleBlockItem(blk.get(), models().doorBottomLeft(name(blk.get()), textureBottom, textureTop));
}
private void wallBlock(RegistryObject<Block> blk, ResourceLocation texture)
{
wallBlock((WallBlock) blk.get(), texture);
var wallInv = models().wallInventory(name(blk.get()) + "_inventory", texture);
simpleBlockItem(blk.get(), wallInv);
}
private void blockWithItem(RegistryObject<Block> blockRegistryObject) {
simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get()));
}
private void blockWithItem(RegistryObject<Block> blockRegistryObject, ModelFile model) {
simpleBlockWithItem(blockRegistryObject.get(), model);
}
private void stairBlock(RegistryObject<Block> blk, RegistryObject<Block> texture) {
stairsBlock((StairBlock) blk.get(), blockTexture(texture.get()));
simpleBlockItem(blk.get(), stairsModel(blk.get(), texture.get()));
}
private void carpetBlock(RegistryObject<Block> blk, RegistryObject<Block> texture) {
simpleBlockWithItem(blk.get(), carpetModel(blk.get(), texture.get()));
}
private String name(Block block) {
return this.key(block).getPath();
}
private ResourceLocation key(Block block) {
return ForgeRegistries.BLOCKS.getKey(block);
}
public ModelFile stairsModel(Block block, Block texture) {
return this.models().stairs(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
}
public ModelFile carpetModel(Block block, Block texture) {
return this.models().carpet(name(block), blockTexture(texture));
}
public ModelFile slabModel(Block block, Block texture) {
return this.models().slab(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
}
private void slabBlock(RegistryObject<Block> blk, RegistryObject<Block> texture) {
slabBlock((SlabBlock) blk.get(), blockTexture(texture.get()), blockTexture(texture.get()));
simpleBlockItem(blk.get(), slabModel(blk.get(), texture.get()));
}
private void customSlabBlock(RegistryObject<Block> blockId, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
AtomicReference<ModelFile> model0 = new AtomicReference<>();
builder.forAllStates((state)->{
ConfiguredModel[] models = new ConfiguredModel[variations.length];
String appendName = "";
SlabType type = state.getValue(SlabBlock.TYPE);
if(type == SlabType.BOTTOM)
appendName = "_bottom";
else if(type == SlabType.TOP)
appendName = "_top";
else if(type == SlabType.DOUBLE)
appendName = "_double";
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile model = null;
if(type == SlabType.TOP)
model = models().slabTop(name(blockId.get()) + "_model" + i + appendName, rss, rss, rss);
else if(type == SlabType.BOTTOM)
model = models().slab(name(blockId.get()) + "_model" + i + appendName, rss, rss, rss);
else if(type == SlabType.DOUBLE)
model = models().cubeAll(name(blockId.get()) + "_model" + i + appendName, rss);
ConfiguredModel[] cfgModel = ConfiguredModel.builder().modelFile(model).build();
if(i==0 && model0.get()==null && type == SlabType.BOTTOM) model0.set(model);
models[i] = cfgModel[0];
//builder.partialState().addModels(cfgModel);
}
return models;
});
simpleBlockItem(blockId.get(), model0.get());
}
private void customStairBlock(RegistryObject<Block> blockId, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
ResourceLocation blockDefault = blockTexture(blockId.get());
AtomicReference<ModelFile> model0 = new AtomicReference<>();
builder.forAllStates((state)->{
ConfiguredModel[] models = new ConfiguredModel[variations.length];
Direction facing = (Direction)state.getValue(StairBlock.FACING);
Half half = (Half)state.getValue(StairBlock.HALF);
StairsShape shape = (StairsShape)state.getValue(StairBlock.SHAPE);
int yRot = (int)facing.getClockWise().toYRot();
if (shape == StairsShape.INNER_LEFT || shape == StairsShape.OUTER_LEFT) {
yRot += 270;
}
if (shape != StairsShape.STRAIGHT && half == Half.TOP) {
yRot += 90;
}
yRot %= 360;
boolean uvlock = yRot != 0 || half == Half.TOP;
String modelName = (shape == StairsShape.STRAIGHT) ? "" : (shape != StairsShape.INNER_LEFT && shape != StairsShape.INNER_RIGHT) ? "_outer":"_inner";
boolean straight = (shape == StairsShape.STRAIGHT);
boolean inner = (shape == StairsShape.INNER_LEFT || shape == StairsShape.INNER_RIGHT);
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile cubeModel = null;
if(straight)
cubeModel = models().stairs(
blockId.getId().getPath() + "_model"+i + modelName, // Model name
rss, rss, rss // Texture location
);
if(inner)
cubeModel = models().stairsInner(blockId.getId().getPath()+"_model"+i + modelName, rss, rss, rss);
else if(!inner && !straight)
cubeModel = models().stairsOuter(blockId.getId().getPath() + "_model"+i+modelName, rss, rss, rss);
ConfiguredModel[] cfgModel = ConfiguredModel.builder().modelFile(cubeModel).rotationX(half == Half.BOTTOM ? 0 : 180).rotationY(yRot).uvLock(uvlock).build();
if(i==0 && model0.get()==null) model0.set(cubeModel);
models[i] = cfgModel[0];
//builder.partialState().addModels(cfgModel);
}
return models;
});
simpleBlockItem(blockId.get(), model0.get());
}
private void customTransparentSlabBlock(RegistryObject<Block> blockId, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
AtomicReference<ModelFile> model0 = new AtomicReference<>();
builder.forAllStates((state)->{
ConfiguredModel[] models = new ConfiguredModel[variations.length];
String appendName = "";
SlabType type = state.getValue(SlabBlock.TYPE);
if(type == SlabType.BOTTOM)
appendName = "_bottom";
else if(type == SlabType.TOP)
appendName = "_top";
else if(type == SlabType.DOUBLE)
appendName = "_double";
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile model = null;
if(type == SlabType.TOP)
model = models().slabTop(name(blockId.get()) + "_model" + i + appendName, rss, rss, rss).renderType(new ResourceLocation("translucent"));
else if(type == SlabType.BOTTOM)
model = models().slab(name(blockId.get()) + "_model" + i + appendName, rss, rss, rss).renderType(new ResourceLocation("translucent"));
else if(type == SlabType.DOUBLE)
model = models().cubeAll(name(blockId.get()) + "_model" + i + appendName, rss).renderType(new ResourceLocation("translucent"));
ConfiguredModel[] cfgModel = ConfiguredModel.builder().modelFile(model).build();
if(i==0 && model0.get()==null && type == SlabType.BOTTOM) model0.set(model);
models[i] = cfgModel[0];
//builder.partialState().addModels(cfgModel);
}
return models;
});
simpleBlockItem(blockId.get(), model0.get());
}
private void customTransparentStairBlock(RegistryObject<Block> blockId, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
ResourceLocation blockDefault = blockTexture(blockId.get());
AtomicReference<ModelFile> model0 = new AtomicReference<>();
builder.forAllStates((state)->{
ConfiguredModel[] models = new ConfiguredModel[variations.length];
Direction facing = (Direction)state.getValue(StairBlock.FACING);
Half half = (Half)state.getValue(StairBlock.HALF);
StairsShape shape = (StairsShape)state.getValue(StairBlock.SHAPE);
int yRot = (int)facing.getClockWise().toYRot();
if (shape == StairsShape.INNER_LEFT || shape == StairsShape.OUTER_LEFT) {
yRot += 270;
}
if (shape != StairsShape.STRAIGHT && half == Half.TOP) {
yRot += 90;
}
yRot %= 360;
boolean uvlock = yRot != 0 || half == Half.TOP;
String modelName = (shape == StairsShape.STRAIGHT) ? "" : (shape != StairsShape.INNER_LEFT && shape != StairsShape.INNER_RIGHT) ? "_outer":"_inner";
boolean straight = (shape == StairsShape.STRAIGHT);
boolean inner = (shape == StairsShape.INNER_LEFT || shape == StairsShape.INNER_RIGHT);
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile cubeModel = null;
if(straight)
cubeModel = models().stairs(
blockId.getId().getPath() + "_model"+i + modelName, // Model name
rss, rss, rss // Texture location
).renderType(new ResourceLocation("translucent"));
if(inner)
cubeModel = models().stairsInner(blockId.getId().getPath()+"_model"+i + modelName, rss, rss, rss).renderType(new ResourceLocation("translucent"));
else if(!inner && !straight)
cubeModel = models().stairsOuter(blockId.getId().getPath() + "_model"+i+modelName, rss, rss, rss).renderType(new ResourceLocation("translucent"));
ConfiguredModel[] cfgModel = ConfiguredModel.builder().modelFile(cubeModel).rotationX(half == Half.BOTTOM ? 0 : 180).rotationY(yRot).uvLock(uvlock).build();
if(i==0 && model0.get()==null) model0.set(cubeModel);
models[i] = cfgModel[0];
//builder.partialState().addModels(cfgModel);
}
return models;
});
simpleBlockItem(blockId.get(), model0.get());
}
public void variantCubeBlock(RegistryObject<Block> blockId, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
ResourceLocation blockDefault = blockTexture(blockId.get());
ModelFile model0 = null;
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile cubeModel = models().cubeAll(
blockId.getId().getPath() + "_model"+i, // Model name
rss // Texture location
);
var cfgModel = ConfiguredModel.builder().modelFile(cubeModel).build();
if(i==0)model0 = cubeModel;
builder.partialState().addModels(cfgModel);
}
simpleBlockItem(blockId.get(), model0);
}
public void variantTransparentCubeBlock(RegistryObject<Block> blockId, ResourceLocation inventory, ResourceLocation... variations) {
VariantBlockStateBuilder builder = getVariantBuilder(blockId.get());
ResourceLocation blockDefault = blockTexture(blockId.get());
ModelFile model0 = models().cubeAll(name(blockId.get()) + "_inventory", new ResourceLocation(inventory.getNamespace(), "block/" + inventory.getPath())).renderType(new ResourceLocation("translucent"));
for (int i = 0; i < variations.length; i++) {
ResourceLocation texture = variations[i];
ResourceLocation rss = new ResourceLocation(texture.getNamespace(), "block/" + texture.getPath());
ModelFile cubeModel = models().cubeAll(
blockId.getId().getPath() + "_model"+i, // Model name
rss // Texture location
).renderType(new ResourceLocation("translucent"));
var cfgModel = ConfiguredModel.builder().modelFile(cubeModel).build();
//if(i==0)model0 = cubeModel;
builder.partialState().addModels(cfgModel);
}
simpleBlockItem(blockId.get(), model0);
}
}

View file

@ -0,0 +1,28 @@
package dev.zontreck.essentials.data;
import dev.zontreck.essentials.AriasEssentials;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(modid = AriasEssentials.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModDatagen
{
@SubscribeEvent
public static void gatherData(GatherDataEvent event)
{
DataGenerator gen = event.getGenerator();
PackOutput output = gen.getPackOutput();
ExistingFileHelper helper = event.getExistingFileHelper();
gen.addProvider(true, new ModBlockStatesProvider(output, helper));
gen.addProvider(true, new ModItemModelsProvider(output,helper));
gen.addProvider(true, ModLootTablesProvider.create(output));
}
}

View file

@ -0,0 +1,58 @@
package dev.zontreck.essentials.data;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.items.ModItems;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraftforge.client.model.generators.ItemModelBuilder;
import net.minecraftforge.client.model.generators.ItemModelProvider;
import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.Objects;
public class ModItemModelsProvider extends ItemModelProvider
{
public ModItemModelsProvider(PackOutput output, ExistingFileHelper helper)
{
super(output, AriasEssentials.MODID, helper);
}
@Override
protected void registerModels() {
item(ModItems.METAL_BAR);
item(ModItems.TIME_IN_A_BOTTLE);
/*
Engineer's Decor Items
*/
/*
DEPRECATED ITEMS
*/
}
private ItemModelBuilder item(RegistryObject<Item> ite) {
return this.item((ResourceLocation) Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(ite.get())));
}
private ItemModelBuilder item(ResourceLocation item) {
return (ItemModelBuilder)((ItemModelBuilder)((ItemModelBuilder)this.getBuilder(item.toString())).parent(new ModelFile.UncheckedModelFile("item/generated"))).texture("layer0", new ResourceLocation(item.getNamespace(), "item/" + item.getPath()));
}
private ItemModelBuilder deprecated(RegistryObject<Item> ite) {
return this.deprecated((ResourceLocation) Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(ite.get())));
}
private ItemModelBuilder deprecated(ResourceLocation item) {
return (ItemModelBuilder)((ItemModelBuilder)((ItemModelBuilder)this.getBuilder(item.toString())).parent(new ModelFile.UncheckedModelFile("item/generated"))).texture("layer0", new ResourceLocation(item.getNamespace(), "item/deprecated"));
}
}

View file

@ -0,0 +1,20 @@
package dev.zontreck.essentials.data;
import dev.zontreck.essentials.data.loot.ModBlockLootTablesProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import java.util.List;
import java.util.Set;
public class ModLootTablesProvider
{
public static LootTableProvider create(PackOutput output)
{
return new LootTableProvider(output, Set.of(), List.of(
new LootTableProvider.SubProviderEntry(ModBlockLootTablesProvider::new, LootContextParamSets.BLOCK)
));
}
}

View file

@ -0,0 +1,7 @@
Datagen
======
____________
This is the datagen system for Aria's Essentials.
Please exercise caution when updating this, and test everything.

View file

@ -0,0 +1,111 @@
package dev.zontreck.essentials.data.loot;
import dev.zontreck.essentials.blocks.ModBlocks;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer;
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount;
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
import net.minecraftforge.registries.RegistryObject;
import java.util.Set;
public class ModBlockLootTablesProvider extends BlockLootSubProvider
{
public ModBlockLootTablesProvider()
{
super(Set.of(), FeatureFlags.REGISTRY.allFlags());
}
@Override
protected void generate() {
/*
Engineer's Decor Blocks
*/
dropSelf(ModBlocks.CLINKER_BRICK_BLOCK.get());
dropSelf(ModBlocks.CLINKER_BRICK_RECESSED.get());
dropSelf(ModBlocks.CLINKER_BRICK_VERTICALLY_SLIT.get());
createSlabItemTable(ModBlocks.CLINKER_BRICK_SLAB);
dropSelf(ModBlocks.CLINKER_BRICK_STAIRS.get());
dropSelf(ModBlocks.CLINKER_BRICK_STAINED_BLOCK.get());
createSlabItemTable(ModBlocks.CLINKER_BRICK_STAINED_SLAB);
dropSelf(ModBlocks.CLINKER_BRICK_STAINED_STAIRS.get());
dropSelf(ModBlocks.CLINKER_BRICK_WALL.get());
dropSelf(ModBlocks.SLAG_BRICK_BLOCK.get());
createSlabItemTable(ModBlocks.SLAG_BRICK_SLAB);
dropSelf(ModBlocks.SLAG_BRICK_WALL.get());
dropSelf(ModBlocks.SLAG_BRICK_STAIRS.get());
dropSelf(ModBlocks.REBAR_CONCRETE_BLOCK.get());
createSlabItemTable(ModBlocks.REBAR_CONCRETE_SLAB);
dropSelf(ModBlocks.REBAR_CONCRETE_STAIRS.get());
dropSelf(ModBlocks.REBAR_CONCRETE_WALL.get());
dropSelf(ModBlocks.REBAR_CONCRETE_TILE_BLOCK.get());
createSlabItemTable(ModBlocks.REBAR_CONCRETE_TILE_SLAB);
dropSelf(ModBlocks.REBAR_CONCRETE_TILE_STAIRS.get());
dropSelf(ModBlocks.PANZER_GLASS_BLOCK.get());
createSlabItemTable(ModBlocks.PANZER_GLASS_SLAB);
dropSelf(ModBlocks.OLD_INDUSTRIAL_WOOD_PLANKS.get());
createSlabItemTable(ModBlocks.OLD_INDUSTRIAL_WOOD_SLAB);
dropSelf(ModBlocks.OLD_INDUSTRIAL_WOOD_STAIRS.get());
createDoorTable(ModBlocks.OLD_INDUSTRIAL_WOOD_DOOR);
dropSelf(ModBlocks.STEEL_TABLE.get());
dropSelf(ModBlocks.STEEL_CATWALK.get());
dropSelf(ModBlocks.STEEL_RAILING.get());
dropSelf(ModBlocks.STEEL_CATWALK_STAIRS.get());
dropSelf(ModBlocks.STEEL_CATWALK_STAIRS_LR.get());
dropSelf(ModBlocks.STEEL_CATWALK_STAIRS_RR.get());
dropSelf(ModBlocks.STEEL_CATWALK_STAIRS_DR.get());
dropSelf(ModBlocks.STEEL_GRATING.get());
dropSelf(ModBlocks.STEEL_GRATING_TOP.get());
dropSelf(ModBlocks.STEEL_CATWALK_TOP.get());
dropSelf(ModBlocks.STEEL_CATWALK_BLOCK.get());
dropSelf(ModBlocks.TFLIPFLOP_BLOCK.get());
}
private void createDoorTable(RegistryObject<Block> blk)
{
var loot = createDoorTable(blk.get());
add(blk.get(), loot);
}
private void createSlabItemTable(RegistryObject<Block> slab)
{
var loot = createSlabItemTable(slab.get());
add(slab.get(), loot);
}
@Override
protected Iterable<Block> getKnownBlocks() {
return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator;
}
protected LootTable.Builder createCopperOreDrops(Block block, Item rawOre) {
return createSilkTouchDispatchTable(block, (LootPoolEntryContainer.Builder) this.applyExplosionDecay(block, LootItem.lootTableItem(rawOre).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 5.0F))).apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE))));
}
protected LootTable.Builder createOreDrop(Block block, Item rawOre) {
return createSilkTouchDispatchTable(block, (LootPoolEntryContainer.Builder)this.applyExplosionDecay(block, LootItem.lootTableItem(rawOre).apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE))));
}
}

View file

@ -0,0 +1,27 @@
package dev.zontreck.essentials.entities;
import dev.zontreck.essentials.AriasEssentials;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModEntities
{
public static final DeferredRegister<EntityType<?>> REGISTER = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, AriasEssentials.MODID);
public static RegistryObject<EntityType<TimeBoostEntity>> TIAB_ENTITY = REGISTER.register("tiab_entity_type", ()->EntityType.Builder.<TimeBoostEntity>of(TimeBoostEntity::new, MobCategory.MISC)
.sized(0.1f, 0.1f)
.build(new ResourceLocation(AriasEssentials.MODID, "tiab_entity_type").toString())
);
public static void register(IEventBus bus) {
REGISTER.register(bus);
}
}

View file

@ -0,0 +1,128 @@
package dev.zontreck.essentials.entities;
import dev.zontreck.essentials.configs.NBTKeys;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.network.NetworkHooks;
public class TimeBoostEntity extends Entity
{
private static final EntityDataAccessor<Integer> timeRate = SynchedEntityData.defineId(TimeBoostEntity.class, EntityDataSerializers.INT);
private int remainingTime;
private BlockPos position;
public TimeBoostEntity(EntityType entityType, Level worldIn) {
super(entityType, worldIn);
entityData.set(timeRate, 1);
}
public TimeBoostEntity(Level worldIn, BlockPos pos, double posX, double posY, double posZ) {
this(ModEntities.TIAB_ENTITY.get(), worldIn);
this.position = pos;
this.setPos(posX, posY, posZ);
}
@Override
protected void defineSynchedData() {
entityData.define(timeRate, 1);
}
@Override
protected void readAdditionalSaveData(CompoundTag compound) {
entityData.set(timeRate, compound.getInt(NBTKeys.ENTITY_TIME_RATE));
setRemainingTime(compound.getInt(NBTKeys.ENTITY_REMAINING_TIME));
this.position = NbtUtils.readBlockPos(compound.getCompound(NBTKeys.ENTITY_POS));
}
@Override
protected void addAdditionalSaveData(CompoundTag compound) {
compound.putInt(NBTKeys.ENTITY_TIME_RATE, getTimeRate());
compound.putInt(NBTKeys.ENTITY_REMAINING_TIME, getRemainingTime());
compound.put(NBTKeys.ENTITY_POS, NbtUtils.writeBlockPos(this.position));
}
@Override
public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
public int getTimeRate() {
return entityData.get(timeRate);
}
public void setTimeRate(int rate) {
entityData.set(timeRate, rate);
}
public int getRemainingTime() {
return this.remainingTime;
}
public void setRemainingTime(int remainingTime) {
this.remainingTime = remainingTime;
}
@Override
public void tick() {
super.tick();
Level level = level();
if(position == null)
{
if(!level.isClientSide)
{
remove(RemovalReason.KILLED);
}
return;
}
BlockState state = level.getBlockState(position);
ServerLevel serverWorld = level.getServer().getLevel(level.dimension());
BlockEntity targetTE = level.getBlockEntity(position);
for (int i = 0; i < getTimeRate(); i++) {
if (targetTE != null) {
// if is TileEntity (furnace, brewing stand, ...)
BlockEntityTicker<BlockEntity> ticker = targetTE.getBlockState().getTicker(level, (BlockEntityType<BlockEntity>) targetTE.getType());
if (ticker != null) {
ticker.tick(level, position, targetTE.getBlockState(), targetTE);
}
} else if (serverWorld != null && state.isRandomlyTicking()) {
// if is random ticket block (grass block, sugar cane, wheat or sapling, ...)
if (level.random.nextInt(AEServerConfig.getInstance().bottles.avgRandomTicks) == 0) {
state.randomTick(serverWorld, position, level.random);
}
} else {
// block entity broken
this.remove(RemovalReason.KILLED);
break;
}
}
this.remainingTime -= 1;
if (this.remainingTime <= 0 && !level.isClientSide) {
this.remove(RemovalReason.KILLED);
}
}
}

View file

@ -0,0 +1,34 @@
package dev.zontreck.essentials.events;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueueRegistry;
import dev.zontreck.libzontreck.memory.world.SavedBlock;
import dev.zontreck.libzontreck.vectors.Vector3i;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.event.level.ExplosionEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.concurrent.TimeUnit;
public class MainEventHandlers
{
@SubscribeEvent
public static void onExplosionEvent(ExplosionEvent event)
{
for(BlockPos pos : event.getExplosion().getToBlow())
{
SavedBlock sb = SavedBlock.takeSnapshot(new Vector3i(pos), event.getLevel());
BlockRestoreQueue queue = BlockRestoreQueueRegistry.getQueue("creeperheal");
queue.enqueueBlock(sb);
event.getLevel().removeBlockEntity(pos);
event.getLevel().setBlock(pos, Blocks.AIR.defaultBlockState(), Block.UPDATE_CLIENTS, 0);
}
}
}

View file

@ -1,6 +1,5 @@
package dev.zontreck.essentials.events;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;

View file

@ -15,17 +15,4 @@ import java.util.List;
import java.util.concurrent.CompletableFuture;
public class HomesSuggestionProvider {
public static SuggestionProvider<CommandSourceStack> PROVIDER = (ctx,suggestionsBuilder)->{
Homes homes = HomesProvider.getHomesForPlayer(ctx.getSource().getPlayerOrException().getUUID().toString());
List<String> homesList = new ArrayList<>();
for(Home home : homes.getList())
{
homesList.add(home.homeName);
}
return SharedSuggestionProvider.suggest((String[]) homesList.toArray(), suggestionsBuilder);
};
}

View file

@ -0,0 +1,49 @@
package dev.zontreck.essentials.imc;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.antiexplode.CreeperHealQueue;
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
import dev.zontreck.essentials.commands.teleport.TeleportContainer;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.essentials.util.BackPositionCaches;
import dev.zontreck.libzontreck.config.ServerConfig;
import dev.zontreck.libzontreck.events.BlockRestoreQueueRegistrationEvent;
import dev.zontreck.libzontreck.events.TeleportEvent;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueueRegistry;
import dev.zontreck.libzontreck.memory.world.BlockRestoreRunner;
import dev.zontreck.libzontreck.memory.world.SavedBlock;
import dev.zontreck.libzontreck.vectors.Vector3i;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.phys.Vec2;
import net.minecraftforge.event.level.ExplosionEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.Timer;
import java.util.concurrent.TimeUnit;
public class Events
{
@SubscribeEvent
public static void onTeleportRequest(TeleportEvent ev)
{
ev.setCanceled(true);
TeleportActioner.ApplyTeleportEffect(ev.getPlayer());
TeleportContainer container = new TeleportContainer(ev.getPlayer(), ev.getPosition().Position.asMinecraftVector(), Vec2.ZERO, ev.getPosition().getActualDimension());
TeleportActioner.PerformTeleport(container, false);
}
@SubscribeEvent
public static void onRegisterRestoreQueues (BlockRestoreQueueRegistrationEvent event)
{
CreeperHealQueue queue = new CreeperHealQueue();
event.register(queue);
queue.schedule(AEServerConfig.getInstance().creeperHeal.duration * 50L, TimeUnit.MILLISECONDS);
}
}

View file

@ -0,0 +1,39 @@
package dev.zontreck.essentials.items;
import dev.zontreck.essentials.AriasEssentials;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
@Mod.EventBusSubscriber(modid = AriasEssentials.MODID, value = Dist.CLIENT)
public class CreativeModeTabs {
public static DeferredRegister<CreativeModeTab> REGISTER = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, AriasEssentials.MODID);
public static void register(IEventBus bus) {
REGISTER.register(bus);
}
public static final List<Supplier<? extends ItemLike>> AE_TAB_ITEMS = new ArrayList<>();
public static RegistryObject<CreativeModeTab> AE_GAME_TAB = REGISTER.register("ariasessentials", ()->CreativeModeTab.builder()
.icon(ModItems.TIME_IN_A_BOTTLE.get()::getDefaultInstance)
.title(Component.translatable("itemGroup.tabs.ariasessentials"))
.displayItems((display, output) -> AE_TAB_ITEMS.forEach(it->output.accept(it.get())))
.build());
public static <T extends Item> RegistryObject<T> addToAETab(RegistryObject<T> item)
{
AE_TAB_ITEMS.add(item);
return item;
}
}

View file

@ -0,0 +1,11 @@
package dev.zontreck.essentials.items;
import dev.zontreck.essentials.AriasEssentials;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(modid = AriasEssentials.MODID)
public class EventHandlers
{
}

View file

@ -0,0 +1,22 @@
package dev.zontreck.essentials.items;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.items.implementation.TimeBottle;
import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModItems
{
public static DeferredRegister<Item> REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, AriasEssentials.MODID);
public static void register(IEventBus bus) {
REGISTRY.register(bus);
}
public static RegistryObject<Item> TIME_IN_A_BOTTLE = CreativeModeTabs.addToAETab(REGISTRY.register("tiab", ()->new TimeBottle()));
public static RegistryObject<Item> METAL_BAR = CreativeModeTabs.addToAETab(REGISTRY.register("metal_bar", ()->new Item(new Item.Properties())));
}

View file

@ -0,0 +1,146 @@
package dev.zontreck.essentials.items.abstraction;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.essentials.entities.TimeBoostEntity;
import dev.zontreck.essentials.util.SoundUtilities;
import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import java.util.Optional;
public abstract class AbstractBottle extends Item {
private static final String[] NOTES = {"C", "D", "E", "F", "G2", "A2", "B2", "C2", "D2", "E2", "F2"};
public AbstractBottle() {
super(new Properties().stacksTo(1));
}
@Override
public InteractionResult useOn(UseOnContext context) {
Level level = context.getLevel();
if (level.isClientSide) {
return InteractionResult.PASS;
}
BlockPos pos = context.getClickedPos();
BlockState blockState = level.getBlockState(pos);
BlockEntity targetTE = level.getBlockEntity(pos);
ItemStack stack = context.getItemInHand();
Player player = context.getPlayer();
if (targetTE == null && !blockState.isRandomlyTicking()) {
return InteractionResult.FAIL;
}
int nextRate = 1;
int energyRequired = getEnergyCost(nextRate);
boolean isCreativeMode = player != null && player.isCreative();
Optional<TimeBoostEntity> o = level.getEntitiesOfClass(TimeBoostEntity.class, new AABB(pos)).stream().findFirst();
if (o.isPresent()) {
TimeBoostEntity entityTA = o.get();
int currentRate = entityTA.getTimeRate();
if (currentRate >= Math.pow(2, AEServerConfig.getInstance().bottles.maxTimeRate - 1)) {
return InteractionResult.SUCCESS;
}
nextRate = currentRate * 2;
energyRequired = getEnergyCost(nextRate);
if (!canUse(stack, isCreativeMode, energyRequired)) {
return InteractionResult.SUCCESS;
}
entityTA.setTimeRate(nextRate);
entityTA.setRemainingTime(entityTA.getRemainingTime() + AEServerConfig.getInstance().bottles.eachUseDuration);
} else {
// First use
if (!canUse(stack, isCreativeMode, energyRequired)) {
return InteractionResult.SUCCESS;
}
TimeBoostEntity entityTA = new TimeBoostEntity(level, pos, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5);
entityTA.setRemainingTime(getEachUseDuration());
level.addFreshEntity(entityTA);
}
if (!isCreativeMode) {
this.applyDamage(stack, energyRequired);
}
playSound(level, pos, nextRate);
return InteractionResult.SUCCESS;
}
protected int getEachUseDuration() {
return AEServerConfig.getInstance().bottles.ticks * AEServerConfig.getInstance().bottles.eachUseDuration;
}
public int getEnergyCost(int timeRate) {
if (timeRate <= 1) return getEachUseDuration();
return timeRate / 2 * getEachUseDuration();
}
public boolean canUse(ItemStack stack, boolean isCreativeMode, int energyRequired) {
return getStoredEnergy(stack) >= energyRequired || isCreativeMode;
}
protected abstract int getStoredEnergy(ItemStack stack);
protected abstract void setStoredEnergy(ItemStack stack, int energy);
protected abstract void applyDamage(ItemStack stack, int damage);
public void playSound(Level level, BlockPos pos, int nextRate) {
switch (nextRate) {
case 1:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[0]);
break;
case 2:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[1]);
break;
case 4:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[2]);
break;
case 8:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[3]);
break;
case 16:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[4]);
break;
case 32:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[5]);
break;
case 64:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[6]);
break;
case 128:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[7]);
break;
case 256:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[8]);
break;
case 512:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[9]);
break;
default:
SoundUtilities.playNoteBlockHarpSound(level, pos, NOTES[10]);
}
}
@Override
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
return !ItemStack.isSameItem(oldStack, newStack);
}
}

View file

@ -0,0 +1,101 @@
package dev.zontreck.essentials.items.implementation;
import dev.zontreck.ariaslib.util.TimeUtil;
import dev.zontreck.essentials.configs.NBTKeys;
import dev.zontreck.essentials.configs.server.AEServerConfig;
import dev.zontreck.essentials.items.abstraction.AbstractBottle;
import dev.zontreck.essentials.util.StylesUtil;
import dev.zontreck.libzontreck.util.ChatHelpers;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import java.util.List;
public class TimeBottle extends AbstractBottle
{
public TimeBottle() {
super();
}
@Override
public boolean isFoil(ItemStack stack) {
sanityCheck(stack);
return stack.getTag().contains(NBTKeys.STORED_TIME);
}
private void sanityCheck(ItemStack stack) {
if(!stack.hasTag() || stack.getTag()==null)
{
stack.setTag(new CompoundTag());
}
}
@Override
public void appendHoverText(ItemStack itemStack, Level world, List<Component> tooltip, TooltipFlag flag) {
super.appendHoverText(itemStack, world, tooltip, flag);
int storedTime = this.getStoredEnergy(itemStack);
int totalAccumulatedTime = this.getTotalAccumulatedTime(itemStack);
tooltip.add(ChatHelpers.macro(AEServerConfig.getInstance().bottles.storedTimeStr, TimeUtil.secondsToTimeNotation(TimeUtil.ticksToSeconds(storedTime, AEServerConfig.getInstance().bottles.ticks)).toString()));
tooltip.add(ChatHelpers.macro(AEServerConfig.getInstance().bottles.accumulatedTimeStr, TimeUtil.secondsToTimeNotation(TimeUtil.ticksToSeconds(totalAccumulatedTime, AEServerConfig.getInstance().bottles.ticks)).toString()));
tooltip.add(ChatHelpers.macro(AEServerConfig.getInstance().bottles.totalUses, "" + TimeUtil.ticksToSeconds(storedTime, AEServerConfig.getInstance().bottles.ticks) / AEServerConfig.getInstance().bottles.eachUseDuration));
}
@Override
public int getStoredEnergy(ItemStack stack) {
return stack.getOrCreateTag().getInt(NBTKeys.STORED_TIME);
}
@Override
public void setStoredEnergy(ItemStack stack, int energy) {
int newStoredTime = Math.min(energy, AEServerConfig.getInstance().bottles.maxTime * 20);
stack.getOrCreateTag().putInt(NBTKeys.STORED_TIME, newStoredTime);
}
@Override
public void applyDamage(ItemStack stack, int damage) {
setStoredEnergy(stack, getStoredEnergy(stack) - damage);
}
public int getTotalAccumulatedTime(ItemStack stack) {
return stack.getOrCreateTag().getInt(NBTKeys.TOTAL_ACCUMULATED_TIME);
}
public void setTotalAccumulatedTime(ItemStack stack, int value) {
int newValue = Math.min(value, AEServerConfig.getInstance().bottles.maxTime * 20);
stack.getOrCreateTag().putInt(NBTKeys.TOTAL_ACCUMULATED_TIME, newValue);
}
@Override
public void inventoryTick(ItemStack itemStack, Level level, Entity entity, int itemSlot, boolean isSelected) {
super.inventoryTick(itemStack, level, entity, itemSlot, isSelected);
if (level.isClientSide) {
return;
}
if (level.getGameTime() % AEServerConfig.getInstance().bottles.ticks == 0) {
int storedTime = this.getStoredEnergy(itemStack);
if (storedTime < (AEServerConfig.getInstance().bottles.maxTime * 20)) {
this.setStoredEnergy(itemStack, storedTime + AEServerConfig.getInstance().bottles.ticks);
}
int totalAccumulatedTime = this.getTotalAccumulatedTime(itemStack);
if (totalAccumulatedTime < (AEServerConfig.getInstance().bottles.maxTime * 20)) {
this.setTotalAccumulatedTime(itemStack, totalAccumulatedTime + AEServerConfig.getInstance().bottles.ticks);
}
}
}
}

View file

@ -2,7 +2,8 @@ package dev.zontreck.essentials.rtp;
import dev.zontreck.ariaslib.util.Lists;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import dev.zontreck.libzontreck.vectors.Vector3i;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@ -30,7 +31,7 @@ public class RTP {
private int tries;
public RTP(ServerLevel level) {
position = new WorldPosition(new Vector3(0, -60, 0), WorldPosition.getDim(level));
position = new WorldPosition(new Vector3d(0, -60, 0), WorldPosition.getDim(level));
dimension = position.getActualDimension();
if (position.getActualDimension().dimensionType().hasCeiling()) {
@ -105,11 +106,11 @@ public class RTP {
Random rng = new Random(Instant.now().getEpochSecond());
Vector3 pos;
Vector3d pos;
BlockPos bpos;
do {
pos = new Vector3(rng.nextDouble(0xFFFF), -60, rng.nextDouble(0xFFFF));
pos = new Vector3d(rng.nextDouble(0xFFFF), -60, rng.nextDouble(0xFFFF));
pos = spiralPositions(pos);
position.Position = pos;
@ -124,18 +125,18 @@ public class RTP {
ChunkStatus status = ChunkStatus.SPAWN;
dimension.getChunk(bpos.getX() >> 4, bpos.getZ() >> 4, status);
Vector3 pos = new Vector3(dimension.getHeightmapPos(heightMapType, bpos));
Vector3d pos = new Vector3d(dimension.getHeightmapPos(heightMapType, bpos));
return dimension.getWorldBorder().isWithinBounds(pos.asBlockPos());
}
private Vector3 spiralPositions(Vector3 position) {
Vec3i posi = position.asMinecraftVec3i();
private Vector3d spiralPositions(Vector3d position) {
Vec3i posi = position.asVec3i();
BlockPos startBlockPos = new BlockPos(posi.getX(), dimension.getSeaLevel(), posi.getZ());
for (BlockPos pos : BlockPos.spiralAround(startBlockPos, 16, Direction.WEST, Direction.NORTH)) {
if (isSafe(pos)) {
// Set the new position
return new Vector3(pos);
return new Vector3d(pos);
}
}

View file

@ -26,6 +26,6 @@ public class RTPCaches
public static void deserialize(CompoundTag tag)
{
}
}

View file

@ -11,6 +11,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.server.ServerLifecycleHooks;
public class RTPCachesEventHandlers
{
@ -21,7 +22,7 @@ public class RTPCachesEventHandlers
{
if(!AriasEssentials.ALIVE) return;
lastTick++;
MinecraftServer server = LibZontreck.THE_SERVER;
MinecraftServer server = ServerLifecycleHooks.getCurrentServer();
if(lastTick>=400)
{
lastTick=0;

View file

@ -1,9 +1,8 @@
package dev.zontreck.essentials.rtp;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
import dev.zontreck.essentials.commands.teleport.TeleportContainer;
import dev.zontreck.libzontreck.vectors.Vector3;
import dev.zontreck.libzontreck.vectors.Vector3d;
import dev.zontreck.libzontreck.vectors.WorldPosition;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
@ -20,9 +19,9 @@ public class RandomPositionFactory {
public static RTP beginRTPSearch(ServerLevel level)
{
RTP tmp = new RTP(level);
tmp.position = new WorldPosition(new Vector3(0,0,0), WorldPosition.getDim(level));
tmp.position = new WorldPosition(new Vector3d(0,0,0), WorldPosition.getDim(level));
Thread tx = new Thread(new RandomPositionLocator(tmp));
tx.setName("RTPTask-"+ DelayedExecutorService.getNext());
tx.setName("RTPTask");
tx.start();
return tmp;

View file

@ -1,7 +1,6 @@
package dev.zontreck.essentials.rtp;
import dev.zontreck.ariaslib.terminal.Task;
import dev.zontreck.ariaslib.util.DelayedExecutorService;
import dev.zontreck.essentials.AriasEssentials;
import dev.zontreck.essentials.events.RTPFoundEvent;
import net.minecraft.server.level.ServerLevel;

View file

@ -0,0 +1,47 @@
package dev.zontreck.essentials.util;
import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.level.Level;
/**
* {@link SoundUtilities#playNoteBlockHarpSound(Level, BlockPos, String)} was taken/derrived from Time-in-a-bottle github.
*/
public class SoundUtilities {
public static void playNoteBlockHarpSound(Level level, BlockPos pos, String note) {
// https://minecraft.gamepedia.com/Note_Block
switch (note) {
// Octave 1
case "F#" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.5F);
case "G" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.529732F);
case "G#" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.561231F);
case "A" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.594604F);
case "A#" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.629961F);
case "B" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.667420F);
case "C" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.707107F);
case "C#" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.749154F);
case "D" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.793701F);
case "D#" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.840896F);
case "E" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.890899F);
case "F" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 0.943874F);
// Octave 2
case "F#2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1F);
case "G2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.059463F);
case "G#2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.122462F);
case "A2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.189207F);
case "A#2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.259921F);
case "B2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.334840F);
case "C2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.414214F);
case "C#2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.498307F);
case "D2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.587401F);
case "D#2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.681793F);
case "E2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.781797F);
case "F2" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 1.887749F);
case "F#3" -> level.playSound(null, pos, SoundEvents.NOTE_BLOCK_HARP.get(), SoundSource.BLOCKS, 0.5F, 2F);
}
}
}

View file

@ -0,0 +1,10 @@
package dev.zontreck.essentials.util;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Style;
public class StylesUtil {
public static final Style GREEN = Style.EMPTY.applyFormat(ChatFormatting.GREEN);
public static final Style GRAY = Style.EMPTY.applyFormat(ChatFormatting.GRAY);
}

View file

@ -0,0 +1,19 @@
{
"variants": {
"facing=north": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_recessed_model"
},
"facing=south": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_recessed_model",
"y": 180
},
"facing=west": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_recessed_model",
"y": 270
},
"facing=east": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_recessed_model",
"y": 90
}
}
}

View file

@ -0,0 +1,25 @@
{
"variants": {
"facing=north": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_corner_model"
},
"facing=south": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_corner_model",
"y": 180
},
"facing=west": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_corner_model",
"y": 270
},
"facing=east": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_corner_model",
"y": 90
},
"facing=up": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_up_model"
},
"facing=down": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_sastor_down_model"
}
}
}

View file

@ -0,0 +1,19 @@
{
"variants": {
"facing=north": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_vertically_slit_model"
},
"facing=south": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_vertically_slit_model",
"y": 180
},
"facing=west": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_vertically_slit_model",
"y": 270
},
"facing=east": {
"model": "ariasessentials:block/engineersdecor/brick/clinker_brick_vertically_slit_model",
"y": 90
}
}
}

View file

@ -1,4 +1,50 @@
{
"itemGroup.tabs.ariasessentials": "Aria's Essentials",
"item.ariasessentials.tiab": "Time in a Bottle",
"item.ariasessentials.eiab": "Energy in a Bottle",
"item.ariasessentials.metal_bar": "Metal Bar",
"block.ariasessentials.clinker_brick_block": "Clinker Brick Block",
"block.ariasessentials.clinker_brick_wall": "Clinker Brick Wall",
"block.ariasessentials.clinker_brick_recessed": "Recessed Clinker Brick",
"block.ariasessentials.clinker_brick_vertically_slit": "Vertically Slit Clinker Bricks",
"block.ariasessentials.clinker_brick_slab": "Clinker Brick Slab",
"block.ariasessentials.clinker_brick_stairs": "Clinker Brick Stairs",
"block.ariasessentials.clinker_brick_stained_block": "Stained Clinker Brick Block",
"block.ariasessentials.clinker_brick_stained_slab": "Stained Clinker Brick Slab",
"block.ariasessentials.clinker_brick_stained_stairs": "Stained Clinker Brick Stairs",
"block.ariasessentials.clinker_brick_sastor_corner_block": "Sandstone Ornated Clinker Brick",
"block.ariasessentials.slag_brick_block": "Slag Brick Block",
"block.ariasessentials.slag_brick_slab": "Slag Brick Slab",
"block.ariasessentials.slag_brick_stairs": "Slag Brick Stairs",
"block.ariasessentials.slag_brick_wall": "Slag Brick Wall",
"block.ariasessentials.rebar_concrete": "Rebar Concrete Block",
"block.ariasessentials.rebar_concrete_slab": "Rebar Concrete Slab",
"block.ariasessentials.rebar_concrete_stairs": "Rebar Concrete Stairs",
"block.ariasessentials.rebar_concrete_tile": "Rebar Concrete Tile",
"block.ariasessentials.rebar_concrete_tile_slab": "Rebar Concrete Tile Slab",
"block.ariasessentials.rebar_concrete_tile_stairs": "Rebar Concrete Tile Stairs",
"block.ariasessentials.rebar_concrete_wall": "Rebar Concrete Wall",
"block.ariasessentials.panzerglass_block": "Panzer Glass Block",
"block.ariasessentials.panzerglass_slab": "Panzer Glass Slab",
"block.ariasessentials.old_industrial_wood_door": "Old Industrial Wood Door",
"block.ariasessentials.old_industrial_wood_planks": "Old Industrial Wood Planks",
"block.ariasessentials.old_industrial_wood_slab": "Old Industrial Wood Slab",
"block.ariasessentials.old_industrial_wood_stairs": "Old Industrial Wood Stairs",
"block.ariasessentials.steel_floor_grating": "Steel Floor Grating",
"block.ariasessentials.steel_table": "Steel Table",
"block.ariasessentials.steel_catwalk": "Steel Catwalk",
"block.ariasessentials.steel_catwalk_top": "Top Oriented Steel Catwalk",
"block.ariasessentials.steel_railing": "Steel Railing",
"block.ariasessentials.steel_catwalk_stairs": "Steel Catwalk Stairs",
"block.ariasessentials.steel_catwalk_stairs_lr": "Steel Catwalk Left Rail",
"block.ariasessentials.steel_catwalk_stairs_rr": "Steel Catwalk Right Rail",
"block.ariasessentials.steel_catwalk_stairs_dr": "Steel Catwalk Double Rail",
"block.ariasessentials.steel_catwalk_block": "Steel Catwalk Block",
"block.ariasessentials.tflipflop": "T-Flip Flop (WIP)",
"key.category.ariasessentials": "Aria's Essentials",
"key.ariasessentials.autowalk": "Auto Walk"
}

View file

@ -0,0 +1,283 @@
{
"parent": "block/block",
"textures": {
"f": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_pole_side",
"s": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_top_texture",
"particle": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"d": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0"
},
"elements": [
{
"from": [
4,
0,
11
],
"to": [
12,
16,
13
],
"rotation": {
"angle": 0,
"axis": "y",
"origin": [
8,
8,
6
]
},
"faces": {
"east": {
"uv": [
3,
0,
5,
16
],
"texture": "#d"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#d"
},
"west": {
"uv": [
11,
0,
13,
16
],
"texture": "#d"
},
"up": {
"uv": [
4,
11,
12,
13
],
"texture": "#s"
},
"down": {
"uv": [
4,
3,
12,
5
],
"texture": "#s"
}
}
},
{
"from": [
0,
0,
1
],
"to": [
8,
16,
11
],
"faces": {
"north": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"west": {
"uv": [
1,
0,
11,
16
],
"texture": "#d"
},
"up": {
"uv": [
0,
1,
8,
11
],
"texture": "#d"
},
"down": {
"uv": [
0,
5,
8,
15
],
"texture": "#d"
}
}
},
{
"from": [
8,
0,
1
],
"to": [
16,
16,
11
],
"rotation": {
"angle": 0,
"axis": "y",
"origin": [
16,
8,
8
]
},
"faces": {
"north": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"east": {
"uv": [
5,
0,
15,
16
],
"texture": "#d"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"up": {
"uv": [
8,
1,
16,
11
],
"texture": "#d"
},
"down": {
"uv": [
8,
5,
16,
15
],
"texture": "#d"
}
}
},
{
"from": [
3,
0,
0
],
"to": [
13,
16,
1
],
"rotation": {
"angle": 0,
"axis": "y",
"origin": [
8,
8,
-3
]
},
"faces": {
"north": {
"uv": [
4,
0,
14,
16
],
"texture": "#d"
},
"east": {
"uv": [
15,
0,
16,
16
],
"texture": "#s"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#d"
},
"west": {
"uv": [
0,
0,
1,
16
],
"texture": "#s"
},
"up": {
"uv": [
4,
0,
12,
1
],
"texture": "#s"
},
"down": {
"uv": [
4,
15,
12,
16
],
"texture": "#s"
}
}
}
]
}

View file

@ -0,0 +1,86 @@
{
"parent": "block/block",
"textures": {
"d": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_corner_down_texture",
"n": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_corner_side_texture",
"particle": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"s": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"u": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_corner_up_texture"
},
"elements": [
{
"from": [
0,
0,
0
],
"to": [
16,
16,
16
],
"faces": {
"north": {
"uv": [
16,
0,
0,
16
],
"texture": "#n",
"cullface": "north"
},
"east": {
"uv": [
0,
0,
16,
16
],
"texture": "#n",
"cullface": "east"
},
"south": {
"uv": [
0,
0,
16,
16
],
"texture": "#s",
"cullface": "south"
},
"west": {
"uv": [
0,
0,
16,
16
],
"texture": "#s",
"cullface": "west"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#u",
"cullface": "up"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#d",
"cullface": "down"
}
}
}
]
}

View file

@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"down": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_top_texture",
"up": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"north": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_downplate_side_texture",
"south": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_downplate_side_texture",
"west": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_downplate_side_texture",
"east": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_downplate_side_texture"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"down": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"up": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_top_texture",
"north": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_side_texture",
"south": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_side_texture",
"west": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_side_texture",
"east": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_side_texture"
}
}

View file

@ -0,0 +1,247 @@
{
"parent": "block/block",
"textures": {
"f": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_pole_side",
"s": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_sastor_upplate_top_texture",
"particle": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0",
"d": "ariasessentials:block/engineersdecor/clinker_brick/clinker_brick_texture0"
},
"elements": [
{
"from": [
0,
0,
1
],
"to": [
8,
16,
15
],
"faces": {
"north": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"west": {
"uv": [
1,
0,
15,
16
],
"texture": "#d"
},
"up": {
"uv": [
0,
1,
8,
15
],
"texture": "#d"
},
"down": {
"uv": [
0,
1,
8,
15
],
"texture": "#d"
}
}
},
{
"from": [
8,
0,
1
],
"to": [
16,
16,
15
],
"faces": {
"north": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"east": {
"uv": [
1,
0,
15,
16
],
"texture": "#d"
},
"south": {
"uv": [
4,
0,
12,
16
],
"texture": "#f"
},
"up": {
"uv": [
8,
1,
16,
15
],
"texture": "#d"
},
"down": {
"uv": [
8,
1,
16,
15
],
"texture": "#d"
}
}
},
{
"from": [
3,
0,
0
],
"to": [
13,
16,
1
],
"faces": {
"north": {
"uv": [
3,
0,
13,
16
],
"texture": "#d"
},
"east": {
"uv": [
15,
0,
16,
16
],
"texture": "#s"
},
"west": {
"uv": [
0,
0,
1,
16
],
"texture": "#s"
},
"up": {
"uv": [
3,
0,
13,
1
],
"texture": "#s"
},
"down": {
"uv": [
3,
15,
13,
16
],
"texture": "#s"
}
}
},
{
"from": [
3,
0,
15
],
"to": [
13,
16,
16
],
"faces": {
"east": {
"uv": [
0,
0,
1,
16
],
"texture": "#s"
},
"south": {
"uv": [
3,
0,
13,
16
],
"texture": "#d"
},
"west": {
"uv": [
15,
0,
16,
16
],
"texture": "#s"
},
"up": {
"uv": [
3,
15,
13,
16
],
"texture": "#s"
},
"down": {
"uv": [
3,
0,
13,
1
],
"texture": "#s"
}
}
}
]
}

View file

@ -0,0 +1,105 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, -0.25]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [15, 14, 16, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [0, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#s"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 0, 1],
"to": [16, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [15, 1, 16, 15], "texture": "#s"},
"down": {"uv": [15, 1, 16, 15], "texture": "#s"}
}
},
{
"from": [0, 0, 15],
"to": [16, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 14.75]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [0, 14, 1, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [15, 14, 16, 16], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#s"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 0, 1],
"to": [1, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-7, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#s"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
},
{
"from": [1, 2, 1],
"to": [15, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -6.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "texture": "#t"}
}
},
{
"from": [1, 1, 1],
"to": [15, 1, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -7.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 1, 1.75],
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"rotation": [8, 0, 42],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [0.25, 1.25, -3],
"scale": [0.6, 0.6, 0.6]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -4],
"scale": [0.5, 0.5, 0.5]
}
}
}

View file

@ -0,0 +1,152 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"frame": "ariasessentials:block/engineersdecor/material/steel_texture",
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, -0.25]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [15, 14, 16, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [0, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#s"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 0, 1],
"to": [16, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [15, 1, 16, 15], "texture": "#s"},
"down": {"uv": [15, 1, 16, 15], "texture": "#s"}
}
},
{
"from": [0, 0, 15],
"to": [16, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 14.75]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [0, 14, 1, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [15, 14, 16, 16], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#s"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 0, 1],
"to": [1, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-7, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#s"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
},
{
"from": [1, 2, 1],
"to": [15, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -6.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "texture": "#t"}
}
},
{
"from": [1, 1, 1],
"to": [15, 1, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -7.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"}
}
},
{
"from": [0, 2, 0],
"to": [1, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"east": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"south": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"west": {"uv": [0, 1, 1, 14], "texture": "#frame"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"east": {"uv": [15, 0, 16, 1], "texture": "#frame"},
"south": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"west": {"uv": [0, 0, 1, 1], "texture": "#frame"},
"up": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"down": {"uv": [0, 15, 16, 16], "texture": "#frame"}
}
},
{
"from": [1, 14.5, 0.25],
"to": [15, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 0]},
"faces": {
"north": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"south": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"up": {"uv": [1, 0.25, 15, 1], "texture": "#frame"},
"down": {"uv": [1, 15, 15, 15.75], "texture": "#frame"}
}
},
{
"from": [15, 2, 0],
"to": [16, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"east": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"south": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"west": {"uv": [0, 1, 1, 14], "texture": "#frame"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 1, 1.75],
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"rotation": [8, 0, 42],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [0.25, 3, -3],
"scale": [0.6, 0.6, 0.6]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -4],
"scale": [0.5, 0.5, 0.5]
}
}
}

View file

@ -0,0 +1,187 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"frame": "ariasessentials:block/engineersdecor/material/steel_texture",
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, -0.25]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [15, 14, 16, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [0, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#s"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 0, 1],
"to": [16, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [15, 1, 16, 15], "texture": "#s"},
"down": {"uv": [15, 1, 16, 15], "texture": "#s"}
}
},
{
"from": [0, 0, 15],
"to": [16, 2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 14.75]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [0, 14, 1, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [15, 14, 16, 16], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#s"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 0, 1],
"to": [1, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-7, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#s"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
},
{
"from": [1, 2, 1],
"to": [15, 2, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -6.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "texture": "#t"}
}
},
{
"from": [1, 1, 1],
"to": [15, 1, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -7.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"}
}
},
{
"from": [0, 2, 0],
"to": [1, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"east": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"south": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"west": {"uv": [0, 1, 1, 14], "texture": "#frame"}
}
},
{
"from": [15, 2, 15],
"to": [16, 15, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 15.5]},
"faces": {
"north": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"east": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"south": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"west": {"uv": [15, 1, 16, 14], "texture": "#frame"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"east": {"uv": [15, 0, 16, 1], "texture": "#frame"},
"south": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"west": {"uv": [0, 0, 1, 1], "texture": "#frame"},
"up": {"uv": [0, 0, 16, 1], "texture": "#frame"},
"down": {"uv": [0, 15, 16, 16], "texture": "#frame"}
}
},
{
"from": [15, 15, 1],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 2]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#frame"},
"east": {"uv": [0, 0, 15, 1], "texture": "#frame"},
"south": {"uv": [15, 0, 16, 1], "texture": "#frame"},
"west": {"uv": [1, 0, 16, 1], "texture": "#frame"},
"up": {"uv": [15, 1, 16, 16], "texture": "#frame"},
"down": {"uv": [15, 0, 16, 15], "texture": "#frame"}
}
},
{
"from": [1, 14.5, 0.25],
"to": [15, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 0]},
"faces": {
"north": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"south": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"up": {"uv": [1, 0.25, 15, 1], "texture": "#frame"},
"down": {"uv": [1, 15, 15, 15.75], "texture": "#frame"}
}
},
{
"from": [15, 14.5, 1],
"to": [15.75, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 7, 1]},
"faces": {
"east": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"west": {"uv": [1, 1, 15, 1.5], "texture": "#frame"},
"up": {"uv": [15, 1, 15.75, 15], "texture": "#frame"},
"down": {"uv": [15, 1, 15.75, 15], "texture": "#frame"}
}
},
{
"from": [15, 2, 0],
"to": [16, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 1, 1, 14], "texture": "#frame"},
"east": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"south": {"uv": [15, 1, 16, 14], "texture": "#frame"},
"west": {"uv": [0, 1, 1, 14], "texture": "#frame"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.75, 1.75, 1.25],
"scale": [0.2, 0.2, 0.2]
},
"firstperson_righthand": {
"rotation": [20, -59, 15],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [0.25, 0, -3],
"scale": [0.6, 0.6, 0.6]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -3.5],
"scale": [0.5, 0.5, 0.5]
}
}
}

View file

@ -0,0 +1,289 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [1, 2, 15],
"to": [15, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 2, 9],
"to": [15, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 2, 8],
"to": [15, 4, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 2, 9],
"to": [2, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 3, 9],
"to": [14, 3, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 4, 9],
"to": [14, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [1, 10, 7],
"to": [15, 12, 8],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 10, 1],
"to": [15, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 10, 0],
"to": [15, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 10, 1],
"to": [2, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 11, 1],
"to": [14, 11, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 12, 1],
"to": [14, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [15, -1, 14],
"to": [16, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 14, -1],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.25, 9, -10],
"to": [15.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [0, -1, 14],
"to": [1, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 14, -1],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.25, 9, -10],
"to": [0.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 2, 1],
"scale": [0.2, 0.2, 0.2]
},
"firstperson_righthand": {
"rotation": [-5, -8, 14],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, -45, 0],
"translation": [-0.25, 0, -3],
"scale": [0.5, 0.5, 0.5]
},
"fixed": {
"rotation": [0, 90, 0],
"translation": [0, 0.25, -3.25],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4, 5]
},
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [6, 7, 8, 9, 10, 11]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [12, 13, 14]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [15, 16, 17]
},
{
"name": "VoxelShapes",
"origin": [8, 8, 8],
"color": 0,
"children": []
}
]
}

View file

@ -0,0 +1,419 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [1, 2, 15],
"to": [15, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 2, 9],
"to": [15, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 2, 8],
"to": [15, 4, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 2, 9],
"to": [2, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 3, 9],
"to": [14, 3, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 4, 9],
"to": [14, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [1, 10, 7],
"to": [15, 12, 8],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 10, 1],
"to": [15, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 10, 0],
"to": [15, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 10, 1],
"to": [2, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 11, 1],
"to": [14, 11, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 12, 1],
"to": [14, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [15, -1, 14],
"to": [16, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 14, -1],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.25, 9, -10],
"to": [15.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [0, -1, 14],
"to": [1, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 14, -1],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.25, 9, -10],
"to": [0.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [15, 19, 14],
"to": [16, 21, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 19, -1],
"to": [16, 21, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.4, 0.25, 14.5],
"to": [15.65, 19.25, 15.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [15.4, 15.25, -0.5],
"to": [15.65, 19.25, 0.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [15.4, 19.25, 0.5],
"to": [15.65, 20.25, 14.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [0, 19, 14],
"to": [1, 21, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 19, -1],
"to": [1, 21, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.4, 0.25, 14.5],
"to": [0.65, 19.25, 15.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [0.4, 15.25, -0.5],
"to": [0.65, 19.25, 0.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [0.4, 19.25, 0.5],
"to": [0.65, 20.25, 14.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 2, 1],
"scale": [0.2, 0.2, 0.2]
},
"firstperson_righthand": {
"rotation": [-5, -8, 14],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, -45, 0],
"translation": [-0.25, 0, -3],
"scale": [0.5, 0.5, 0.5]
},
"fixed": {
"rotation": [0, 90, 0],
"translation": [0, 0.25, -3.25],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4, 5]
},
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [6, 7, 8, 9, 10, 11]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [12, 13, 14]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [15, 16, 17]
},
{
"name": "railing",
"origin": [8, 8, 8],
"color": 0,
"children": [18, 19, 20, 21, 22]
},
{
"name": "railing",
"origin": [8, 8, 8],
"color": 0,
"children": [23, 24, 25, 26, 27]
}
]
}

View file

@ -0,0 +1,351 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [1, 2, 15],
"to": [15, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 2, 9],
"to": [15, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 2, 8],
"to": [15, 4, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 2, 9],
"to": [2, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 3, 9],
"to": [14, 3, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 4, 9],
"to": [14, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [1, 10, 7],
"to": [15, 12, 8],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 10, 1],
"to": [15, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 10, 0],
"to": [15, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 10, 1],
"to": [2, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 11, 1],
"to": [14, 11, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 12, 1],
"to": [14, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [15, -1, 14],
"to": [16, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 14, -1],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.25, 9, -10],
"to": [15.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [0, -1, 14],
"to": [1, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 14, -1],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.25, 9, -10],
"to": [0.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [0, 19, 14],
"to": [1, 21, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 19, -1],
"to": [1, 21, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.4, 0.25, 14.5],
"to": [0.65, 19.25, 15.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [0.4, 15.25, -0.5],
"to": [0.65, 19.25, 0.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [0.4, 19.25, 0.5],
"to": [0.65, 20.25, 14.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 2, 1],
"scale": [0.2, 0.2, 0.2]
},
"firstperson_righthand": {
"rotation": [-5, -8, 14],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, -45, 0],
"translation": [-0.25, 0, -3],
"scale": [0.5, 0.5, 0.5]
},
"fixed": {
"rotation": [0, 90, 0],
"translation": [0, 0.25, -3.25],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4, 5]
},
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [6, 7, 8, 9, 10, 11]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [12, 13, 14]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [15, 16, 17]
},
{
"name": "railing",
"origin": [8, 8, 8],
"color": 0,
"children": [18, 19, 20, 21, 22]
}
]
}

View file

@ -0,0 +1,351 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [1, 2, 15],
"to": [15, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 2, 9],
"to": [15, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 2, 8],
"to": [15, 4, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 2, 9],
"to": [2, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 3, 9],
"to": [14, 3, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 4, 9],
"to": [14, 4, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [1, 10, 7],
"to": [15, 12, 8],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 16.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [16, 14, 15, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [1, 14, 0, 16], "texture": "#s"},
"up": {"uv": [0, 1, 16, 0], "texture": "#s"},
"down": {"uv": [0, 16, 16, 15], "texture": "#s"}
}
},
{
"from": [14, 10, 1],
"to": [15, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, -4.5, 15.25]},
"faces": {
"north": {"uv": [16, 14, 15, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [1, 14, 0, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [15, 7, 16, 1], "texture": "#s"},
"down": {"uv": [15, 15, 16, 9], "texture": "#s"}
}
},
{
"from": [1, 10, 0],
"to": [15, 12, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -4.5, 9.25]},
"faces": {
"north": {"uv": [16, 14, 0, 16], "texture": "#s"},
"east": {"uv": [1, 14, 0, 16], "texture": "#s"},
"south": {"uv": [16, 14, 0, 16], "texture": "#s"},
"west": {"uv": [16, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 16, 16, 15], "texture": "#s"},
"down": {"uv": [0, 1, 16, 0], "texture": "#s"}
}
},
{
"from": [1, 10, 1],
"to": [2, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 15.25]},
"faces": {
"north": {"uv": [1, 14, 0, 16], "texture": "#s"},
"east": {"uv": [15, 14, 9, 16], "texture": "#s"},
"south": {"uv": [16, 14, 15, 16], "texture": "#s"},
"west": {"uv": [7, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 7, 1, 1], "texture": "#s"},
"down": {"uv": [0, 15, 1, 9], "texture": "#s"}
}
},
{
"from": [2, 11, 1],
"to": [14, 11, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -5.5, 8.75]},
"faces": {
"up": {"uv": [2, 1, 14, 7], "texture": "#t"},
"down": {"uv": [2, 8, 14, 14], "texture": "#t"}
}
},
{
"from": [2, 12, 1],
"to": [14, 12, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -4.5, 8.75]},
"faces": {
"up": {"uv": [3, 3, 15, 9], "texture": "#t"},
"down": {"uv": [2, 9, 14, 15], "texture": "#t"}
}
},
{
"from": [15, -1, 14],
"to": [16, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 14, -1],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.25, 9, -10],
"to": [15.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [0, -1, 14],
"to": [1, 1, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0, 14, -1],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [0.25, 9, -10],
"to": [0.75, 11, 11],
"rotation": {"angle": 45, "axis": "x", "origin": [-15, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"east": {"uv": [0, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 0.5, 2], "texture": "#s"},
"west": {"uv": [0, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 0, 0.5, 16], "texture": "#s"},
"down": {"uv": [0, 0, 0.5, 16], "texture": "#s"}
}
},
{
"from": [15, 19, 14],
"to": [16, 21, 16],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15, 19, -1],
"to": [16, 21, 1],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 1, 2], "texture": "#s"},
"down": {"uv": [0, 0, 1, 2], "texture": "#s"}
}
},
{
"from": [15.4, 0.25, 14.5],
"to": [15.65, 19.25, 15.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [15.4, 15.25, -0.5],
"to": [15.65, 19.25, 0.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
},
{
"from": [15.4, 19.25, 0.5],
"to": [15.65, 20.25, 14.5],
"faces": {
"north": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"east": {"uv": [0, 0, 1, 16], "texture": "#s"},
"south": {"uv": [0, 0, 0.25, 16], "texture": "#s"},
"west": {"uv": [0, 0, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 0.25, 1], "texture": "#s"},
"down": {"uv": [0, 0, 0.25, 1], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 2, 1],
"scale": [0.2, 0.2, 0.2]
},
"firstperson_righthand": {
"rotation": [-5, -8, 14],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, -45, 0],
"translation": [-0.25, 0, -3],
"scale": [0.5, 0.5, 0.5]
},
"fixed": {
"rotation": [0, 90, 0],
"translation": [0, 0.25, -3.25],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3, 4, 5]
},
{
"name": "step",
"origin": [8, 8, 8],
"color": 0,
"children": [6, 7, 8, 9, 10, 11]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [12, 13, 14]
},
{
"name": "bar",
"origin": [15.40625, 8, 8],
"color": 0,
"children": [15, 16, 17]
},
{
"name": "railing",
"origin": [8, 8, 8],
"color": 0,
"children": [18, 19, 20, 21, 22]
}
]
}

View file

@ -0,0 +1,119 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"ambientocclusion": false,
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"s": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_side",
"t": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top"
},
"elements": [
{
"from": [0, 14, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, -0.25]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [15, 14, 16, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [0, 14, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#s"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 14, 1],
"to": [16, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [15, 1, 16, 15], "texture": "#s"},
"down": {"uv": [15, 1, 16, 15], "texture": "#s"}
}
},
{
"from": [0, 14, 15],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -6.5, 14.75]},
"faces": {
"north": {"uv": [0, 14, 16, 16], "texture": "#s"},
"east": {"uv": [0, 14, 1, 16], "texture": "#s"},
"south": {"uv": [0, 14, 16, 16], "texture": "#s"},
"west": {"uv": [15, 14, 16, 16], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#s"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 14, 1],
"to": [1, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-7, -6.5, 0.75]},
"faces": {
"east": {"uv": [1, 14, 15, 16], "texture": "#s"},
"west": {"uv": [1, 14, 15, 16], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#s"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
},
{
"from": [1, 16, 1],
"to": [15, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -6.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "texture": "#t"}
}
},
{
"from": [1, 15, 1],
"to": [15, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [-6, -7.5, 0.75]},
"faces": {
"up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"},
"down": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#t"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [70, -2, 3],
"translation": [0.25, 1, 1.75],
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"rotation": [8, 0, 42],
"translation": [8.5, 0, -5.75],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.3, 0.3, 0.3]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [0.25, 1.25, -3],
"scale": [0.6, 0.6, 0.6]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -4],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
0,
1,
2,
3,
4,
5,
{
"name": "VoxelShapes",
"origin": [8, 8, 8],
"color": 0,
"children": []
}
]
}

View file

@ -0,0 +1,203 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"s": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"t": "ariasessentials:block/engineersdecor/furniture/steel_table_top_texture"
},
"elements": [
{
"from": [0, 0, 15],
"to": [16, 2, 16],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [0, 0, 1, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [15, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#t"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 0, 0],
"to": [16, 2, 1],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [15, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [0, 0, 1, 2], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#t"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 0, 0.75],
"to": [16, 2, 15.25],
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0.75, 0, 15.25, 2], "texture": "#s"},
"south": {"uv": [15, 0, 16, 2], "texture": "#s"},
"west": {"uv": [0.75, 0, 15.25, 2], "texture": "#s"},
"up": {"uv": [15, 0.75, 16, 15.25], "texture": "#t"},
"down": {"uv": [15, 0.75, 16, 15.25], "texture": "#s"}
}
},
{
"from": [1, 1, 13.625],
"to": [15, 2, 14.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [1.625, 0.125, 2.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [13.625, 0.125, 14.375, 1], "texture": "#s"},
"up": {"uv": [1, 13.625, 15, 14.375], "texture": "#t"},
"down": {"uv": [1, 1.625, 15, 2.375], "texture": "#t"}
}
},
{
"from": [1, 1, 12.125],
"to": [15, 2, 12.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [3.125, 0.125, 3.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [12.125, 0.125, 12.875, 1], "texture": "#s"},
"up": {"uv": [1, 12.125, 15, 12.875], "texture": "#t"},
"down": {"uv": [1, 3.125, 15, 3.875], "texture": "#t"}
}
},
{
"from": [1, 1, 10.625],
"to": [15, 2, 11.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [4.625, 0.125, 5.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [10.625, 0.125, 11.375, 1], "texture": "#s"},
"up": {"uv": [1, 10.625, 15, 11.375], "texture": "#t"},
"down": {"uv": [1, 4.625, 15, 5.375], "texture": "#t"}
}
},
{
"from": [1, 1, 9.125],
"to": [15, 2, 9.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [6.125, 0.125, 6.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [9.125, 0.125, 9.875, 1], "texture": "#s"},
"up": {"uv": [1, 9.125, 15, 9.875], "texture": "#t"},
"down": {"uv": [1, 6.125, 15, 6.875], "texture": "#t"}
}
},
{
"from": [1, 1, 7.625],
"to": [15, 2, 8.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [7.625, 0.125, 8.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [7.625, 0.125, 8.375, 1], "texture": "#s"},
"up": {"uv": [1, 7.625, 15, 8.375], "texture": "#t"},
"down": {"uv": [1, 7.625, 15, 8.375], "texture": "#t"}
}
},
{
"from": [1, 1, 6.125],
"to": [15, 2, 6.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [9.125, 0.125, 9.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [6.125, 0.125, 6.875, 1], "texture": "#s"},
"up": {"uv": [1, 6.125, 15, 6.875], "texture": "#t"},
"down": {"uv": [1, 9.125, 15, 9.875], "texture": "#t"}
}
},
{
"from": [1, 1, 4.625],
"to": [15, 2, 5.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [10.625, 0.125, 11.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [4.625, 0.125, 5.375, 1], "texture": "#s"},
"up": {"uv": [1, 4.625, 15, 5.375], "texture": "#t"},
"down": {"uv": [1, 10.625, 15, 11.375], "texture": "#t"}
}
},
{
"from": [1, 1, 3.125],
"to": [15, 2, 3.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [12.125, 0.125, 12.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [3.125, 0.125, 3.875, 1], "texture": "#s"},
"up": {"uv": [1, 3.125, 15, 3.875], "texture": "#t"},
"down": {"uv": [1, 12.125, 15, 12.875], "texture": "#t"}
}
},
{
"from": [1, 1, 1.625],
"to": [15, 2, 2.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [13.625, 0.125, 14.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [1.625, 0.125, 2.375, 1], "texture": "#s"},
"up": {"uv": [1, 1.625, 15, 2.375], "texture": "#t"},
"down": {"uv": [1, 13.625, 15, 14.375], "texture": "#t"}
}
},
{
"from": [0, 0, 1],
"to": [1, 2, 15],
"faces": {
"north": {"uv": [15, 0, 16, 2], "texture": "#s"},
"east": {"uv": [1, 0, 15, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [1, 0, 15, 2], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#t"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [66, 0, 0],
"translation": [0.25, 0, -2.75],
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"rotation": [-4, -1, 58],
"translation": [2.5, 0.25, 1.75],
"scale": [0.3, 0.3, 0.3]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.2, 0.2, 0.2]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [0, -2, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [-90, 0, 1],
"translation": [0, 0.25, 3.25],
"scale": [0.5, 0.5, 0.5]
}
}
}

View file

@ -0,0 +1,224 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"s": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"t": "ariasessentials:block/engineersdecor/furniture/steel_table_top_texture"
},
"elements": [
{
"from": [0, 14, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [0, 0, 1, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [15, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 15, 16, 16], "texture": "#t"},
"down": {"uv": [0, 0, 16, 1], "texture": "#s"}
}
},
{
"from": [0, 14, 0],
"to": [16, 16, 1],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [15, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [0, 0, 1, 2], "texture": "#s"},
"up": {"uv": [0, 0, 16, 1], "texture": "#t"},
"down": {"uv": [0, 15, 16, 16], "texture": "#s"}
}
},
{
"from": [15, 14, 0.75],
"to": [16, 16, 15.25],
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#s"},
"east": {"uv": [0.75, 0, 15.25, 2], "texture": "#s"},
"south": {"uv": [15, 0, 16, 2], "texture": "#s"},
"west": {"uv": [0.75, 0, 15.25, 2], "texture": "#s"},
"up": {"uv": [15, 0.75, 16, 15.25], "texture": "#t"},
"down": {"uv": [15, 0.75, 16, 15.25], "texture": "#s"}
}
},
{
"from": [1, 15, 13.625],
"to": [15, 16, 14.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [1.625, 0.125, 2.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [13.625, 0.125, 14.375, 1], "texture": "#s"},
"up": {"uv": [1, 13.625, 15, 14.375], "texture": "#t"},
"down": {"uv": [1, 1.625, 15, 2.375], "texture": "#t"}
}
},
{
"from": [1, 15, 12.125],
"to": [15, 16, 12.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [3.125, 0.125, 3.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [12.125, 0.125, 12.875, 1], "texture": "#s"},
"up": {"uv": [1, 12.125, 15, 12.875], "texture": "#t"},
"down": {"uv": [1, 3.125, 15, 3.875], "texture": "#t"}
}
},
{
"from": [1, 15, 10.625],
"to": [15, 16, 11.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [4.625, 0.125, 5.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [10.625, 0.125, 11.375, 1], "texture": "#s"},
"up": {"uv": [1, 10.625, 15, 11.375], "texture": "#t"},
"down": {"uv": [1, 4.625, 15, 5.375], "texture": "#t"}
}
},
{
"from": [1, 15, 9.125],
"to": [15, 16, 9.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [6.125, 0.125, 6.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [9.125, 0.125, 9.875, 1], "texture": "#s"},
"up": {"uv": [1, 9.125, 15, 9.875], "texture": "#t"},
"down": {"uv": [1, 6.125, 15, 6.875], "texture": "#t"}
}
},
{
"from": [1, 15, 7.625],
"to": [15, 16, 8.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [7.625, 0.125, 8.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [7.625, 0.125, 8.375, 1], "texture": "#s"},
"up": {"uv": [1, 7.625, 15, 8.375], "texture": "#t"},
"down": {"uv": [1, 7.625, 15, 8.375], "texture": "#t"}
}
},
{
"from": [1, 15, 6.125],
"to": [15, 16, 6.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [9.125, 0.125, 9.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [6.125, 0.125, 6.875, 1], "texture": "#s"},
"up": {"uv": [1, 6.125, 15, 6.875], "texture": "#t"},
"down": {"uv": [1, 9.125, 15, 9.875], "texture": "#t"}
}
},
{
"from": [1, 15, 4.625],
"to": [15, 16, 5.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [10.625, 0.125, 11.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [4.625, 0.125, 5.375, 1], "texture": "#s"},
"up": {"uv": [1, 4.625, 15, 5.375], "texture": "#t"},
"down": {"uv": [1, 10.625, 15, 11.375], "texture": "#t"}
}
},
{
"from": [1, 15, 3.125],
"to": [15, 16, 3.875],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [12.125, 0.125, 12.875, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [3.125, 0.125, 3.875, 1], "texture": "#s"},
"up": {"uv": [1, 3.125, 15, 3.875], "texture": "#t"},
"down": {"uv": [1, 12.125, 15, 12.875], "texture": "#t"}
}
},
{
"from": [1, 15, 1.625],
"to": [15, 16, 2.375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.125, 8.375]},
"faces": {
"north": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"east": {"uv": [13.625, 0.125, 14.375, 1], "texture": "#s"},
"south": {"uv": [1, 0.125, 15, 1], "texture": "#s"},
"west": {"uv": [1.625, 0.125, 2.375, 1], "texture": "#s"},
"up": {"uv": [1, 1.625, 15, 2.375], "texture": "#t"},
"down": {"uv": [1, 13.625, 15, 14.375], "texture": "#t"}
}
},
{
"from": [0, 14, 1],
"to": [1, 16, 15],
"faces": {
"north": {"uv": [15, 0, 16, 2], "texture": "#s"},
"east": {"uv": [1, 0, 15, 2], "texture": "#s"},
"south": {"uv": [0, 0, 1, 2], "texture": "#s"},
"west": {"uv": [1, 0, 15, 2], "texture": "#s"},
"up": {"uv": [0, 1, 1, 15], "texture": "#t"},
"down": {"uv": [0, 1, 1, 15], "texture": "#s"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [66, 0, 0],
"translation": [0.25, 0, -2.75],
"scale": [0.3, 0.3, 0.3]
},
"firstperson_righthand": {
"rotation": [-4, -1, 58],
"translation": [2.5, 0.25, 1.75],
"scale": [0.3, 0.3, 0.3]
},
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.2, 0.2, 0.2]
},
"gui": {
"rotation": [30, 225, 0],
"translation": [0, -2, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [-90, 0, 1],
"translation": [0, 0.25, 3.25],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
{
"name": "VoxelShapes",
"origin": [8, 8, 8],
"color": 0,
"children": []
}
]
}

View file

@ -0,0 +1,86 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "ariasessentials:block/engineersdecor/material/steel_texture",
"particle": "ariasessentials:block/engineersdecor/material/steel_texture"
},
"elements": [
{
"from": [0.25, 15, 0.25],
"to": [15.75, 16, 1.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [15, 0, 16, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 15, 16, 16], "texture": "#0"}
}
},
{
"from": [14.75, 0.25, 0.25],
"to": [15.75, 15, 1.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [0, 1, 1, 14], "texture": "#0"},
"east": {"uv": [15, 1, 16, 14], "texture": "#0"},
"south": {"uv": [15, 1, 16, 14], "texture": "#0"},
"west": {"uv": [0, 1, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
},
{
"from": [1.25, 14.5, 0.25],
"to": [14.75, 15, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 0]},
"faces": {
"north": {"uv": [1, 1, 15, 1.5], "texture": "#0"},
"south": {"uv": [1, 1, 15, 1.5], "texture": "#0"},
"up": {"uv": [1, 0.25, 15, 1], "texture": "#0"},
"down": {"uv": [1, 15, 15, 15.75], "texture": "#0"}
}
},
{
"from": [0.25, 0.25, 0.25],
"to": [1.25, 15, 1.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0.5]},
"faces": {
"north": {"uv": [15, 1, 16, 14], "texture": "#0"},
"east": {"uv": [15, 1, 16, 14], "texture": "#0"},
"south": {"uv": [0, 1, 1, 14], "texture": "#0"},
"west": {"uv": [0, 1, 1, 14], "texture": "#0"},
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
}
}
],
"display": {
"ground": {
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [0, -36, 0],
"translation": [-4, -1, 0],
"scale": [0.72, 0.74, 1]
},
"head": {
"translation": [0, 2.5, 7]
},
"fixed": {
"translation": [0, -0.25, 7],
"scale": [0.8, 0.75, 1]
}
},
"groups": [
0,
1,
2,
3,
{
"name": "VoxelShapes",
"origin": [8, 8, 0.5],
"color": 0,
"children": []
}
]
}

View file

@ -0,0 +1,386 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"render_type": "cutout",
"textures": {
"particle": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"s": "ariasessentials:block/engineersdecor/furniture/steel_table_side_texture",
"t": "ariasessentials:block/engineersdecor/furniture/steel_table_top_texture"
},
"elements": [
{
"from": [0, 0, 0],
"to": [2, 14, 1],
"faces": {
"north": {"uv": [14, 2, 16, 16], "texture": "#s"},
"east": {"uv": [15, 2, 16, 16], "texture": "#s"},
"south": {"uv": [0, 2, 2, 16], "texture": "#s"},
"west": {"uv": [0, 2, 1, 16], "texture": "#s"},
"up": {"uv": [0, 0, 2, 1], "texture": "#s"},
"down": {"uv": [0, 15, 2, 16], "texture": "#s", "cullface": "down"}
}
},
{
"from": [14, 0, 0],
"to": [16, 14, 1],
"faces": {
"north": {"uv": [0, 2, 2, 16], "texture": "#s"},
"east": {"uv": [15, 2, 16, 16], "texture": "#s"},
"south": {"uv": [14, 2, 16, 16], "texture": "#s"},
"west": {"uv": [0, 2, 1, 16], "texture": "#s"},
"up": {"uv": [14, 0, 16, 1], "texture": "#s"},
"down": {"uv": [14, 15, 16, 16], "texture": "#s", "cullface": "down"}
}
},
{
"from": [14, 0, 15],
"to": [16, 14, 16],
"faces": {
"north": {"uv": [0, 2, 2, 16], "texture": "#s"},
"east": {"uv": [0, 2, 1, 16], "texture": "#s"},
"south": {"uv": [14, 2, 16, 16], "texture": "#s"},
"west": {"uv": [15, 2, 16, 16], "texture": "#s"},
"up": {"uv": [14, 15, 16, 16], "texture": "#s"},
"down": {"uv": [14, 0, 16, 1], "texture": "#s", "cullface": "down"}
}
},
{
"from": [0, 0, 15],
"to": [2, 14, 16],
"faces": {
"north": {"uv": [14, 2, 16, 16], "texture": "#s"},
"east": {"uv": [0, 2, 1, 16], "texture": "#s"},
"south": {"uv": [0, 2, 2, 16], "texture": "#s"},
"west": {"uv": [15, 2, 16, 16], "texture": "#s"},
"up": {"uv": [0, 15, 2, 16], "texture": "#s"},
"down": {"uv": [0, 0, 2, 1], "texture": "#s", "cullface": "down"}
}
},
{
"from": [0, 0, 14],
"to": [1, 14, 15],
"faces": {
"north": {"uv": [15, 2, 16, 16], "texture": "#s"},
"east": {"uv": [1, 2, 2, 16], "texture": "#s"},
"south": {"uv": [0, 2, 1, 16], "texture": "#s"},
"west": {"uv": [14, 2, 15, 16], "texture": "#s"},
"up": {"uv": [0, 14, 1, 15], "texture": "#s"},
"down": {"uv": [0, 1, 1, 2], "texture": "#s", "cullface": "down"}
}
},
{
"from": [0, 0, 1],
"to": [1, 14, 2],
"faces": {
"north": {"uv": [15, 2, 16, 16], "texture": "#s"},
"east": {"uv": [14, 2, 15, 16], "texture": "#s"},
"south": {"uv": [0, 2, 1, 16], "texture": "#s"},
"west": {"uv": [1, 2, 2, 16], "texture": "#s"},
"up": {"uv": [0, 1, 1, 2], "texture": "#s"},
"down": {"uv": [0, 14, 1, 15], "texture": "#s", "cullface": "down"}
}
},
{
"from": [15, 0, 1],
"to": [16, 14, 2],
"faces": {
"north": {"uv": [0, 2, 1, 16], "texture": "#s"},
"east": {"uv": [14, 2, 15, 16], "texture": "#s"},
"south": {"uv": [15, 2, 16, 16], "texture": "#s"},
"west": {"uv": [1, 2, 2, 16], "texture": "#s"},
"up": {"uv": [15, 1, 16, 2], "texture": "#s"},
"down": {"uv": [15, 14, 16, 15], "texture": "#s", "cullface": "down"}
}
},
{
"from": [15, 0, 14],
"to": [16, 14, 15],
"faces": {
"north": {"uv": [0, 2, 1, 16], "texture": "#s"},
"east": {"uv": [1, 2, 2, 16], "texture": "#s"},
"south": {"uv": [15, 2, 16, 16], "texture": "#s"},
"west": {"uv": [14, 2, 15, 16], "texture": "#s"},
"up": {"uv": [15, 14, 16, 15], "texture": "#s"},
"down": {"uv": [15, 1, 16, 2], "texture": "#s", "cullface": "down"}
}
},
{
"from": [0, 14, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [0, 0, 2, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [14, 0, 16, 2], "texture": "#s"},
"up": {"uv": [0, 14, 16, 16], "texture": "#t"},
"down": {"uv": [0, 0, 16, 2], "texture": "#s"}
}
},
{
"from": [0, 14, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#s"},
"east": {"uv": [14, 0, 16, 2], "texture": "#s"},
"south": {"uv": [0, 0, 16, 2], "texture": "#s"},
"west": {"uv": [0, 0, 2, 2], "texture": "#s"},
"up": {"uv": [0, 0, 16, 2], "texture": "#t"},
"down": {"uv": [0, 14, 16, 16], "texture": "#s"}
}
},
{
"from": [14, 14, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "texture": "#s"},
"east": {"uv": [2, 0, 14, 2], "texture": "#s"},
"south": {"uv": [14, 0, 16, 2], "texture": "#s"},
"west": {"uv": [2, 0, 14, 2], "texture": "#s"},
"up": {"uv": [14, 2, 16, 14], "texture": "#t"},
"down": {"uv": [14, 2, 16, 14], "texture": "#s"}
}
},
{
"from": [2, 15.5, 12.75],
"to": [14, 16, 13.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [2.75, 0, 3.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [12.75, 0, 13.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 12.75, 14, 13.25], "texture": "#t"},
"down": {"uv": [2, 2.75, 14, 3.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 13.75],
"to": [14, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [2, 0, 2.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [13.75, 0, 14, 0.5], "texture": "#s"},
"up": {"uv": [2, 13.75, 14, 14], "texture": "#t"},
"down": {"uv": [2, 2, 14, 2.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 11.75],
"to": [14, 16, 12.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [3.75, 0, 4.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [11.75, 0, 12.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 11.75, 14, 12.25], "texture": "#t"},
"down": {"uv": [2, 3.75, 14, 4.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 10.75],
"to": [14, 16, 11.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [4.75, 0, 5.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [10.75, 0, 11.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 10.75, 14, 11.25], "texture": "#t"},
"down": {"uv": [2, 4.75, 14, 5.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 9.75],
"to": [14, 16, 10.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [5.75, 0, 6.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [9.75, 0, 10.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 9.75, 14, 10.25], "texture": "#t"},
"down": {"uv": [2, 5.75, 14, 6.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 8.75],
"to": [14, 16, 9.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [6.75, 0, 7.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [8.75, 0, 9.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 8.75, 14, 9.25], "texture": "#t"},
"down": {"uv": [2, 6.75, 14, 7.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 7.75],
"to": [14, 16, 8.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [7.75, 0, 8.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [7.75, 0, 8.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 7.75, 14, 8.25], "texture": "#t"},
"down": {"uv": [2, 7.75, 14, 8.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 6.75],
"to": [14, 16, 7.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [8.75, 0, 9.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [6.75, 0, 7.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 6.75, 14, 7.25], "texture": "#t"},
"down": {"uv": [2, 8.75, 14, 9.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 5.75],
"to": [14, 16, 6.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [9.75, 0, 10.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [5.75, 0, 6.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 5.75, 14, 6.25], "texture": "#t"},
"down": {"uv": [2, 9.75, 14, 10.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 4.75],
"to": [14, 16, 5.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [10.75, 0, 11.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [4.75, 0, 5.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 4.75, 14, 5.25], "texture": "#t"},
"down": {"uv": [2, 10.75, 14, 11.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 3.75],
"to": [14, 16, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [11.75, 0, 12.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [3.75, 0, 4.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 3.75, 14, 4.25], "texture": "#t"},
"down": {"uv": [2, 11.75, 14, 12.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 2.75],
"to": [14, 16, 3.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [12.75, 0, 13.25, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [2.75, 0, 3.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 2.75, 14, 3.25], "texture": "#t"},
"down": {"uv": [2, 12.75, 14, 13.25], "texture": "#t"}
}
},
{
"from": [2, 15.5, 2],
"to": [14, 16, 2.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8.25]},
"faces": {
"north": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"east": {"uv": [13.75, 0, 14, 0.5], "texture": "#s"},
"south": {"uv": [2, 0, 14, 0.5], "texture": "#s"},
"west": {"uv": [2, 0, 2.25, 0.5], "texture": "#s"},
"up": {"uv": [2, 2, 14, 2.25], "texture": "#t"},
"down": {"uv": [2, 13.75, 14, 14], "texture": "#t"}
}
},
{
"from": [0, 14, 2],
"to": [2, 16, 14],
"faces": {
"north": {"uv": [14, 0, 16, 2], "texture": "#s"},
"east": {"uv": [2, 0, 14, 2], "texture": "#s"},
"south": {"uv": [0, 0, 2, 2], "texture": "#s"},
"west": {"uv": [2, 0, 14, 2], "texture": "#s"},
"up": {"uv": [0, 2, 2, 14], "texture": "#t"},
"down": {"uv": [0, 2, 2, 14], "texture": "#s"}
}
},
{
"from": [14, 13.5, 14],
"to": [15, 14, 15],
"faces": {
"north": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"east": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"south": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"west": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"up": {"uv": [14, 14, 15, 15], "texture": "#s"},
"down": {"uv": [14, 1, 15, 2], "texture": "#s"}
}
},
{
"from": [1, 13.5, 14],
"to": [2, 14, 15],
"faces": {
"north": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"east": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"south": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"west": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"up": {"uv": [1, 14, 2, 15], "texture": "#s"},
"down": {"uv": [1, 1, 2, 2], "texture": "#s"}
}
},
{
"from": [14, 13.5, 1],
"to": [15, 14, 2],
"faces": {
"north": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"east": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"south": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"west": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"up": {"uv": [14, 1, 15, 2], "texture": "#s"},
"down": {"uv": [14, 14, 15, 15], "texture": "#s"}
}
},
{
"from": [1, 13.5, 1],
"to": [2, 14, 2],
"faces": {
"north": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"east": {"uv": [14, 2, 15, 2.5], "texture": "#s"},
"south": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"west": {"uv": [1, 2, 2, 2.5], "texture": "#s"},
"up": {"uv": [1, 1, 2, 2], "texture": "#s"},
"down": {"uv": [1, 14, 2, 15], "texture": "#s"}
}
}
],
"display": {
"ground": {
"translation": [0, 1.75, 0],
"scale": [0.2, 0.2, 0.2]
},
"gui": {
"rotation": [30, 225, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
}
}

View file

@ -0,0 +1,345 @@
{
"credit": "Made with Blockbench",
"render_type": "cutout",
"textures": {
"0": "ariasessentials:block/engineersdecor/material/steel_texture",
"1": "ariasessentials:block/engineersdecor/furniture/steel_catwalk_top",
"particle": "ariasessentials:block/engineersdecor/material/steel_texture"
},
"elements": [
{
"from": [1, 0.75, 1],
"to": [15, 0.75, 15],
"faces": {
"down": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 0.25, 1],
"to": [15, 0.25, 15],
"faces": {
"down": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
},
{
"from": [0, 0, 1],
"to": [1, 1, 15],
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#0"},
"east": {"uv": [0, 0, 14, 2], "texture": "#0"},
"south": {"uv": [0, 0, 1, 2], "texture": "#0"},
"west": {"uv": [0, 0, 14, 2], "texture": "#0"},
"up": {"uv": [0, 0, 14, 1], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 0, 14, 1], "rotation": 90, "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 1],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#0"},
"east": {"uv": [0, 0, 1, 2], "texture": "#0"},
"south": {"uv": [0, 0, 16, 2], "texture": "#0"},
"west": {"uv": [0, 0, 1, 2], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"from": [0, 0, 15],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 2], "texture": "#0"},
"east": {"uv": [0, 0, 1, 2], "texture": "#0"},
"south": {"uv": [0, 0, 16, 2], "texture": "#0"},
"west": {"uv": [0, 0, 1, 2], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"from": [15, 0, 1],
"to": [16, 1, 15],
"faces": {
"north": {"uv": [0, 0, 1, 2], "texture": "#0"},
"east": {"uv": [0, 0, 14, 2], "texture": "#0"},
"south": {"uv": [0, 0, 1, 2], "texture": "#0"},
"west": {"uv": [0, 0, 14, 2], "texture": "#0"},
"up": {"uv": [0, 0, 14, 1], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 0, 14, 1], "rotation": 90, "texture": "#0"}
}
},
{
"from": [1, 15.25, 1],
"to": [15, 15.25, 15],
"faces": {
"up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 15.75, 1],
"to": [15, 15.75, 15],
"faces": {
"up": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
},
{
"from": [0, 15, 1],
"to": [1, 16, 15],
"faces": {
"north": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 14, 2], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 14, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 14, 1], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 14, 1], "rotation": 270, "texture": "#0"}
}
},
{
"from": [0, 15, 15],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 1],
"faces": {
"north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
},
{
"from": [15, 15, 1],
"to": [16, 16, 15],
"faces": {
"north": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 14, 2], "rotation": 180, "texture": "#0"},
"south": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [0, 0, 14, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 14, 1], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 14, 1], "rotation": 270, "texture": "#0"}
}
},
{
"from": [1, 1, 15.25],
"to": [15, 15, 15.25],
"faces": {
"south": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 1, 15.75],
"to": [15, 15, 15.75],
"faces": {
"south": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
},
{
"from": [0, 1, 15],
"to": [1, 15, 16],
"faces": {
"north": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#0"},
"up": {"uv": [0, 0, 1, 2], "texture": "#0"},
"down": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"}
}
},
{
"from": [15, 1, 15],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#0"},
"up": {"uv": [0, 0, 1, 2], "texture": "#0"},
"down": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"}
}
},
{
"from": [1, 1, 0.75],
"to": [15, 15, 0.75],
"faces": {
"north": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 1, 0.25],
"to": [15, 15, 0.25],
"faces": {
"north": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
},
{
"from": [15, 1, 0],
"to": [16, 15, 1],
"faces": {
"north": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 1, 2], "texture": "#0"}
}
},
{
"from": [0, 1, 0],
"to": [1, 15, 1],
"faces": {
"north": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 12, 1], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 1, 2], "texture": "#0"}
}
},
{
"from": [15.25, 1, 1],
"to": [15.25, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"east": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [15.75, 1, 1],
"to": [15.75, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"east": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
},
{
"from": [0.75, 1, 1],
"to": [0.75, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"west": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0.25, 1, 1],
"to": [0.25, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]},
"faces": {
"west": {"uv": [1, 1, 15, 15], "texture": "#1"}
}
}
],
"display": {
"thirdperson_righthand": {
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [50, 0, 46],
"scale": [0.5, 0.5, 0.5]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "Side",
"origin": [0, 0, 0],
"color": 0,
"children": [
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [0, 1]
},
2,
3,
4,
5
]
},
{
"name": "Side",
"origin": [0, 0, 0],
"color": 0,
"children": [
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [6, 7]
},
8,
9,
10,
11
]
},
{
"name": "Side",
"origin": [0, 0, 0],
"color": 0,
"children": [
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [12, 13]
},
14,
15
]
},
{
"name": "Side",
"origin": [0, 0, 0],
"color": 0,
"children": [
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [16, 17]
},
18,
19
]
},
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [20, 21]
},
{
"name": "Grating",
"origin": [0, 0, 0],
"color": 0,
"children": [22, 23]
}
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,200 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "ariasessentials:block/logicgates/logic_gate",
"1": "ariasessentials:block/logicgates/tflipflop",
"3": "ariasessentials:block/logicgates/torch_off",
"particle": "ariasessentials:block/logicgates/logic_gate"
},
"elements": [
{
"from": [0.25, 0.25, 0.25],
"to": [15.75, 0.5, 15.75],
"faces": {
"north": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
"east": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
"south": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
"west": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
"up": {"uv": [0, 0, 15.5, 15.5], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [16, 0.25, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#0"},
"south": {"uv": [0, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
"down": {"uv": [16, 0, 0, 16], "rotation": 90, "texture": "#0"}
}
},
{
"from": [8.45, 0.5, 14],
"to": [9.2, 3, 14.75],
"faces": {
"north": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"east": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"south": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"west": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"}
}
},
{
"from": [8.1, 3, 14],
"to": [9.55, 3.75, 14.75],
"faces": {
"north": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"south": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
},
{
"from": [8.45, 3.475, 14],
"to": [9.2, 3.475, 14.75],
"faces": {
"up": {"uv": [6, 3, 10, 6], "texture": "#3"}
}
},
{
"from": [8.45, 3, 13.65],
"to": [9.2, 3.75, 15.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8.825, 3.375, 14.375]},
"faces": {
"east": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"west": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
},
{
"from": [8.45, 0.5, 4],
"to": [9.2, 3, 4.75],
"faces": {
"north": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"east": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"south": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"west": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"}
}
},
{
"from": [8.1, 3, 4],
"to": [9.55, 3.75, 4.75],
"faces": {
"north": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"south": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
},
{
"from": [8.45, 3.475, 4],
"to": [9.2, 3.475, 4.75],
"faces": {
"up": {"uv": [6, 3, 10, 6], "texture": "#3"}
}
},
{
"from": [8.45, 3, 3.65],
"to": [9.2, 3.75, 5.1],
"rotation": {"angle": 0, "axis": "y", "origin": [8.825, 3.375, 14.375]},
"faces": {
"east": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"west": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
},
{
"from": [8.45, 0.5, 0.8],
"to": [9.2, 3, 1.55],
"faces": {
"north": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"east": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"south": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"},
"west": {"uv": [6, 6, 9.75, 14.5], "texture": "#3"}
}
},
{
"from": [8.1, 3, 0.8],
"to": [9.55, 3.75, 1.55],
"faces": {
"north": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"south": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
},
{
"from": [8.45, 3.475, 0.8],
"to": [9.2, 3.475, 1.55],
"faces": {
"up": {"uv": [6, 3, 10, 6], "texture": "#3"}
}
},
{
"from": [8.45, 3, 0.45],
"to": [9.2, 3.75, 1.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8.825, 3.375, 14.375]},
"faces": {
"east": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"},
"west": {"uv": [4, 0, 11.75, 5.5], "texture": "#3"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, 4.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"translation": [0, 4, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"translation": [0, 3.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_lefthand": {
"translation": [0, 4.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"ground": {
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [45, 45, 0],
"translation": [0, -0.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"head": {
"translation": [0, 14.25, 0]
},
"fixed": {
"rotation": [-90, 0, 0],
"translation": [0, 0, -3.75],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "base",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [0, 1]
},
{
"name": "input",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [2, 3, 4, 5]
},
{
"name": "state",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [6, 7, 8, 9]
},
{
"name": "state",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": [10, 11, 12, 13]
}
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "ariasessentials:item/eiab"
}
}

Some files were not shown because too many files have changed in this diff Show more