From a92d49f214b6557aca2cf898daec17002df5e4e7 Mon Sep 17 00:00:00 2001 From: Halbear Date: Mon, 27 Jul 2026 02:58:36 +0100 Subject: [PATCH] alloy furnace multi block + block entity --- .../java/net/halbear/aotg/AgeoftheGods.java | 3 + .../blocks/AlloyFurnaceBlockEntity.java | 97 ++++++++++++ .../custom/blocks/AlloyFurnaceMultiBlock.java | 143 ++++++++++++++++++ .../blocks/AlloyFurnaceUpdateHandler.java | 60 ++++++++ .../aotg/registries/ModBlockEntities.java | 32 ++++ .../halbear/aotg/registries/ModBlocks.java | 8 + .../net/halbear/aotg/registries/ModItems.java | 1 + .../ageofthegods/Items/alloy_furnace.json | 6 + .../blockstates/alloy_furnace.json | 43 ++++++ .../ageofthegods/blockstates/olive_log.json | 3 +- .../assets/ageofthegods/lang/en_us.json | 10 ++ .../alloy_furnace/alloy_furnace_000.json | 23 +++ .../alloy_furnace/alloy_furnace_001.json | 23 +++ .../alloy_furnace/alloy_furnace_010.json | 23 +++ .../alloy_furnace/alloy_furnace_011.json | 23 +++ .../alloy_furnace/alloy_furnace_100.json | 23 +++ .../alloy_furnace/alloy_furnace_101.json | 23 +++ .../alloy_furnace/alloy_furnace_110.json | 23 +++ .../alloy_furnace/alloy_furnace_111.json | 23 +++ .../alloy_furnace/alloy_furnace_mini.json | 24 +++ .../models/item/xiphos/xiphos.json | 4 +- .../alloy_furnace_front_mini.png | Bin 0 -> 428 bytes .../alloy_furnace/alloy_furnace_sheet.png | Bin 0 -> 3490 bytes .../alloy_furnace/alloy_furnace_side_mini.png | Bin 0 -> 437 bytes .../alloy_furnace/alloy_furnace_top_mini.png | Bin 0 -> 434 bytes 25 files changed, 615 insertions(+), 3 deletions(-) create mode 100644 src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceBlockEntity.java create mode 100644 src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceMultiBlock.java create mode 100644 src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceUpdateHandler.java create mode 100644 src/main/java/net/halbear/aotg/registries/ModBlockEntities.java create mode 100644 src/main/resources/assets/ageofthegods/Items/alloy_furnace.json create mode 100644 src/main/resources/assets/ageofthegods/blockstates/alloy_furnace.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_000.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_001.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_010.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_011.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_100.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_101.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_110.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_111.json create mode 100644 src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_mini.json create mode 100644 src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_front_mini.png create mode 100644 src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_sheet.png create mode 100644 src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_side_mini.png create mode 100644 src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_top_mini.png diff --git a/src/main/java/net/halbear/aotg/AgeoftheGods.java b/src/main/java/net/halbear/aotg/AgeoftheGods.java index 6e7f623..5532ff7 100644 --- a/src/main/java/net/halbear/aotg/AgeoftheGods.java +++ b/src/main/java/net/halbear/aotg/AgeoftheGods.java @@ -38,6 +38,7 @@ import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; +import static net.halbear.aotg.registries.ModBlockEntities.BLOCK_ENTITY_TYPES; import static net.halbear.aotg.registries.ModBlocks.*; import static net.halbear.aotg.registries.ModFoliagePlacers.FOLIAGE_PLACERS; import static net.halbear.aotg.registries.ModItems.*; @@ -66,6 +67,7 @@ public class AgeoftheGods { output.accept(OLIVE_LEAVES_ITEM.get()); output.accept(OLIVE_LOG_ITEM.get()); output.accept(XIPHOS_SWORD.get()); + output.accept(ALLOY_FURNACE_ITEM.get()); }).build()); // The constructor for the mod class is the first code that is run when your mod is loaded. @@ -75,6 +77,7 @@ public class AgeoftheGods { modEventBus.addListener(this::commonSetup); // Register the Deferred Register to the mod event bus so blocks get registered BLOCKS.register(modEventBus); + BLOCK_ENTITY_TYPES.register(modEventBus); // Register the Deferred Register to the mod event bus so items get registered ITEMS.register(modEventBus); // Register the Deferred Register to the mod event bus so tabs get registered diff --git a/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceBlockEntity.java b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceBlockEntity.java new file mode 100644 index 0000000..7c282eb --- /dev/null +++ b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceBlockEntity.java @@ -0,0 +1,97 @@ +package net.halbear.aotg.custom.blocks; + +import net.halbear.aotg.registries.ModBlocks; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; + +import static net.halbear.aotg.custom.blocks.AlloyFurnaceMultiBlock.MULTI_BLOCK_POSITIONS; +import static net.halbear.aotg.custom.blocks.AlloyFurnaceMultiBlock.FACING; +import static net.halbear.aotg.custom.blocks.AlloyFurnaceUpdateHandler.getInverseRotationForDirection; +import static net.halbear.aotg.registries.ModBlockEntities.ALLOY_FURNACE_BLOCK_ENTITY; + +public class AlloyFurnaceBlockEntity extends BlockEntity { + private boolean isFormed = false; + private float Fuel = 0.0f; + private int progress = 0; + + public AlloyFurnaceBlockEntity(BlockPos worldPosition, BlockState blockState) { + super(ALLOY_FURNACE_BLOCK_ENTITY.get(), worldPosition, blockState); + } + + + public boolean checkStructure(Level level, BlockPos masterPos, BlockState blockState) { + Direction direction = blockState.getValue(FACING); + Rotation rotation = getInverseRotationForDirection(direction); + boolean Complete =true; + for (BlockPos offset : MULTI_BLOCK_POSITIONS) { + + BlockPos Rotated = offset.rotate(rotation); + BlockPos targetPos = masterPos.offset(Rotated); + BlockState state = level.getBlockState(targetPos); + + if (!state.is(ModBlocks.ALLOY_FURNACE.get())) { + Complete = false; + } + } + return Complete; + } + + + public static void tick(Level level, BlockPos pos, BlockState state, AlloyFurnaceBlockEntity blockEntity) { + if (level.isClientSide() || !state.getValue(AlloyFurnaceMultiBlock.PARENT_BLOCK)) return; + + if (level.getGameTime() % 20 == 0) { + blockEntity.isFormed = blockEntity.checkStructure(level, pos, state); + } + + if (blockEntity.isFormed) { + blockEntity.progress++; + blockEntity.setChanged(); + } + } + + @Override + public void loadAdditional(ValueInput input) { + super.loadAdditional(input); + this.Fuel = input.getFloatOr("fuel", 0); + } + + @Override + public void saveAdditional(ValueOutput output) { + super.saveAdditional(output); + output.putFloat("fuel", this.Fuel); + } + + @Override + public CompoundTag getUpdateTag(HolderLookup.Provider registries) { + return this.saveWithoutMetadata(registries); + } + + @Override + public void handleUpdateTag(ValueInput input) { + super.handleUpdateTag(input); + } + + + @Override + public Packet getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); + } + + @Override + public void onDataPacket(Connection connection, ValueInput input) { + super.onDataPacket(connection, input); + } +} diff --git a/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceMultiBlock.java b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceMultiBlock.java new file mode 100644 index 0000000..4c3d2d2 --- /dev/null +++ b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceMultiBlock.java @@ -0,0 +1,143 @@ +package net.halbear.aotg.custom.blocks; + +import com.mojang.serialization.MapCodec; +import net.halbear.aotg.AgeoftheGods; +import net.halbear.aotg.registries.ModBlocks; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.TriState; +import net.minecraft.world.Containers; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.Rotation; +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.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import org.jspecify.annotations.Nullable; + +import static net.halbear.aotg.custom.blocks.AlloyFurnaceUpdateHandler.getInverseRotationForDirection; +import static net.halbear.aotg.registries.ModBlockEntities.ALLOY_FURNACE_BLOCK_ENTITY; + +public class AlloyFurnaceMultiBlock extends Block implements EntityBlock { + + public static final BlockPos[] MULTI_BLOCK_POSITIONS = { + /*Master block is 0,0,0*/ new BlockPos(0,0,1), + new BlockPos(-1,0,0), new BlockPos(-1,0,1), + new BlockPos(0,1,0), new BlockPos(-1,1,0), + new BlockPos(-1,1,1), new BlockPos(0,1,1) + }; + + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final IntegerProperty MODEL_PART = IntegerProperty.create("modelpart",0,8); + public static final BooleanProperty PARENT_BLOCK = BooleanProperty.create("parent"); + + public AlloyFurnaceMultiBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.defaultBlockState().setValue(MODEL_PART,0).setValue(PARENT_BLOCK,true).setValue(FACING,Direction.NORTH)); + } + + @Override + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) { + Containers.updateNeighboursAfterDestroy(state, level, pos); + } + + private static @javax.annotation.Nullable BlockEntityTicker createTickerHelper( + BlockEntityType type, BlockEntityType checkedType, BlockEntityTicker ticker + ) { + return checkedType == type ? (BlockEntityTicker) ticker : null; + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createTickerHelper(type, ALLOY_FURNACE_BLOCK_ENTITY.get(), AlloyFurnaceBlockEntity::tick); + } + + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + BlockState blockState = this.defaultBlockState(); + BlockPos position = context.getClickedPos(); + Level level = context.getLevel(); + blockState = blockState.setValue(FACING, context.getHorizontalDirection().getOpposite()); + + for(int x = -1; x < 2; x++){ + for(int z = -1; z < 2; z++){ + for(int y = -1; y < 2; y++){ + BlockPos parentPos = position.offset(x,y,z); + BlockState state = level.getBlockState(parentPos); + + if(state.is(ModBlocks.ALLOY_FURNACE.get()) && state.getValue(PARENT_BLOCK)) { + AgeoftheGods.LOGGER.debug("LOCATED PARENT BLOCK AT: " + parentPos); + Direction direction = state.getValue(FACING); + Rotation rotation = getInverseRotationForDirection(direction); + AgeoftheGods.LOGGER.debug("Placed Next to PARENT_BLOCK"); + for (BlockPos offset : MULTI_BLOCK_POSITIONS) { + BlockPos Rotated = offset.rotate(rotation); + BlockPos targetPos = parentPos.offset(Rotated); + AgeoftheGods.LOGGER.debug("TARGET_POS: " + targetPos + " | CURRENT_POS: " + position + " | ROTATION: " + Rotated); + if (targetPos.getX() == position.getX() && targetPos.getY() == position.getY() && targetPos.getZ() == position.getZ()) { + blockState = blockState.setValue(PARENT_BLOCK, false); + blockState = blockState.setValue(FACING, direction); + String PosString = Math.abs(offset.getX()) + "_" + Math.abs(offset.getY()) + "_" + Math.abs(offset.getZ()); + AgeoftheGods.LOGGER.debug("POS_STRING: " + PosString); + switch (PosString) { + case "0_0_0": + blockState = blockState.setValue(PARENT_BLOCK, true); + blockState = blockState.setValue(MODEL_PART, 0); + break; + case "1_0_0": + blockState = blockState.setValue(MODEL_PART, 1); + break; + case "1_0_1": + blockState = blockState.setValue(MODEL_PART, 2); + break; + case "0_0_1": + blockState = blockState.setValue(MODEL_PART, 3); + break; + case "0_1_0": + blockState = blockState.setValue(MODEL_PART, 4); + break; + case "1_1_0": + blockState = blockState.setValue(MODEL_PART, 5); + break; + case "1_1_1": + blockState = blockState.setValue(MODEL_PART, 6); + break; + case "0_1_1": + blockState = blockState.setValue(MODEL_PART, 7); + break; + } + } + } + } + } + } + } + + if (blockState.getValue(PARENT_BLOCK)) AgeoftheGods.LOGGER.debug("becoming PARENT_BLOCK"); + return blockState; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder){ + builder.add(MODEL_PART); + builder.add(FACING); + builder.add(PARENT_BLOCK); + } + + @Override + public @Nullable BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new AlloyFurnaceBlockEntity(blockPos,blockState); + } +} \ No newline at end of file diff --git a/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceUpdateHandler.java b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceUpdateHandler.java new file mode 100644 index 0000000..107861d --- /dev/null +++ b/src/main/java/net/halbear/aotg/custom/blocks/AlloyFurnaceUpdateHandler.java @@ -0,0 +1,60 @@ +package net.halbear.aotg.custom.blocks; + +import net.halbear.aotg.AgeoftheGods; +import net.halbear.aotg.registries.ModBlocks; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.TestBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.event.level.BlockEvent; + +import java.util.ArrayList; +import java.util.List; + +@EventBusSubscriber(modid = AgeoftheGods.MODID) +public class AlloyFurnaceUpdateHandler { + + public static final BlockPos[] parts = new BlockPos[]{new BlockPos(0,0,0),new BlockPos(-1,0,0),new BlockPos(-1,0,1),new BlockPos(0,0,1), + new BlockPos(0,1,0),new BlockPos(-1,1,0),new BlockPos(-1,1,1),new BlockPos(0,1,1)}; + + //@SubscribeEvent + public static void onNeighborNotify(BlockEvent.NeighborNotifyEvent event) { + var level = event.getLevel(); + var pos = event.getPos(); + var state = event.getState(); + var notifiedSides = event.getNotifiedSides(); + + } + + //@SubscribeEvent + public static void onBlockPlace(BlockEvent.EntityPlaceEvent event) { + var level = event.getLevel(); + var pos = event.getPos(); + var state = event.getPlacedBlock(); + } + + public static int GetModelPart(BlockPos MultipartLocation){ + for(int i = 0; i < 8; i++){ + if(MultipartLocation.getX() == parts[i].getX() && MultipartLocation.getZ() == parts[i].getZ() && MultipartLocation.getY() == parts[i].getY()){ + return i; + } + } + return -1; + } + + public static BlockPos GetMultipartLocation(int ModelPart){ + return parts[Math.clamp(ModelPart,0,7)]; + } + + public static Rotation getInverseRotationForDirection(Direction facing) { + return switch (facing) { + case SOUTH -> Rotation.CLOCKWISE_180; + case WEST -> Rotation.COUNTERCLOCKWISE_90; + case EAST -> Rotation.CLOCKWISE_90; + default -> Rotation.NONE; + }; + } +} diff --git a/src/main/java/net/halbear/aotg/registries/ModBlockEntities.java b/src/main/java/net/halbear/aotg/registries/ModBlockEntities.java new file mode 100644 index 0000000..7a4e653 --- /dev/null +++ b/src/main/java/net/halbear/aotg/registries/ModBlockEntities.java @@ -0,0 +1,32 @@ +package net.halbear.aotg.registries; + +import net.halbear.aotg.AgeoftheGods; +import net.halbear.aotg.custom.blocks.AlloyFurnaceBlockEntity; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; +import org.intellij.lang.annotations.Identifier; + +import java.util.function.Function; +import java.util.function.Supplier; + +public class ModBlockEntities { + public static final DeferredRegister> BLOCK_ENTITY_TYPES = + DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, AgeoftheGods.MODID); + + public static final Supplier> ALLOY_FURNACE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register( + "alloy_furnace_block_entity", + () -> new BlockEntityType<>( + AlloyFurnaceBlockEntity::new, + false, + ModBlocks.ALLOY_FURNACE.get() + ) + ); + +} diff --git a/src/main/java/net/halbear/aotg/registries/ModBlocks.java b/src/main/java/net/halbear/aotg/registries/ModBlocks.java index cbf15bf..61a39f1 100644 --- a/src/main/java/net/halbear/aotg/registries/ModBlocks.java +++ b/src/main/java/net/halbear/aotg/registries/ModBlocks.java @@ -1,6 +1,7 @@ package net.halbear.aotg.registries; import net.halbear.aotg.AgeoftheGods; +import net.halbear.aotg.custom.blocks.AlloyFurnaceMultiBlock; import net.halbear.aotg.custom.blocks.RockCoveredGrassBlock; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -66,6 +67,13 @@ public class ModBlocks { .sound(SoundType.GRASS) .lightLevel(state -> 0) )); + public static final DeferredBlock ALLOY_FURNACE = RegisterBlock("alloy_furnace", + properties -> new AlloyFurnaceMultiBlock(properties.strength(1.5f) + .requiresCorrectToolForDrops() + .explosionResistance(6.0f) + .sound(SoundType.DEEPSLATE_BRICKS) + .lightLevel(state -> 0) + )); private static DeferredBlock RegisterBlock(String Name, Function function){ DeferredBlock newBlock = BLOCKS.registerBlock(Name, function); diff --git a/src/main/java/net/halbear/aotg/registries/ModItems.java b/src/main/java/net/halbear/aotg/registries/ModItems.java index 4949fe1..8908794 100644 --- a/src/main/java/net/halbear/aotg/registries/ModItems.java +++ b/src/main/java/net/halbear/aotg/registries/ModItems.java @@ -22,6 +22,7 @@ public class ModItems { public static final DeferredItem LIMESTONE_GRASS_ITEM = ITEMS.registerSimpleBlockItem("limestone_grass_block", LIMESTONE_GRASS_BLOCK); public static final DeferredItem OLIVE_LEAVES_ITEM = ITEMS.registerSimpleBlockItem("olive_leaves", OLIVE_LEAVES); public static final DeferredItem OLIVE_LOG_ITEM = ITEMS.registerSimpleBlockItem("olive_log", OLIVE_LOG); + public static final DeferredItem ALLOY_FURNACE_ITEM = ITEMS.registerSimpleBlockItem("alloy_furnace", ALLOY_FURNACE); public static final DeferredItem XIPHOS_SWORD = RegisterItem("xiphos", properties -> new Item(properties diff --git a/src/main/resources/assets/ageofthegods/Items/alloy_furnace.json b/src/main/resources/assets/ageofthegods/Items/alloy_furnace.json new file mode 100644 index 0000000..8400fb0 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/Items/alloy_furnace.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ageofthegods:block/alloy_furnace/alloy_furnace_mini" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/blockstates/alloy_furnace.json b/src/main/resources/assets/ageofthegods/blockstates/alloy_furnace.json new file mode 100644 index 0000000..6e1d820 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/blockstates/alloy_furnace.json @@ -0,0 +1,43 @@ +{ + "variants": { + "facing=north,modelpart=0": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_000", "y": 0}, + "facing=south,modelpart=0": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_000", "y": 180}, + "facing=west,modelpart=0": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_000", "y": 270}, + "facing=east,modelpart=0": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_000", "y": 90}, + + "facing=north,modelpart=1": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_100", "y": 0}, + "facing=south,modelpart=1": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_100", "y": 180}, + "facing=west,modelpart=1": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_100", "y": 270}, + "facing=east,modelpart=1": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_100", "y": 90}, + + "facing=north,modelpart=2": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_101", "y": 0}, + "facing=south,modelpart=2": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_101", "y": 180}, + "facing=west,modelpart=2": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_101", "y": 270}, + "facing=east,modelpart=2": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_101", "y": 90}, + + "facing=north,modelpart=3": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_001", "y": 0}, + "facing=south,modelpart=3": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_001", "y": 180}, + "facing=west,modelpart=3": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_001", "y": 270}, + "facing=east,modelpart=3": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_001", "y": 90}, + + "facing=north,modelpart=4": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_010", "y": 0}, + "facing=south,modelpart=4": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_010", "y": 180}, + "facing=west,modelpart=4": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_010", "y": 270}, + "facing=east,modelpart=4": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_010", "y": 90}, + + "facing=north,modelpart=5": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_110", "y": 0}, + "facing=south,modelpart=5": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_110", "y": 180}, + "facing=west,modelpart=5": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_110", "y": 270}, + "facing=east,modelpart=5": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_110", "y": 90}, + + "facing=north,modelpart=6": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_111", "y": 0}, + "facing=south,modelpart=6": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_111", "y": 180}, + "facing=west,modelpart=6": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_111", "y": 270}, + "facing=east,modelpart=6": {"model": "ageofthegods:block/alloy_furnace/alloy_furnace_111", "y": 90}, + + "facing=north,modelpart=7": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_011", "y": 0}, + "facing=south,modelpart=7": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_011", "y": 180}, + "facing=west,modelpart=7": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_011", "y": 270}, + "facing=east,modelpart=7": { "model": "ageofthegods:block/alloy_furnace/alloy_furnace_011", "y": 90} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/blockstates/olive_log.json b/src/main/resources/assets/ageofthegods/blockstates/olive_log.json index 61546c5..887ca5e 100644 --- a/src/main/resources/assets/ageofthegods/blockstates/olive_log.json +++ b/src/main/resources/assets/ageofthegods/blockstates/olive_log.json @@ -3,7 +3,8 @@ "axis=y": [ { "model": "ageofthegods:block/olive/olive_log1", "weight": 13 - },{ + }, + { "model": "ageofthegods:block/olive/olive_log2", "weight":13 }, { diff --git a/src/main/resources/assets/ageofthegods/lang/en_us.json b/src/main/resources/assets/ageofthegods/lang/en_us.json index 1790f7b..4f713fc 100644 --- a/src/main/resources/assets/ageofthegods/lang/en_us.json +++ b/src/main/resources/assets/ageofthegods/lang/en_us.json @@ -1,6 +1,16 @@ { "itemGroup.ageofthegods": "Age of the Gods", + "block.ageofthegods.limestone_block": "Limestone", + "block.ageofthegods.limestone_grass_block": "Grassy Limestone", + "block.ageofthegods.shale_block": "Shale", + "block.ageofthegods.shale_grass_block": "Grassy Shale", + "block.ageofthegods.olive_leaves": "Olive Leaves", + "block.ageofthegods.olive_log": "Olive Log", + "block.ageofthegods.alloy_furnace": "Alloy Furnace Segment", + + "item.ageofthegods.xiphos": "Xiphos", + "ageofthegods.configuration.title": "Age of the Gods Configs", "ageofthegods.configuration.section.ageofthegods.common.toml": "Age of the Gods Configs", "ageofthegods.configuration.section.ageofthegods.common.toml.title": "Age of the Gods Configs", diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_000.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_000.json new file mode 100644 index 0000000..f5f00a8 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_000.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [14, 8,16, 12 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [2, 8, 4, 12], "texture": "#all", "cullface": "down" }, + "north": {"uv": [4, 12,6, 16], "texture": "#all", "cullface": "north" }, + "west": {"uv": [8, 4,10, 8 ], "texture": "#all", "cullface": "west" }, + "south": {"uv": [10,12,12, 16 ], "texture": "#all", "cullface": "south" }, + "east": {"uv": [0, 4, 2,8], "texture": "#all", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_001.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_001.json new file mode 100644 index 0000000..f4bdcd1 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_001.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [14, 12,16, 16 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [2, 12, 4, 16], "texture": "#all", "cullface": "down" }, + "north": {"uv": [8, 12,10, 16 ], "texture": "#all", "cullface": "north" }, + "west": {"uv": [8, 4,10, 8 ], "texture": "#all", "cullface": "west" }, + "south": {"uv": [2,4,4, 8 ], "texture": "#all", "cullface": "south" }, + "east": {"uv": [0, 4, 2,8], "texture": "#all", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_010.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_010.json new file mode 100644 index 0000000..0fe0024 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_010.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [6, 0,8, 4 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [14, 12, 16, 16], "texture": "#all", "cullface": "down" }, + "north": {"uv": [4, 8,6, 12], "texture": "#all", "cullface": "north" }, + "west": {"uv": [8, 0,10, 4 ], "texture": "#all", "cullface": "west" }, + "south": {"uv": [10,0,12, 4 ], "texture": "#all", "cullface": "south" }, + "east": {"uv": [0, 0, 2,4], "texture": "#all", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_011.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_011.json new file mode 100644 index 0000000..4145ee8 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_011.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [6, 4,8, 8 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [14, 8, 16, 12], "texture": "#all", "cullface": "down" }, + "north": {"uv": [8, 0,10, 4], "texture": "#all", "cullface": "north" }, + "east": {"uv": [0, 0,2, 4 ], "texture": "#all", "cullface": "east" }, + "south": {"uv": [2,0,4, 4], "texture": "#all", "cullface": "south" }, + "west": {"uv": [10, 0, 12,4], "texture": "#all", "cullface": "west" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_100.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_100.json new file mode 100644 index 0000000..7fdfbb2 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_100.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [12, 8,14, 12 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [0, 8, 2, 12], "texture": "#all", "cullface": "down" }, + "north": {"uv": [6, 12,8, 16], "texture": "#all", "cullface": "north" }, + "east": {"uv": [8, 4,10, 8 ], "texture": "#all", "cullface": "east" }, + "south": {"uv": [8,12,10, 16 ], "texture": "#all", "cullface": "south" }, + "west": {"uv": [0, 4, 2,8], "texture": "#all", "cullface": "west" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_101.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_101.json new file mode 100644 index 0000000..6e8e44d --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_101.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [12, 12,14, 16 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [0, 12, 2, 16], "texture": "#all", "cullface": "down" }, + "north": {"uv": [10, 12,12, 16], "texture": "#all", "cullface": "north" }, + "east": {"uv": [8, 4,10, 8 ], "texture": "#all", "cullface": "east" }, + "south": {"uv": [0,4,2, 8 ], "texture": "#all", "cullface": "south" }, + "west": {"uv": [2, 4, 4,8], "texture": "#all", "cullface": "west" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_110.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_110.json new file mode 100644 index 0000000..fff743e --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_110.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [4, 0,6, 4 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [12, 12, 14, 16], "texture": "#all", "cullface": "down" }, + "north": {"uv": [6, 8,8, 12], "texture": "#all", "cullface": "north" }, + "east": {"uv": [10, 0,12, 4 ], "texture": "#all", "cullface": "east" }, + "south": {"uv": [8,0,10, 4 ], "texture": "#all", "cullface": "south" }, + "west": {"uv": [0, 0, 2,4], "texture": "#all", "cullface": "west" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_111.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_111.json new file mode 100644 index 0000000..8612f83 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_111.json @@ -0,0 +1,23 @@ + +{ + "comment": "can't believe i'm doing this manually again - hal, 0.25 vert, 0.125 hoz", + "parent": "block/block", + "textures": { + "all": "ageofthegods:block/alloy_furnace/alloy_furnace_sheet", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [4, 4,6, 8 ], "texture": "#all", "cullface": "up" }, + "down": {"uv": [12, 8, 14, 12], "texture": "#all", "cullface": "down" }, + "north": {"uv": [10, 0,12, 4], "texture": "#all", "cullface": "north" }, + "west": {"uv": [0, 0,2, 4 ], "texture": "#all", "cullface": "west" }, + "south": {"uv": [2,0,4, 4], "texture": "#all", "cullface": "south" }, + "east": {"uv": [8, 0, 10,4], "texture": "#all", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_mini.json b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_mini.json new file mode 100644 index 0000000..5046f49 --- /dev/null +++ b/src/main/resources/assets/ageofthegods/models/block/alloy_furnace/alloy_furnace_mini.json @@ -0,0 +1,24 @@ + +{ + "parent": "block/block", + "textures": { + "top": "ageofthegods:block/alloy_furnace/alloy_furnace_top_mini", + "side": "ageofthegods:block/alloy_furnace/alloy_furnace_side_mini", + "front": "ageofthegods:block/alloy_furnace/alloy_furnace_front_mini", + "particle": "block/bricks" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0,0,16,16], "texture": "#top", "cullface": "up" }, + "down": {"uv": [0,0,16,16], "texture": "#top", "cullface": "down" }, + "north": {"uv": [0,0,16,16], "texture": "#front", "cullface": "north" }, + "west": {"uv": [0,0,16,16], "texture": "#side", "cullface": "west" }, + "south": {"uv": [0,0,16,16], "texture": "#side", "cullface": "south" }, + "east": {"uv": [0,0,16,16], "texture": "#side", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ageofthegods/models/item/xiphos/xiphos.json b/src/main/resources/assets/ageofthegods/models/item/xiphos/xiphos.json index f9675ed..f4b43e4 100644 --- a/src/main/resources/assets/ageofthegods/models/item/xiphos/xiphos.json +++ b/src/main/resources/assets/ageofthegods/models/item/xiphos/xiphos.json @@ -3,8 +3,8 @@ "credit": "Made with Blockbench", "texture_size": [32, 32], "textures": { - "0": "ageofthegods:xiphos/xiphos", - "particle": "ageofthegods:xiphos/xiphos" + "0": "ageofthegods:item/xiphos", + "particle": "ageofthegods:item/xiphos" }, "elements": [ { diff --git a/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_front_mini.png b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_front_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..e33152fc6d361144a4fed15b34b99a4548baef2f GIT binary patch literal 428 zcmV;d0aN~oP)Px$W=TXrR5*>5lCe&MP!xv05>lGl0xrO0m!?VGx)}E+4h}9Ros5ICt54x0G;uIK zgM$y?s+$SvLMLE>w$zj^b)Xk76s!IVT*&{O|D1bjbd}! z{sgPlBuqZBT1@~{054hqU^p2l@WbrI53wB!+p*AelPQ1%0Z_eYLFced>~!Ipu!BGTCFDd6M{<1?^5I{ WyPi}s(Zrzu0000}` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_sheet.png b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..d52d44d2c2ea54a5e15168aa35da6b68747fc3e7 GIT binary patch literal 3490 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_top_mini.png b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_top_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc596ac57d108613a780459f5753185d48c5b71 GIT binary patch literal 434 zcmV;j0ZsmiP)Px$Y)M2xR5*==ld(#}U=YWD4Z%noo4BOGL6;KfAhc@-K?H?@xalGeeFvYyM-ZHR z0bio4*@Tj%Tly_YlQbBYI@E;kYf}6}NOE`oyZ>=_t&i#L20&yv0LF04G86#xTnD3T zQzS6}g+Ehb>@YwRS&qnZ7E!8@0hXbt$X4LvnC;4LhXDY3_hJHo_ZQf69hxvVPqrVX zYS)3P%FEk(BY79k(?{lCpPU^Zp%qE2$Oc$t>*|qhC5*1k`P~DHC`D@`HznKk6-kVD zd4sl3=6CUP=MQqFd%mOv|jJ8HYHI;dET+x=hX9R cYRX0W1(6-Sq?g3r