diff --git a/build.gradle b/build.gradle index 0a4e2b6..4151ac9 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,14 @@ base { } repositories { + maven { + name = 'GeckoLib' + url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' + content { + includeGroupByRegex("software\\.bernie.*") + includeGroup("com.eliotlash.mclib") + } + } maven { url "https://maven.rotgruengelb.net/releases" } @@ -28,6 +36,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation(annotationProcessor("net.rotgruengelb:nixienaut:${project.nixienaut_version}")) + modImplementation "software.bernie.geckolib:geckolib-fabric-1.20.4:${project.geckolib_version}" } processResources { @@ -35,13 +44,15 @@ processResources { inputs.property "minecraft_version", project.minecraft_version inputs.property "loader_version", project.loader_version inputs.property "nixienaut_version", project.nixienaut_version + inputs.property "geckolib_version", project.geckolib_version filteringCharset "UTF-8" filesMatching("fabric.mod.json") { expand "version": project.version, "minecraft_version": project.minecraft_version, "loader_version": project.loader_version, - "nixienaut_version": project.nixienaut_version + "nixienaut_version": project.nixienaut_version, + "geckolib_version": project.geckolib_version } } diff --git a/gradle.properties b/gradle.properties index 3a681ab..145e302 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,5 @@ archives_base_name=forestal # Dependencies fabric_version=0.96.4+1.20.4 -nixienaut_version=1.4.0 \ No newline at end of file +nixienaut_version=1.4.0 +geckolib_version=4.4.4 \ No newline at end of file diff --git a/src/client/java/net/rotgruengelb/forestal/ForestalClient.java b/src/client/java/net/rotgruengelb/forestal/ForestalClient.java index a36e667..e23bcd0 100644 --- a/src/client/java/net/rotgruengelb/forestal/ForestalClient.java +++ b/src/client/java/net/rotgruengelb/forestal/ForestalClient.java @@ -5,6 +5,5 @@ public class ForestalClient implements ClientModInitializer { @Override public void onInitializeClient() { - // This entrypoint is suitable for setting up client-specific logic, such as rendering. } } \ No newline at end of file diff --git a/src/main/java/net/rotgruengelb/forestal/Forestal.java b/src/main/java/net/rotgruengelb/forestal/Forestal.java index 6936c82..c613ed7 100644 --- a/src/main/java/net/rotgruengelb/forestal/Forestal.java +++ b/src/main/java/net/rotgruengelb/forestal/Forestal.java @@ -1,22 +1,17 @@ package net.rotgruengelb.forestal; import net.fabricmc.api.ModInitializer; - +import net.rotgruengelb.forestal.block.ForestalBlocks; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Forestal implements ModInitializer { - // This logger is used to write text to the console and the log file. - // It is considered best practice to use your mod id as the logger's name. - // That way, it's clear which mod wrote info, warnings, and errors. - public static final Logger LOGGER = LoggerFactory.getLogger("forestal"); + + public static final String MOD_ID = "forestal"; + public static final Logger LOGGER = LoggerFactory.getLogger("forestal"); @Override public void onInitialize() { - // This code runs as soon as Minecraft is in a mod-load-ready state. - // However, some things (like resources) may still be uninitialized. - // Proceed with mild caution. - - LOGGER.info("Hello Fabric world!"); + ForestalBlocks.registerModBlocks(); } } \ No newline at end of file diff --git a/src/main/java/net/rotgruengelb/forestal/block/ForestalBlocks.java b/src/main/java/net/rotgruengelb/forestal/block/ForestalBlocks.java new file mode 100644 index 0000000..32abc7f --- /dev/null +++ b/src/main/java/net/rotgruengelb/forestal/block/ForestalBlocks.java @@ -0,0 +1,33 @@ +package net.rotgruengelb.forestal.block; + +import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import net.rotgruengelb.forestal.Forestal; + +public class ForestalBlocks { + + public static final Block ZONE_BLOCK = registerBlock("grizzly_plushie", new PlushieBlock(FabricBlockSettings.create() + .nonOpaque())); + + private static Block registerBlockNoItem(String name, Block block) { + return Registry.register(Registries.BLOCK, new Identifier(Forestal.MOD_ID, name), block); + } + + private static Block registerBlock(String name, Block block) { + registerBlockItem(name, new BlockItem(block, new FabricItemSettings())); + return Registry.register(Registries.BLOCK, new Identifier(Forestal.MOD_ID, name), block); + } + + private static BlockItem registerBlockItem(String name, BlockItem blockItem) { + return Registry.register(Registries.ITEM, new Identifier(Forestal.MOD_ID, name), blockItem); + } + + public static void registerModBlocks() { + Forestal.LOGGER.debug("Registering LandscapeBlocks for " + Forestal.MOD_ID); + } +} diff --git a/src/main/java/net/rotgruengelb/forestal/block/PlushieBlock.java b/src/main/java/net/rotgruengelb/forestal/block/PlushieBlock.java new file mode 100644 index 0000000..49dc472 --- /dev/null +++ b/src/main/java/net/rotgruengelb/forestal/block/PlushieBlock.java @@ -0,0 +1,86 @@ +package net.rotgruengelb.forestal.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.block.*; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.BlockRotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; + +public class PlushieBlock extends HorizontalFacingBlock implements Waterloggable { + + public static final DirectionProperty FACING = HorizontalFacingBlock.FACING; + public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; + protected static final VoxelShape SHAPE = Block.createCuboidShape(4.0, 0.0, 4.0, 12.0, 10.0, 12.0); + protected static final VoxelShape COLLISION_SHAPE = Block.createCuboidShape(4.0, 0.0, 4.0, 12.0, 8.0, 12.0); + + public PlushieBlock(AbstractBlock.Settings settings) { + super(settings); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH) + .with(WATERLOGGED, false)); + } + + public MapCodec getCodec() { + return null; + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return SHAPE; + } + + @Override + public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return COLLISION_SHAPE; + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSolid(); + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (direction == Direction.DOWN && !this.canPlaceAt(state, world, pos)) { + return Blocks.AIR.getDefaultState(); + } + return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos); + } + + @Override + public BlockState rotate(BlockState state, BlockRotation rotation) { + return state.with(FACING, rotation.rotate(state.get(FACING))); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockState blockState = this.getDefaultState(); + FluidState fluidState = ctx.getWorld().getFluidState(ctx.getBlockPos()); + blockState = blockState.with(FACING, ctx.getHorizontalPlayerFacing()); + return blockState.with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + + @Override + + public FluidState getFluidState(BlockState state) { + if (state.get(WATERLOGGED).booleanValue()) { + return Fluids.WATER.getStill(false); + } + return super.getFluidState(state); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING, WATERLOGGED); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/blockstates/grizzly_plushie.json b/src/main/resources/assets/forestal/blockstates/grizzly_plushie.json new file mode 100644 index 0000000..f6fcdb6 --- /dev/null +++ b/src/main/resources/assets/forestal/blockstates/grizzly_plushie.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "forestal:block/grizzly_plushie", + "y": 270 + }, + "facing=north": { + "model": "forestal:block/grizzly_plushie", + "y": 180 + }, + "facing=south": { + "model": "forestal:block/grizzly_plushie" + }, + "facing=west": { + "model": "forestal:block/grizzly_plushie", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/grizzly_plushie.bbmodel b/src/main/resources/assets/forestal/grizzly_plushie.bbmodel new file mode 100644 index 0000000..d4992d7 --- /dev/null +++ b/src/main/resources/assets/forestal/grizzly_plushie.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.9","model_format":"java_block","box_uv":true},"name":"grizzly_plushie","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.5,0,6],"to":[11.5,9,11],"autouv":0,"color":0,"origin":[8.5,0,9],"faces":{"north":{"uv":[5,5,12,14],"texture":0},"east":{"uv":[0,5,5,14],"texture":0},"south":{"uv":[17,5,24,14],"texture":0},"west":{"uv":[12,5,17,14],"texture":0},"up":{"uv":[12,5,5,0],"texture":0},"down":{"uv":[19,0,12,5],"texture":0}},"type":"cube","uuid":"087812e8-1690-9738-4f48-af1a1e2dbdf9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9.5,0,5],"to":[12.5,2,6],"autouv":0,"color":6,"rotation":[0,-22.5,0],"origin":[11,1,5.5],"uv_offset":[16,19],"faces":{"north":{"uv":[17,20,20,22],"texture":0},"east":{"uv":[16,20,17,22],"texture":0},"south":{"uv":[21,20,24,22],"texture":0},"west":{"uv":[20,20,21,22],"texture":0},"up":{"uv":[20,20,17,19],"texture":0},"down":{"uv":[23,19,20,20],"texture":0}},"type":"cube","uuid":"8ff96bcb-edab-356d-d1a6-dd59f76a8bf4"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,0,5],"to":[6.5,2,6],"autouv":0,"color":6,"rotation":[0,22.5,0],"origin":[5,1,5.5],"uv_offset":[16,22],"faces":{"north":{"uv":[17,23,20,25],"texture":0},"east":{"uv":[16,23,17,25],"texture":0},"south":{"uv":[21,23,24,25],"texture":0},"west":{"uv":[20,23,21,25],"texture":0},"up":{"uv":[20,23,17,22],"texture":0},"down":{"uv":[23,22,20,23],"texture":0}},"type":"cube","uuid":"804c0a8d-4e9e-3f92-b5b4-ac316559d9cc"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9.5,8,8],"to":[12.5,10,9],"autouv":0,"color":8,"origin":[8.5,0,9],"uv_offset":[0,19],"faces":{"north":{"uv":[1,20,4,22],"texture":0},"east":{"uv":[0,20,1,22],"texture":0},"south":{"uv":[5,20,8,22],"texture":0},"west":{"uv":[4,20,5,22],"texture":0},"up":{"uv":[4,20,1,19],"texture":0},"down":{"uv":[7,19,4,20],"texture":0}},"type":"cube","uuid":"9bb79ca1-3473-8e2c-8694-5d1c5e4a623a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,8,8],"to":[6.5,10,9],"autouv":0,"color":8,"origin":[8.5,0,9],"uv_offset":[16,14],"faces":{"north":{"uv":[17,15,20,17],"texture":0},"east":{"uv":[16,15,17,17],"texture":0},"south":{"uv":[21,15,24,17],"texture":0},"west":{"uv":[20,15,21,17],"texture":0},"up":{"uv":[20,15,17,14],"texture":0},"down":{"uv":[23,14,20,15],"texture":0}},"type":"cube","uuid":"38dd8ded-45ec-64a9-a6bd-01aca5d3973b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5.5,5,4],"to":[10.5,7,7],"autouv":0,"color":5,"origin":[8.5,0,9],"uv_offset":[0,14],"faces":{"north":{"uv":[3,17,8,19],"texture":0},"east":{"uv":[0,17,3,19],"texture":0},"south":{"uv":[11,17,16,19],"texture":0},"west":{"uv":[8,17,11,19],"texture":0},"up":{"uv":[8,17,3,14],"texture":0},"down":{"uv":[13,14,8,17],"texture":0}},"type":"cube","uuid":"eb134a56-16d4-8aa5-0bb7-849daeab8476"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[8.89941753585461,-0.574010924528082,8],"to":[9.89941753585461,3.4259890754719198,10],"autouv":0,"color":0,"rotation":[0,0,22.5],"origin":[8,9.5,8],"uv_offset":[6,21],"faces":{"north":{"uv":[8,23,9,27],"texture":0},"east":{"uv":[6,23,8,27],"texture":0},"south":{"uv":[11,23,12,27],"texture":0},"west":{"uv":[9,23,11,27],"texture":0},"up":{"uv":[9,23,8,21],"texture":0},"down":{"uv":[10,21,9,23],"texture":0}},"type":"cube","uuid":"e71f7df3-c91f-31ba-66d8-5c2254c4c3f9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[6.1006,-0.5739999999999981,8],"to":[7.1006,3.4259999999999984,10],"autouv":0,"color":0,"rotation":[0,0,-22.5],"origin":[8,9.5,8],"uv_offset":[0,21],"faces":{"north":{"uv":[2,23,3,27],"texture":0},"east":{"uv":[0,23,2,27],"texture":0},"south":{"uv":[5,23,6,27],"texture":0},"west":{"uv":[3,23,5,27],"texture":0},"up":{"uv":[3,23,2,21],"texture":0},"down":{"uv":[4,21,3,23],"texture":0}},"type":"cube","uuid":"34efee8e-3c9f-c2ea-f656-a83ab7a95590"}],"outliner":[{"name":"grizzly_plushie","origin":[8,8,8],"color":0,"uuid":"0d1c5e92-650a-ec54-04c7-966f79fdef5f","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["087812e8-1690-9738-4f48-af1a1e2dbdf9","8ff96bcb-edab-356d-d1a6-dd59f76a8bf4","804c0a8d-4e9e-3f92-b5b4-ac316559d9cc","9bb79ca1-3473-8e2c-8694-5d1c5e4a623a","38dd8ded-45ec-64a9-a6bd-01aca5d3973b","eb134a56-16d4-8aa5-0bb7-849daeab8476","e71f7df3-c91f-31ba-66d8-5c2254c4c3f9","34efee8e-3c9f-c2ea-f656-a83ab7a95590"]}],"textures":[{"path":"","name":"texture","folder":"block","namespace":"","id":"0","width":32,"height":32,"uv_width":32,"uv_height":32,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"5bc2b7eb-01e1-e8dd-dc3a-f0141b7dd09f","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAl5JREFUWEftVz0vREEUnUew2Y2PyCoEESWRoFNYrVqnoEWiUBF+AaFSSNBS6NRaFDoKoRREFDayiI2PsHJHzubsmPdmXrIUYpq3b97MvWfOPffe2UBZxsRQX0Gm65M16j7/UrLCfOeP2/ungc1e1Jx1gwAQ542par337um1COTXAIABecKpgLrMPoQeqGwMzA736xCAAXgUJn4NAJw3JCpV7vldh0FG2QGw4JhbAQDn0IHJvakHCREGvq3vHkUKMwAAjjmMsAhdzrFf9rBovQAAediJbMqP2sPrvQAA/clVVl3nvlTe2ZzWT64FZzdZPdfSUKe629LfagRSNxYDUDynG+i2xdT2zZYx0M3SzqGfBtiZqYEfFeFIpqtYdlmIZhYwCMTYJwtcxSkQALbTI55cB2xi5CppyxQvALbaKgBMpUf1AdYGr3MCsDmPOwchi+M4zsVPiUIPNuYLyWRK+8/nn0JxDIwvFPeFZRHYc2YBe8n0tGpB8liYGlMABWAMACIOQ+sVAjn5/OqmtpGoqijaen770L8FBDuNG6Ko9ZpKAYBFctrp5TW1MjNZEoYfBYAbkIDgdgv6FkcHNUC0ZLPTiQ7QuM5vH/VZRAOu+GsRhrVj+SiOzKsZmDI7Jb/zbxcIXYhgtLc9rY4vvhoOhgDoaKpVOJn5jdMOjYsbmLMbikGwII6EZqDmeVk3t7VnbSyuEEWKkC8kPuo2T8Txh0bEDsIQBhq+Aq5iEA9ib9Z5eTcBQMBhlxanBriS+TDgMuhjg9cEZvz4Kg5Kec5FaWwAcTeUe33s/3L/AP4cA5/yFogwMtjKLgAAAABJRU5ErkJggg=="}],"display":{}} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/models/block/grizzly_plushie.bbmodel b/src/main/resources/assets/forestal/models/block/grizzly_plushie.bbmodel new file mode 100644 index 0000000..5bfdde4 --- /dev/null +++ b/src/main/resources/assets/forestal/models/block/grizzly_plushie.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.9","model_format":"java_block","box_uv":true},"name":"grizzly_plushie","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4,0,5],"to":[11,9,10],"autouv":0,"color":0,"origin":[8,0,8],"faces":{"north":{"uv":[5,5,12,14],"texture":0},"east":{"uv":[0,5,5,14],"texture":0},"south":{"uv":[17,5,24,14],"texture":0},"west":{"uv":[12,5,17,14],"texture":0},"up":{"uv":[12,5,5,0],"texture":0},"down":{"uv":[19,0,12,5],"texture":0}},"type":"cube","uuid":"087812e8-1690-9738-4f48-af1a1e2dbdf9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9,0,4],"to":[12,2,5],"autouv":0,"color":6,"rotation":[0,-22.5,0],"origin":[10.5,1,4.5],"uv_offset":[16,19],"faces":{"north":{"uv":[17,20,20,22],"texture":0},"east":{"uv":[16,20,17,22],"texture":0},"south":{"uv":[21,20,24,22],"texture":0},"west":{"uv":[20,20,21,22],"texture":0},"up":{"uv":[20,20,17,19],"texture":0},"down":{"uv":[23,19,20,20],"texture":0}},"type":"cube","uuid":"8ff96bcb-edab-356d-d1a6-dd59f76a8bf4"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3,0,4],"to":[6,2,5],"autouv":0,"color":6,"rotation":[0,22.5,0],"origin":[4.5,1,4.5],"uv_offset":[16,22],"faces":{"north":{"uv":[17,23,20,25],"texture":0},"east":{"uv":[16,23,17,25],"texture":0},"south":{"uv":[21,23,24,25],"texture":0},"west":{"uv":[20,23,21,25],"texture":0},"up":{"uv":[20,23,17,22],"texture":0},"down":{"uv":[23,22,20,23],"texture":0}},"type":"cube","uuid":"804c0a8d-4e9e-3f92-b5b4-ac316559d9cc"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9,8,7],"to":[12,10,8],"autouv":0,"color":8,"origin":[8,0,8],"uv_offset":[0,19],"faces":{"north":{"uv":[1,20,4,22],"texture":0},"east":{"uv":[0,20,1,22],"texture":0},"south":{"uv":[5,20,8,22],"texture":0},"west":{"uv":[4,20,5,22],"texture":0},"up":{"uv":[4,20,1,19],"texture":0},"down":{"uv":[7,19,4,20],"texture":0}},"type":"cube","uuid":"9bb79ca1-3473-8e2c-8694-5d1c5e4a623a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3,8,7],"to":[6,10,8],"autouv":0,"color":8,"origin":[8,0,8],"uv_offset":[16,14],"faces":{"north":{"uv":[17,15,20,17],"texture":0},"east":{"uv":[16,15,17,17],"texture":0},"south":{"uv":[21,15,24,17],"texture":0},"west":{"uv":[20,15,21,17],"texture":0},"up":{"uv":[20,15,17,14],"texture":0},"down":{"uv":[23,14,20,15],"texture":0}},"type":"cube","uuid":"38dd8ded-45ec-64a9-a6bd-01aca5d3973b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5,5,3],"to":[10,7,6],"autouv":0,"color":5,"origin":[8,0,8],"uv_offset":[0,14],"faces":{"north":{"uv":[3,17,8,19],"texture":0},"east":{"uv":[0,17,3,19],"texture":0},"south":{"uv":[11,17,16,19],"texture":0},"west":{"uv":[8,17,11,19],"texture":0},"up":{"uv":[8,17,3,14],"texture":0},"down":{"uv":[13,14,8,17],"texture":0}},"type":"cube","uuid":"eb134a56-16d4-8aa5-0bb7-849daeab8476"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[8.39941753585461,-0.574010924528082,7],"to":[9.39941753585461,3.4259890754719198,9],"autouv":0,"color":0,"rotation":[0,0,22.5],"origin":[7.5,9.5,7],"uv_offset":[6,21],"faces":{"north":{"uv":[8,23,9,27],"texture":0},"east":{"uv":[6,23,8,27],"texture":0},"south":{"uv":[11,23,12,27],"texture":0},"west":{"uv":[9,23,11,27],"texture":0},"up":{"uv":[9,23,8,21],"texture":0},"down":{"uv":[10,21,9,23],"texture":0}},"type":"cube","uuid":"e71f7df3-c91f-31ba-66d8-5c2254c4c3f9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5.6006,-0.5739999999999981,7],"to":[6.6006,3.4259999999999984,9],"autouv":0,"color":0,"rotation":[0,0,-22.5],"origin":[7.5,9.5,7],"uv_offset":[0,21],"faces":{"north":{"uv":[2,23,3,27],"texture":0},"east":{"uv":[0,23,2,27],"texture":0},"south":{"uv":[5,23,6,27],"texture":0},"west":{"uv":[3,23,5,27],"texture":0},"up":{"uv":[3,23,2,21],"texture":0},"down":{"uv":[4,21,3,23],"texture":0}},"type":"cube","uuid":"34efee8e-3c9f-c2ea-f656-a83ab7a95590"}],"outliner":[{"name":"grizzly_plushie","origin":[8,8,8],"color":0,"uuid":"0d1c5e92-650a-ec54-04c7-966f79fdef5f","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["087812e8-1690-9738-4f48-af1a1e2dbdf9","8ff96bcb-edab-356d-d1a6-dd59f76a8bf4","804c0a8d-4e9e-3f92-b5b4-ac316559d9cc","9bb79ca1-3473-8e2c-8694-5d1c5e4a623a","38dd8ded-45ec-64a9-a6bd-01aca5d3973b","eb134a56-16d4-8aa5-0bb7-849daeab8476","e71f7df3-c91f-31ba-66d8-5c2254c4c3f9","34efee8e-3c9f-c2ea-f656-a83ab7a95590"]}],"textures":[{"path":"","name":"texture","folder":"block","namespace":"","id":"0","width":32,"height":32,"uv_width":32,"uv_height":32,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"5bc2b7eb-01e1-e8dd-dc3a-f0141b7dd09f","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAl5JREFUWEftVz0vREEUnUew2Y2PyCoEESWRoFNYrVqnoEWiUBF+AaFSSNBS6NRaFDoKoRREFDayiI2PsHJHzubsmPdmXrIUYpq3b97MvWfOPffe2UBZxsRQX0Gm65M16j7/UrLCfOeP2/ungc1e1Jx1gwAQ542par337um1COTXAIABecKpgLrMPoQeqGwMzA736xCAAXgUJn4NAJw3JCpV7vldh0FG2QGw4JhbAQDn0IHJvakHCREGvq3vHkUKMwAAjjmMsAhdzrFf9rBovQAAediJbMqP2sPrvQAA/clVVl3nvlTe2ZzWT64FZzdZPdfSUKe629LfagRSNxYDUDynG+i2xdT2zZYx0M3SzqGfBtiZqYEfFeFIpqtYdlmIZhYwCMTYJwtcxSkQALbTI55cB2xi5CppyxQvALbaKgBMpUf1AdYGr3MCsDmPOwchi+M4zsVPiUIPNuYLyWRK+8/nn0JxDIwvFPeFZRHYc2YBe8n0tGpB8liYGlMABWAMACIOQ+sVAjn5/OqmtpGoqijaen770L8FBDuNG6Ko9ZpKAYBFctrp5TW1MjNZEoYfBYAbkIDgdgv6FkcHNUC0ZLPTiQ7QuM5vH/VZRAOu+GsRhrVj+SiOzKsZmDI7Jb/zbxcIXYhgtLc9rY4vvhoOhgDoaKpVOJn5jdMOjYsbmLMbikGwII6EZqDmeVk3t7VnbSyuEEWKkC8kPuo2T8Txh0bEDsIQBhq+Aq5iEA9ib9Z5eTcBQMBhlxanBriS+TDgMuhjg9cEZvz4Kg5Kec5FaWwAcTeUe33s/3L/AP4cA5/yFogwMtjKLgAAAABJRU5ErkJggg=="}],"display":{}} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/models/block/grizzly_plushie.json b/src/main/resources/assets/forestal/models/block/grizzly_plushie.json new file mode 100644 index 0000000..b2d7354 --- /dev/null +++ b/src/main/resources/assets/forestal/models/block/grizzly_plushie.json @@ -0,0 +1,122 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "forestal:block/grizzly_plushie" + }, + "elements": [ + { + "from": [4.5, 0, 6], + "to": [11.5, 9, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8.5, 0, 9]}, + "faces": { + "north": {"uv": [2.5, 2.5, 6, 7], "texture": "#0"}, + "east": {"uv": [0, 2.5, 2.5, 7], "texture": "#0"}, + "south": {"uv": [8.5, 2.5, 12, 7], "texture": "#0"}, + "west": {"uv": [6, 2.5, 8.5, 7], "texture": "#0"}, + "up": {"uv": [6, 2.5, 2.5, 0], "texture": "#0"}, + "down": {"uv": [9.5, 0, 6, 2.5], "texture": "#0"} + } + }, + { + "from": [9.5, 0, 5], + "to": [12.5, 2, 6], + "rotation": {"angle": -22.5, "axis": "y", "origin": [11, 1, 5.5]}, + "faces": { + "north": {"uv": [8.5, 10, 10, 11], "texture": "#0"}, + "east": {"uv": [8, 10, 8.5, 11], "texture": "#0"}, + "south": {"uv": [10.5, 10, 12, 11], "texture": "#0"}, + "west": {"uv": [10, 10, 10.5, 11], "texture": "#0"}, + "up": {"uv": [10, 10, 8.5, 9.5], "texture": "#0"}, + "down": {"uv": [11.5, 9.5, 10, 10], "texture": "#0"} + } + }, + { + "from": [3.5, 0, 5], + "to": [6.5, 2, 6], + "rotation": {"angle": 22.5, "axis": "y", "origin": [5, 1, 5.5]}, + "faces": { + "north": {"uv": [8.5, 11.5, 10, 12.5], "texture": "#0"}, + "east": {"uv": [8, 11.5, 8.5, 12.5], "texture": "#0"}, + "south": {"uv": [10.5, 11.5, 12, 12.5], "texture": "#0"}, + "west": {"uv": [10, 11.5, 10.5, 12.5], "texture": "#0"}, + "up": {"uv": [10, 11.5, 8.5, 11], "texture": "#0"}, + "down": {"uv": [11.5, 11, 10, 11.5], "texture": "#0"} + } + }, + { + "from": [9.5, 8, 8], + "to": [12.5, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 0, 9]}, + "faces": { + "north": {"uv": [0.5, 10, 2, 11], "texture": "#0"}, + "east": {"uv": [0, 10, 0.5, 11], "texture": "#0"}, + "south": {"uv": [2.5, 10, 4, 11], "texture": "#0"}, + "west": {"uv": [2, 10, 2.5, 11], "texture": "#0"}, + "up": {"uv": [2, 10, 0.5, 9.5], "texture": "#0"}, + "down": {"uv": [3.5, 9.5, 2, 10], "texture": "#0"} + } + }, + { + "from": [3.5, 8, 8], + "to": [6.5, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 0, 9]}, + "faces": { + "north": {"uv": [8.5, 7.5, 10, 8.5], "texture": "#0"}, + "east": {"uv": [8, 7.5, 8.5, 8.5], "texture": "#0"}, + "south": {"uv": [10.5, 7.5, 12, 8.5], "texture": "#0"}, + "west": {"uv": [10, 7.5, 10.5, 8.5], "texture": "#0"}, + "up": {"uv": [10, 7.5, 8.5, 7], "texture": "#0"}, + "down": {"uv": [11.5, 7, 10, 7.5], "texture": "#0"} + } + }, + { + "from": [5.5, 5, 4], + "to": [10.5, 7, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 0, 9]}, + "faces": { + "north": {"uv": [1.5, 8.5, 4, 9.5], "texture": "#0"}, + "east": {"uv": [0, 8.5, 1.5, 9.5], "texture": "#0"}, + "south": {"uv": [5.5, 8.5, 8, 9.5], "texture": "#0"}, + "west": {"uv": [4, 8.5, 5.5, 9.5], "texture": "#0"}, + "up": {"uv": [4, 8.5, 1.5, 7], "texture": "#0"}, + "down": {"uv": [6.5, 7, 4, 8.5], "texture": "#0"} + } + }, + { + "from": [8.89942, -0.57401, 8], + "to": [9.89942, 3.42599, 10], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 9.5, 8]}, + "faces": { + "north": {"uv": [4, 11.5, 4.5, 13.5], "texture": "#0"}, + "east": {"uv": [3, 11.5, 4, 13.5], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6, 13.5], "texture": "#0"}, + "west": {"uv": [4.5, 11.5, 5.5, 13.5], "texture": "#0"}, + "up": {"uv": [4.5, 11.5, 4, 10.5], "texture": "#0"}, + "down": {"uv": [5, 10.5, 4.5, 11.5], "texture": "#0"} + } + }, + { + "from": [6.1006, -0.574, 8], + "to": [7.1006, 3.426, 10], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 9.5, 8]}, + "faces": { + "north": {"uv": [1, 11.5, 1.5, 13.5], "texture": "#0"}, + "east": {"uv": [0, 11.5, 1, 13.5], "texture": "#0"}, + "south": {"uv": [2.5, 11.5, 3, 13.5], "texture": "#0"}, + "west": {"uv": [1.5, 11.5, 2.5, 13.5], "texture": "#0"}, + "up": {"uv": [1.5, 11.5, 1, 10.5], "texture": "#0"}, + "down": {"uv": [2, 10.5, 1.5, 11.5], "texture": "#0"} + } + } + ], + "display": {}, + "groups": [ + { + "name": "grizzly_plushie", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/models/item/grizzly_plushie.json b/src/main/resources/assets/forestal/models/item/grizzly_plushie.json new file mode 100644 index 0000000..57b2d7f --- /dev/null +++ b/src/main/resources/assets/forestal/models/item/grizzly_plushie.json @@ -0,0 +1,3 @@ +{ + "parent": "forestal:block/grizzly_plushie" +} \ No newline at end of file diff --git a/src/main/resources/assets/forestal/textures/block/grizzly_plushie.png b/src/main/resources/assets/forestal/textures/block/grizzly_plushie.png new file mode 100644 index 0000000..2a59a16 Binary files /dev/null and b/src/main/resources/assets/forestal/textures/block/grizzly_plushie.png differ diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index acd527a..1ed7c12 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,6 +34,7 @@ "minecraft": "~${minecraft_version}", "java": ">=17", "fabric-api": ">=0.96.4+1.20.4", - "nixienaut": ">=${nixienaut_version}" + "nixienaut": ">=${nixienaut_version}", + "geckolib": ">=${geckolib_version}" } } \ No newline at end of file