From 63fbf73c2f5f8796c4b606b514ad0b2e0a4864a4 Mon Sep 17 00:00:00 2001 From: alex_s168 <63254202+alex-s168@users.noreply.github.com> Date: Tue, 16 Jan 2024 22:09:07 +0100 Subject: [PATCH] small prop --- .../tournament/TournamentBlockEntities.kt | 14 +- .../tournament/TournamentBlocks.kt | 12 +- .../tournament/TournamentConfig.kt | 9 ++ .../tournament/TournamentMod.kt | 7 +- .../tournament/TournamentModels.kt | 1 + .../blockentity/PropellerBlockEntity.kt | 33 ++++- .../render/PropellerBlockEntityRender.kt | 10 +- .../tournament/blocks/PropellerBlock.kt | 9 +- .../tournament/ship/TournamentShips.kt | 2 +- .../vs_tournament/blockstates/prop_small.json | 32 +++++ .../assets/vs_tournament/lang/en_us.json | 4 +- .../models/block/prop_small.json | 26 ++++ .../models/block/prop_small_prop.json | 84 +++++++++++ .../vs_tournament/models/item/prop_big.json | 131 ++++++++++++++++++ .../vs_tournament/models/item/prop_small.json | 128 +++++++++++++++++ .../textures/block/prop_small.png | Bin 0 -> 1348 bytes 16 files changed, 471 insertions(+), 31 deletions(-) create mode 100644 common/src/main/resources/assets/vs_tournament/blockstates/prop_small.json create mode 100644 common/src/main/resources/assets/vs_tournament/models/block/prop_small.json create mode 100644 common/src/main/resources/assets/vs_tournament/models/block/prop_small_prop.json create mode 100644 common/src/main/resources/assets/vs_tournament/models/item/prop_big.json create mode 100644 common/src/main/resources/assets/vs_tournament/models/item/prop_small.json create mode 100644 common/src/main/resources/assets/vs_tournament/textures/block/prop_small.png diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlockEntities.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlockEntities.kt index 547b76c..d40a687 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlockEntities.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlockEntities.kt @@ -17,16 +17,10 @@ import org.valkyrienskies.tournament.registry.RegistrySupplier object TournamentBlockEntities { private val BLOCKENTITIES = DeferredRegister.create(TournamentMod.MOD_ID, Registry.BLOCK_ENTITY_TYPE_REGISTRY) - val SENSOR = TournamentBlocks.SENSOR withBE ::SensorBlockEntity byName "sensor" - val ROPE_HOOK = TournamentBlocks.ROPE_HOOK withBE ::RopeHookBlockEntity byName "rope_hook" - val PROPELLER = TournamentBlocks.PROP_BIG withBE {pos, state -> - PropellerBlockEntity( - pos, - state, - TournamentConfig.SERVER.propellerBigSpeed, - TournamentConfig.SERVER.propellerBigAccel - ) - } byName "propeller" + val SENSOR = TournamentBlocks.SENSOR withBE ::SensorBlockEntity byName "sensor" + val ROPE_HOOK = TournamentBlocks.ROPE_HOOK withBE ::RopeHookBlockEntity byName "rope_hook" + val PROP_BIG = TournamentBlocks.PROP_BIG withBE ::BigPropellerBlockEntity byName "prop_big" + val PROP_SMALL = TournamentBlocks.PROP_SMALL withBE ::SmallPropellerBlockEntity byName "prop_small" // explosives: val EXPLOSIVE = TournamentBlocks.EXPLOSIVE_INSTANT_SMALL withBE ::ExplosiveBlockEntity byName "explosive_instant_small" diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlocks.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlocks.kt index 078496f..d05fa02 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlocks.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentBlocks.kt @@ -12,6 +12,8 @@ import net.minecraft.world.level.block.* import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraft.world.level.material.Material import org.valkyrienskies.mod.common.hooks.VSGameEvents +import org.valkyrienskies.tournament.blockentity.BigPropellerBlockEntity +import org.valkyrienskies.tournament.blockentity.SmallPropellerBlockEntity import org.valkyrienskies.tournament.util.extension.explodeShip import org.valkyrienskies.tournament.blocks.* import org.valkyrienskies.tournament.blocks.explosive.AbstractExplosiveBlock @@ -38,6 +40,7 @@ object TournamentBlocks { lateinit var ROPE_HOOK : RegistrySupplier lateinit var SENSOR : RegistrySupplier lateinit var PROP_BIG : RegistrySupplier + lateinit var PROP_SMALL : RegistrySupplier lateinit var EXPLOSIVE_INSTANT_SMALL : RegistrySupplier lateinit var EXPLOSIVE_INSTANT_MEDIUM : RegistrySupplier @@ -87,8 +90,13 @@ object TournamentBlocks { PROP_BIG = register("prop_big") { PropellerBlock( TournamentConfig.SERVER.propellerBigForce, - TournamentConfig.SERVER.propellerBigSpeed, - TournamentConfig.SERVER.propellerBigAccel, + ::BigPropellerBlockEntity + ) + } + PROP_SMALL = register("prop_small") { + PropellerBlock( + TournamentConfig.SERVER.propellerSmallForce, + ::SmallPropellerBlockEntity ) } diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentConfig.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentConfig.kt index d812fb5..d195203 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentConfig.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentConfig.kt @@ -71,6 +71,15 @@ object TournamentConfig { @JsonSchema(description = "The acceleration of a big propeller. (deaccel = accel * 2)") var propellerBigAccel = 0.1f + @JsonSchema(description = "The force of a big propeller at max speed") + var propellerSmallForce = 1000.0 + + @JsonSchema(description = "The max speed of a big propeller at max redstone input") + var propellerSmallSpeed = 50.0f + + @JsonSchema(description = "The acceleration of a big propeller. (deaccel = accel * 2)") + var propellerSmallAccel = 1.0f + @JsonSchema(description = "The list of blocks that don't get assembled by the ship assembler") var blockBlacklist = setOf( "minecraft:dirt", diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentMod.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentMod.kt index ef66a96..d7a22fd 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentMod.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentMod.kt @@ -78,6 +78,11 @@ object TournamentMod { clientRenderers.registerBlockEntityRenderer(be, renderer) } - renderer(TournamentBlockEntities.PROPELLER.get()) { PropellerBlockEntityRender() } + renderer(TournamentBlockEntities.PROP_BIG.get()) { + PropellerBlockEntityRender(TournamentModels.PROP_BIG) + } + renderer(TournamentBlockEntities.PROP_SMALL.get()) { + PropellerBlockEntityRender(TournamentModels.PROP_SMALL) + } } } diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentModels.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentModels.kt index 6bf9db2..42db08b 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentModels.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/TournamentModels.kt @@ -78,5 +78,6 @@ object TournamentModels { } val PROP_BIG = model("block/prop_big_prop") + val PROP_SMALL = model("block/prop_small_prop") } \ No newline at end of file diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/PropellerBlockEntity.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/PropellerBlockEntity.kt index d74ec49..6de4e72 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/PropellerBlockEntity.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/PropellerBlockEntity.kt @@ -7,16 +7,19 @@ import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block 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 org.valkyrienskies.tournament.TournamentBlockEntities +import org.valkyrienskies.tournament.TournamentConfig import org.valkyrienskies.tournament.blocks.PropellerBlock -class PropellerBlockEntity( +abstract class PropellerBlockEntity( + be: BlockEntityType, pos: BlockPos, state: BlockState, val maxSpeed: Float, val accel: Float -): BlockEntity(TournamentBlockEntities.PROPELLER.get(), pos, state) { +): BlockEntity(be, pos, state) { var signal: Int = -1 var rotation: Double = 0.0 @@ -40,7 +43,7 @@ class PropellerBlockEntity( } companion object { - val ticker = BlockEntityTicker { level, _, _, be -> + val ticker = BlockEntityTicker> { level, _, _, be -> be.tick(level) } } @@ -73,4 +76,26 @@ class PropellerBlockEntity( level?.sendBlockUpdated(blockPos, blockState, blockState, Block.UPDATE_ALL_IMMEDIATE) } -} \ No newline at end of file +} + +class BigPropellerBlockEntity( + pos: BlockPos, + state: BlockState, +): PropellerBlockEntity( + TournamentBlockEntities.PROP_BIG.get(), + pos, + state, + TournamentConfig.SERVER.propellerBigSpeed, + TournamentConfig.SERVER.propellerBigAccel +) + +class SmallPropellerBlockEntity( + pos: BlockPos, + state: BlockState, +): PropellerBlockEntity( + TournamentBlockEntities.PROP_SMALL.get(), + pos, + state, + TournamentConfig.SERVER.propellerSmallSpeed, + TournamentConfig.SERVER.propellerSmallAccel +) \ No newline at end of file diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/render/PropellerBlockEntityRender.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/render/PropellerBlockEntityRender.kt index dea8d0c..52573a0 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/render/PropellerBlockEntityRender.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/blockentity/render/PropellerBlockEntityRender.kt @@ -9,12 +9,12 @@ import org.valkyrienskies.tournament.TournamentModels import org.valkyrienskies.tournament.blockentity.PropellerBlockEntity import org.valkyrienskies.tournament.util.extension.pose -class PropellerBlockEntityRender: - BlockEntityRenderer -{ +class PropellerBlockEntityRender>( + val model: TournamentModels.Model +): BlockEntityRenderer { override fun render( - be: PropellerBlockEntity, + be: T, partial: Float, pose: PoseStack, bufferSource: MultiBufferSource, @@ -26,7 +26,7 @@ class PropellerBlockEntityRender: mulPose(be.blockState.getValue(DirectionalBlock.FACING).opposite.rotation) pose.mulPose(Vector3f.YP.rotationDegrees(be.rotation.toFloat())) translate(-0.5, -0.5, -0.5) - TournamentModels.PROP_BIG.renderer.render( + model.renderer.render( pose, be, bufferSource, diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/blocks/PropellerBlock.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/blocks/PropellerBlock.kt index 7e39c6a..645e670 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/blocks/PropellerBlock.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/blocks/PropellerBlock.kt @@ -29,8 +29,7 @@ import org.valkyrienskies.tournament.util.block.DirectionalBaseEntityBlock class PropellerBlock( val mult: Double, - val maxSpeed: Float, - val accel: Float + val beConstr: (BlockPos, BlockState) -> PropellerBlockEntity<*>, ): DirectionalBaseEntityBlock( Properties.of(Material.STONE) .sound(SoundType.STONE) @@ -81,7 +80,7 @@ class PropellerBlock( val signal = getPropSignal(state, level, pos) - val be = level.getBlockEntity(pos) as? PropellerBlockEntity + val be = level.getBlockEntity(pos) as? PropellerBlockEntity<*> ?: return be.signal = signal @@ -119,7 +118,7 @@ class PropellerBlock( val signal = getPropSignal(state, level, pos) - val be = level.getBlockEntity(pos) as? PropellerBlockEntity + val be = level.getBlockEntity(pos) as? PropellerBlockEntity<*> ?: return be.signal = signal @@ -138,7 +137,7 @@ class PropellerBlock( } override fun newBlockEntity(pos: BlockPos, state: BlockState): BlockEntity = - PropellerBlockEntity(pos, state, maxSpeed, accel) + beConstr(pos, state) @Suppress("UNCHECKED_CAST") override fun getTicker( diff --git a/common/src/main/kotlin/org/valkyrienskies/tournament/ship/TournamentShips.kt b/common/src/main/kotlin/org/valkyrienskies/tournament/ship/TournamentShips.kt index 5e93a5b..41644c3 100644 --- a/common/src/main/kotlin/org/valkyrienskies/tournament/ship/TournamentShips.kt +++ b/common/src/main/kotlin/org/valkyrienskies/tournament/ship/TournamentShips.kt @@ -92,7 +92,7 @@ class TournamentShips: ShipForcesInducer { val be = lvl.getBlockEntity( p.pos.toBlockPos() - ) as PropellerBlockEntity? + ) as PropellerBlockEntity<*>? if (be != null) { p.speed.set(be.speed) diff --git a/common/src/main/resources/assets/vs_tournament/blockstates/prop_small.json b/common/src/main/resources/assets/vs_tournament/blockstates/prop_small.json new file mode 100644 index 0000000..fb5c28d --- /dev/null +++ b/common/src/main/resources/assets/vs_tournament/blockstates/prop_small.json @@ -0,0 +1,32 @@ +{ + "variants": { + "facing=north": { + "model": "vs_tournament:block/prop_small", + "y": 0, + "x": 90 + }, + "facing=east": { + "model": "vs_tournament:block/prop_small", + "y": 90, + "x": 90 + }, + "facing=south": { + "model": "vs_tournament:block/prop_small", + "y": 180, + "x": 90 + }, + "facing=west": { + "model": "vs_tournament:block/prop_small", + "y": 270, + "x": 90 + }, + "facing=up": { + "model": "vs_tournament:block/prop_small", + "x": 0 + }, + "facing=down": { + "model": "vs_tournament:block/prop_small", + "x": 180 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/vs_tournament/lang/en_us.json b/common/src/main/resources/assets/vs_tournament/lang/en_us.json index e50e568..e77ccbf 100644 --- a/common/src/main/resources/assets/vs_tournament/lang/en_us.json +++ b/common/src/main/resources/assets/vs_tournament/lang/en_us.json @@ -13,6 +13,7 @@ "block.vs_tournament.fuel_gauge": "Fuel Gauge", "block.vs_tournament.floater": "Floater", "block.vs_tournament.prop_big": "Propeller (big)", + "block.vs_tournament.prop_small": "Propeller (small)", "block.vs_tournament.explosive_instant_small": "Instant Explosive (small)", "block.vs_tournament.explosive_instant_medium": "Instant Explosive (medium)", @@ -37,9 +38,6 @@ "chat.vs_tournament.rope.connected": "Rope connected!", "chat.vs_tournament.rope.first": "First position set!", "chat.vs_tournament.delete_wand.deleted": "Deleted ship!", - "chat.vs_tournament.fuel_container.amount": "Fuel: %s / %s kg", - "chat.vs_tournament.fuel_gauge.not_on_ship": "Not on a ship!", - "chat.vs_tournament.fuel_gauge.amount": "Total fuel: %s kg", "advancements.vs_tournament.ship_assemble.title": "Assemble a ship", "advancements.vs_tournament.ship_assemble.description": "Create a VS2 ship with the ship assembler", diff --git a/common/src/main/resources/assets/vs_tournament/models/block/prop_small.json b/common/src/main/resources/assets/vs_tournament/models/block/prop_small.json new file mode 100644 index 0000000..c883837 --- /dev/null +++ b/common/src/main/resources/assets/vs_tournament/models/block/prop_small.json @@ -0,0 +1,26 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "2": "vs_tournament:block/prop_small", + "particle": "vs_tournament:block/prop_small" + }, + "elements": [ + { + "name": "Base", + "from": [0, 8, 0], + "to": [16,16, 16], + "faces": { + "north": {"uv": [4, 0, 8, 1.75], "texture": "#2"}, + "east": {"uv": [4, 1.75, 8, 3.5], "texture": "#2"}, + "south": {"uv": [4, 3.5, 8, 5.25], "texture": "#2"}, + "west": {"uv": [4, 5.25, 8, 7], "texture": "#2"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#2"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#2"} + } + } + ], + "groups": [ + + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/vs_tournament/models/block/prop_small_prop.json b/common/src/main/resources/assets/vs_tournament/models/block/prop_small_prop.json new file mode 100644 index 0000000..6e1a180 --- /dev/null +++ b/common/src/main/resources/assets/vs_tournament/models/block/prop_small_prop.json @@ -0,0 +1,84 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "2": "vs_tournament:block/prop_small", + "particle": "vs_tournament:block/prop_small" + }, + "elements": [ + { + "from": [-1.5, 8, -1], + "to": [4.5, 8, 6], + "rotation": {"angle": -45, "axis": "z", "origin": [9.5, 2, 0]}, + "faces": { + "north": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "up": {"uv": [9.5, 1.75, 8, 0], "texture": "#2"}, + "down": {"uv": [3.25, 8, 1.75, 9.75], "texture": "#2"} + } + }, + { + "from": [6, 7, 6], + "to": [10, 13, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 5, 0]}, + "faces": { + "north": {"uv": [8, 5.25, 9, 6.75], "texture": "#2"}, + "east": {"uv": [3.25, 8.5, 4.25, 10], "texture": "#2"}, + "south": {"uv": [4.25, 8.5, 5.25, 10], "texture": "#2"}, + "west": {"uv": [5.25, 8.5, 6.25, 10], "texture": "#2"}, + "up": {"uv": [7.25, 9.5, 6.25, 8.5], "texture": "#2"}, + "down": {"uv": [8.25, 8.5, 7.25, 9.5], "texture": "#2"} + } + }, + { + "from": [-1, 8, 11.5], + "to": [6, 8, 17.5], + "rotation": {"angle": -45, "axis": "x", "origin": [0, 2, 6.5]}, + "faces": { + "north": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "up": {"uv": [5.75, 8.5, 4, 7], "texture": "#2"}, + "down": {"uv": [5.75, 8.5, 7.5, 7], "texture": "#2"} + } + }, + { + "from": [10, 8, -1.5], + "to": [17, 8, 4.5], + "rotation": {"angle": 45, "axis": "x", "origin": [16, 2, 9.5]}, + "faces": { + "north": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "up": {"uv": [9.25, 8.5, 7.5, 7], "texture": "#2"}, + "down": {"uv": [1.75, 8, 0, 9.5], "texture": "#2"} + } + }, + { + "from": [11.5, 8, 10], + "to": [17.5, 8, 17], + "rotation": {"angle": 45, "axis": "z", "origin": [6.5, 2, 16]}, + "faces": { + "north": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "up": {"uv": [9.5, 3.5, 8, 1.75], "texture": "#2"}, + "down": {"uv": [9.5, 3.5, 8, 5.25], "texture": "#2"} + } + } + ], + "groups": [ + { + "name": "prop", + "origin": [6.5, -3, 16], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + 5 + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/vs_tournament/models/item/prop_big.json b/common/src/main/resources/assets/vs_tournament/models/item/prop_big.json new file mode 100644 index 0000000..0b1e4da --- /dev/null +++ b/common/src/main/resources/assets/vs_tournament/models/item/prop_big.json @@ -0,0 +1,131 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [128, 128], + "textures": { + "3": "vs_tournament:block/prop_big", + "particle": "vs_tournament:block/prop_big" + }, + "elements": [ + { + "from": [-14.9155, 10.62986, -9], + "to": [15.0845, 10.62986, 7], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "east": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "south": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "up": {"uv": [7.75, 2, 4, 0], "texture": "#3"}, + "down": {"uv": [7.75, 2, 4, 4], "texture": "#3"} + } + }, + { + "from": [4, 7, 4], + "to": [12, 14, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [7.75, 5.5, 8.75, 6.375], "texture": "#3"}, + "east": {"uv": [7.75, 6.375, 8.75, 7.25], "texture": "#3"}, + "south": {"uv": [7.75, 7.25, 8.75, 8.125], "texture": "#3"}, + "west": {"uv": [4, 8, 5, 8.875], "texture": "#3"}, + "up": {"uv": [8.75, 4.5, 7.75, 3.5], "texture": "#3"}, + "down": {"uv": [8.75, 4.5, 7.75, 5.5], "texture": "#3"} + } + }, + { + "from": [-9, 10.24718, 0.61732], + "to": [7, 10.24718, 30.61732], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 7, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "east": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "up": {"uv": [2, 3.75, 0, 0], "texture": "#3"}, + "down": {"uv": [2, 3.75, 4, 0], "texture": "#3"} + } + }, + { + "from": [9, 10.24718, -14.61732], + "to": [25, 10.24718, 15.38268], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 7, 9]}, + "faces": { + "north": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "east": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "up": {"uv": [2, 7.5, 0, 3.75], "texture": "#3"}, + "down": {"uv": [2, 7.5, 4, 3.75], "texture": "#3"} + } + }, + { + "from": [0.9155, 10.62986, 9], + "to": [30.9155, 10.62986, 25], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 7, 8]}, + "faces": { + "north": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "east": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "south": {"uv": [0, 0, 3.75, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 2, 0], "texture": "#3"}, + "up": {"uv": [7.75, 6, 4, 4], "texture": "#3"}, + "down": {"uv": [7.75, 6, 4, 8], "texture": "#3"} + } + }, + { + "name": "Base", + "from": [0, 0, 0], + "to": [16, 7, 16], + "faces": { + "north": {"uv": [7.75, 0, 9.75, 0.875], "texture": "#3"}, + "east": {"uv": [7.75, 0.875, 9.75, 1.75], "texture": "#3"}, + "south": {"uv": [7.75, 1.75, 9.75, 2.625], "texture": "#3"}, + "west": {"uv": [7.75, 2.625, 9.75, 3.5], "texture": "#3"}, + "up": {"uv": [2, 9.5, 0, 7.5], "texture": "#3"}, + "down": {"uv": [4, 7.5, 2, 9.5], "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 1.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "thirdperson_lefthand": { + "translation": [0, 1.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "firstperson_righthand": { + "translation": [0, 1.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "firstperson_lefthand": { + "translation": [0, 1.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "ground": { + "translation": [0, -0.75, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [29, -7, 0], + "translation": [0, -1.25, 0], + "scale": [0.35, 0.35, 0.35] + }, + "head": { + "translation": [0, 13.5, 0] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [0, 0, -3.5] + } + }, + "groups": [ + { + "name": "prop", + "origin": [13, 13, 13], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + 5 + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/vs_tournament/models/item/prop_small.json b/common/src/main/resources/assets/vs_tournament/models/item/prop_small.json new file mode 100644 index 0000000..08f9166 --- /dev/null +++ b/common/src/main/resources/assets/vs_tournament/models/item/prop_small.json @@ -0,0 +1,128 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "2": "vs_tournament:block/prop_small", + "particle": "vs_tournament:block/prop_small" + }, + "elements": [ + { + "from": [-1.5, 8, -1], + "to": [4.5, 8, 6], + "rotation": {"angle": -45, "axis": "z", "origin": [9.5, 2, 0]}, + "faces": { + "north": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "up": {"uv": [9.5, 1.75, 8, 0], "texture": "#2"}, + "down": {"uv": [3.25, 8, 1.75, 9.75], "texture": "#2"} + } + }, + { + "from": [6, 7, 6], + "to": [10, 13, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 5, 0]}, + "faces": { + "north": {"uv": [8, 5.25, 9, 6.75], "texture": "#2"}, + "east": {"uv": [3.25, 8.5, 4.25, 10], "texture": "#2"}, + "south": {"uv": [4.25, 8.5, 5.25, 10], "texture": "#2"}, + "west": {"uv": [5.25, 8.5, 6.25, 10], "texture": "#2"}, + "up": {"uv": [7.25, 9.5, 6.25, 8.5], "texture": "#2"}, + "down": {"uv": [8.25, 8.5, 7.25, 9.5], "texture": "#2"} + } + }, + { + "from": [-1, 8, 11.5], + "to": [6, 8, 17.5], + "rotation": {"angle": -45, "axis": "x", "origin": [0, 2, 6.5]}, + "faces": { + "north": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "up": {"uv": [5.75, 8.5, 4, 7], "texture": "#2"}, + "down": {"uv": [5.75, 8.5, 7.5, 7], "texture": "#2"} + } + }, + { + "from": [10, 8, -1.5], + "to": [17, 8, 4.5], + "rotation": {"angle": 45, "axis": "x", "origin": [16, 2, 9.5]}, + "faces": { + "north": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "up": {"uv": [9.25, 8.5, 7.5, 7], "texture": "#2"}, + "down": {"uv": [1.75, 8, 0, 9.5], "texture": "#2"} + } + }, + { + "from": [11.5, 8, 10], + "to": [17.5, 8, 17], + "rotation": {"angle": 45, "axis": "z", "origin": [6.5, 2, 16]}, + "faces": { + "north": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1.5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 1.75, 0], "texture": "#2"}, + "up": {"uv": [9.5, 3.5, 8, 1.75], "texture": "#2"}, + "down": {"uv": [9.5, 3.5, 8, 5.25], "texture": "#2"} + } + }, + { + "name": "Base", + "from": [0, 0, 0], + "to": [16, 7, 16], + "faces": { + "north": {"uv": [4, 0, 8, 1.75], "texture": "#2"}, + "east": {"uv": [4, 1.75, 8, 3.5], "texture": "#2"}, + "south": {"uv": [4, 3.5, 8, 5.25], "texture": "#2"}, + "west": {"uv": [4, 5.25, 8, 7], "texture": "#2"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#2"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#2"} + } + } + ], + "groups": [ + { + "name": "prop", + "origin": [6.5, -3, 16], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + 5 + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/vs_tournament/textures/block/prop_small.png b/common/src/main/resources/assets/vs_tournament/textures/block/prop_small.png new file mode 100644 index 0000000000000000000000000000000000000000..c63ed768aa3fc1aeac3d45692647621a251bcfe6 GIT binary patch literal 1348 zcmV-K1-tr*P)fgk7=Rz!Q#VmQSevzymAWhv+CzJ0xp2sDfWN@sf&+g5 zeghI5%dxje^uQuvG(oN{yQ8|^Lo&|TO@nAcKD2(MD4AqtH1GKRnD?Dn$H&J7CPl#? zg8{Z}W9jcKi%cp0{qhCZb*ba~J^)fm$aA{=J^{IhljYX zix7fVt3@2gyng-KVgm@@_Zf{w1VO;dmoLfloQovEwrvg$4zMhXEX&FPj^ps+#S6kP zNGTbOMucI=>FFtH9G873Q3OD%)uKJyIN$d0(DG9@n@pw#8 z6cj~4uhW@pfMu17my-$i?%lhw@E`~X!;p5nO&Z4)ffu3sODP!)2ES0eA0q%xPfr2x zJdeq@Z>0ukb=Ml;Iu0;>a%q~9rYQhn7!u8%w(g&0S-BCZQso>{N`fF@JRVm}VOt2L z6iO*v$03blgb-B?fKrG!ijZMgoxyQRf%JydHK6Ufv|X3j*rZ)S_?`z$7prioShaP;J03n?-v(kTle+)ec~i3ouP>-c%8Rz-|mF^1K6ojWkaj3Uc8C^&iu_B zs|C`2BFnOh@afFVq?8rmd%YgM?<0iZ>goz9B^SnK|7vVg;ANg$Q@3q^(P+fU$qDUt zyV7?OMNFcIRH++bP=~^8W19{0iPouaj;RSj5KQ~bHlWpN;r09Ft3Fouuba&_uwgEo z_5p3z#j@rHG4r$DBpn%GaTwH3UXRg^RENPRigv;ei1GP(X}2&v?EH0fR0)Fx%#Xr# z&%N(qa5x+ShC1ds$xIM^6o$EWm}hxCX0OAbl#*x9o)H8AuU@?Zpx5aDlt*Eh3LqyF zY}+o+{%2=rNGbO^3<}@(%Ut04`Wn}9xJVL!O6Hek8Ls0{6a``ZG|1GuODQX1u$~Pr z3WM85z&tDSJP#R$RSlS-ZP@cX-oJle5n}JN!3ws`_4PHjZA3`RB2@~N=cTHf<5tNA zx6NAW0ehVduB#rfw_y<0QxDkNFu0C-z&?jT>z~Ju3#iru^t(=pbtmF&m&Lrk6(bdVua@)&uSu29sId0aQM33hU9M zM}?W=t31C^52##?EvN_RLG-_F+C=H30@$HzDB?jJmOQ2l>_!7}sM6~y7;;jKSjUS9ri zf@OVTqdK&!h-G$qn{W>wJ}mUP{o}`v0F{L1XWN@jfK0?)>{KT(Cabo$g;@W;(%LcXAC44Gj$q4Gj$q4Gj$q4Gj$q z4Gj$q4Go(A0DhN>4D<;#xc~qF4rN$LW=%~1DgXcg2mk;800000(o>TF0000