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 0000000..e33152f Binary files /dev/null and b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_front_mini.png differ 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 0000000..d52d44d Binary files /dev/null and b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_sheet.png differ diff --git a/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_side_mini.png b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_side_mini.png new file mode 100644 index 0000000..9d46ed4 Binary files /dev/null and b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_side_mini.png differ 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 0000000..7cc596a Binary files /dev/null and b/src/main/resources/assets/ageofthegods/textures/block/alloy_furnace/alloy_furnace_top_mini.png differ