diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java
index 77076e777..d0eb6fa8c 100644
--- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java
+++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java
@@ -3746,7 +3746,7 @@ public final class CoreReflections {
.orElse( null);
public static final Field field$ServerCommonPacketListenerImpl$closed = MiscUtils.requireNonNullIf(
- ReflectionUtils.getDeclaredField(clazz$ServerCommonPacketListenerImpl, boolean.class, VersionHelper.isOrAbove1_21_6() ? 1 : 2),
+ ReflectionUtils.getDeclaredField(clazz$ServerCommonPacketListenerImpl, "closed", "n"),
VersionHelper.isOrAbove1_20_5()
);
diff --git a/common-files/src/main/resources/resources/default/configuration/categories.yml b/common-files/src/main/resources/resources/default/configuration/categories.yml
index 8bbcc8cf8..10ef8b0f2 100644
--- a/common-files/src/main/resources/resources/default/configuration/categories.yml
+++ b/common-files/src/main/resources/resources/default/configuration/categories.yml
@@ -57,6 +57,7 @@ categories:
- default:bench
- default:table_lamp
- default:wooden_chair
+ - default:flower_basket
default:misc:
name:
hidden: true
diff --git a/common-files/src/main/resources/resources/default/configuration/furniture.yml b/common-files/src/main/resources/resources/default/configuration/furniture.yml
index c28d53cdf..c1c8402fe 100644
--- a/common-files/src/main/resources/resources/default/configuration/furniture.yml
+++ b/common-files/src/main/resources/resources/default/configuration/furniture.yml
@@ -132,4 +132,120 @@ items:
loot:
template: default:loot_table/furniture
arguments:
- item: default:wooden_chair
\ No newline at end of file
+ item: default:wooden_chair
+
+items#flower_basket:
+ default:flower_basket:
+ material: nether_brick
+ custom-model-data: 2003
+ data:
+ item-name:
+ model:
+ template: default:model/simplified_generated
+ arguments:
+ path: minecraft:item/custom/flower_basket_2d
+ behavior:
+ type: furniture_item
+ furniture: default:flower_basket
+ default:flower_basket_ground:
+ material: nether_brick
+ custom-model-data: 2004
+ data:
+ item-name:
+ model:
+ type: minecraft:model
+ path: minecraft:item/custom/flower_basket_ground
+ default:flower_basket_wall:
+ material: nether_brick
+ custom-model-data: 2005
+ data:
+ item-name:
+ model:
+ type: minecraft:model
+ path: minecraft:item/custom/flower_basket_wall
+ default:flower_basket_ceiling:
+ material: nether_brick
+ custom-model-data: 2006
+ data:
+ item-name:
+ model:
+ type: minecraft:model
+ path: minecraft:item/custom/flower_basket_ceiling
+
+furniture#flower_basket:
+ default:flower_basket:
+ settings:
+ item: default:flower_basket
+ sounds:
+ break: minecraft:block.grass.break
+ place: minecraft:block.grass.place
+ loot:
+ template: default:loot_table/furniture
+ arguments:
+ item: default:flower_basket
+ placement:
+ ground:
+ rules:
+ rotation: FOUR
+ alignment: ANY
+ elements:
+ - item: default:flower_basket_ground
+ display-transform: NONE
+ billboard: FIXED
+ position: 0,0,0
+ translation: 0,0.5,0
+ hitboxes:
+ - type: interaction
+ can-use-item-on: true
+ can-be-hit-by-projectile: true
+ blocks-building: true
+ position: 0,0,0
+ width: 0.9
+ height: 0.75
+ interactive: true
+ wall:
+ rules:
+ rotation: FOUR
+ alignment: ANY
+ elements:
+ - item: default:flower_basket_wall
+ display-transform: NONE
+ billboard: FIXED
+ position: 0,0,0.2
+ translation: 0,0,0
+ hitboxes:
+ - type: interaction
+ can-use-item-on: true
+ can-be-hit-by-projectile: true
+ blocks-building: true
+ position: 0.215,-0.3,0.23
+ width: 0.46
+ height: 0.75
+ interactive: true
+ - type: interaction
+ can-use-item-on: true
+ can-be-hit-by-projectile: true
+ blocks-building: true
+ position: -0.215,-0.3,0.23
+ width: 0.46
+ height: 0.75
+ interactive: true
+ ceiling:
+ rules:
+ rotation: FOUR
+ alignment: ANY
+ elements:
+ - item: default:flower_basket_ceiling
+ display-transform: NONE
+ billboard: FIXED
+ position: 0,-0.46,0
+ translation: 0,0,0
+ hitboxes:
+ - type: interaction
+ can-use-item-on: true
+ can-be-hit-by-projectile: true
+ blocks-building: true
+ position: 0,-0.9,0
+ width: 0.85
+ height: 0.9
+ interactive: true
\ No newline at end of file
diff --git a/common-files/src/main/resources/resources/default/configuration/i18n.yml b/common-files/src/main/resources/resources/default/configuration/i18n.yml
index 815e41006..b032f9c78 100644
--- a/common-files/src/main/resources/resources/default/configuration/i18n.yml
+++ b/common-files/src/main/resources/resources/default/configuration/i18n.yml
@@ -44,6 +44,7 @@ i18n:
item.flame_elytra: Flame Elytra
item.pebble: Pebble
item.cap: Cap
+ item.flower_basket: Flower Basket
category.default.name: Default Assets
category.default.lore: Contains the default configuration of CraftEngine
category.palm_tree: Palm Tree
@@ -98,6 +99,7 @@ i18n:
item.flame_elytra: 烈焰鞘翅
item.pebble: 石子
item.cap: 鸭舌帽
+ item.flower_basket: 花篮
category.default.name: 默认资产
category.default.lore: 包含了CraftEngine的默认配置
category.palm_tree: 棕榈树
diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ceiling.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ceiling.json
new file mode 100644
index 000000000..31e1ef903
--- /dev/null
+++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ceiling.json
@@ -0,0 +1,285 @@
+{
+ "credit": "Made with Blockbench",
+ "textures": {
+ "1": "item/custom/flower_basket",
+ "particle": "item/custom/flower_basket"
+ },
+ "elements": [
+ {
+ "from": [2, 7, -1],
+ "to": [14, 7, 11],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 7, 5]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "up": {"uv": [0, 16, 4, 12], "texture": "#1"},
+ "down": {"uv": [0, 12, 4, 16], "texture": "#1"}
+ }
+ },
+ {
+ "from": [2, 4, 12.5],
+ "to": [14, 16, 12.5],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 12.5]},
+ "faces": {
+ "north": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "east": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "south": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "west": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "up": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "down": {"uv": [4, 12, 8, 8], "texture": "#1"}
+ }
+ },
+ {
+ "from": [2, 7, 5],
+ "to": [14, 7, 17],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 7, 11]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "up": {"uv": [0, 12, 4, 16], "texture": "#1"},
+ "down": {"uv": [0, 16, 4, 12], "texture": "#1"}
+ }
+ },
+ {
+ "from": [-1, 7, 2],
+ "to": [11, 7, 14],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5, 7, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "up": {"uv": [4, 16, 0, 12], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [0, 16, 4, 12], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 7, 2],
+ "to": [17, 7, 14],
+ "rotation": {"angle": 45, "axis": "z", "origin": [11, 7, 8]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "up": {"uv": [4, 12, 0, 16], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [0, 12, 4, 16], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [12.5, 4, 2],
+ "to": [12.5, 16, 14],
+ "rotation": {"angle": 22.5, "axis": "z", "origin": [12.5, 10, 8]},
+ "faces": {
+ "north": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "east": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "south": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "west": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "up": {"uv": [4, 8, 0, 12], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [3.5, 7.75, 3.5],
+ "to": [12.5, 9.25, 12.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.1875, 8]},
+ "faces": {
+ "north": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#1"},
+ "east": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#1"},
+ "south": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#1"},
+ "west": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#1"},
+ "up": {"uv": [13.5, 12.5, 10.5, 9.5], "texture": "#1"},
+ "down": {"uv": [13.5, 12.5, 10.5, 15.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [4.1, 5.35, 4.1],
+ "to": [11.9, 9.4, 11.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.6875, 8]},
+ "faces": {
+ "north": {"uv": [13.5, 8.5, 16, 9.75], "texture": "#1"},
+ "east": {"uv": [13.5, 8.5, 16, 9.75], "texture": "#1"},
+ "south": {"uv": [13.5, 8.5, 16, 9.75], "texture": "#1"},
+ "west": {"uv": [13.5, 8.5, 16, 9.75], "texture": "#1"},
+ "up": {"uv": [16, 8.5, 13.5, 6], "texture": "#1"},
+ "down": {"uv": [16, 3.5, 13.5, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8, 1, 0.5],
+ "to": [8, 13, 15.5],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8, 7, 8]},
+ "faces": {
+ "north": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "east": {"uv": [0, 4, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 4, 0, 0], "texture": "#1"},
+ "up": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 4, 0, 0], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8, 1, 0.5],
+ "to": [8, 13, 15.5],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8, 7, 8]},
+ "faces": {
+ "north": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "east": {"uv": [0, 4, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 4, 0, 0], "texture": "#1"},
+ "up": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 4, 0, 0], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8, 1, 0.5],
+ "to": [8, 13, 15.5],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8, 7, 8]},
+ "faces": {
+ "north": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 4, 8, 0], "texture": "#1"},
+ "south": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "west": {"uv": [8, 4, 4, 0], "texture": "#1"},
+ "up": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 4, 0, 0], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8, 1, 0.5],
+ "to": [8, 13, 15.5],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8, 7, 8]},
+ "faces": {
+ "north": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 4, 8, 0], "texture": "#1"},
+ "south": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "west": {"uv": [8, 4, 4, 0], "texture": "#1"},
+ "up": {"uv": [0, 4, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 4, 0, 0], "texture": "#1"}
+ }
+ },
+ {
+ "from": [3.5, 4, 2],
+ "to": [3.5, 16, 14],
+ "rotation": {"angle": -22.5, "axis": "z", "origin": [3.5, 10, 8]},
+ "faces": {
+ "north": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "east": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "south": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "west": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "up": {"uv": [4, 12, 0, 8], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [0, 12, 4, 8], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [-1, 6.25, 2],
+ "to": [11, 6.25, 14],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5, 6.25, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "up": {"uv": [10, 8, 6, 4], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [6, 8, 10, 4], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 6.25, 2],
+ "to": [17, 6.25, 14],
+ "rotation": {"angle": 45, "axis": "z", "origin": [11, 6.25, 8]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "up": {"uv": [10, 4, 6, 8], "rotation": 270, "texture": "#1"},
+ "down": {"uv": [6, 4, 10, 8], "rotation": 270, "texture": "#1"}
+ }
+ },
+ {
+ "from": [2, 6.25, -1],
+ "to": [14, 6.25, 11],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.25, 5]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#1"},
+ "up": {"uv": [6, 8, 10, 4], "texture": "#1"},
+ "down": {"uv": [6, 4, 10, 8], "texture": "#1"}
+ }
+ },
+ {
+ "from": [2, 6.25, 5],
+ "to": [14, 6.25, 17],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 6.25, 11]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#1"},
+ "up": {"uv": [6, 4, 10, 8], "texture": "#1"},
+ "down": {"uv": [6, 8, 10, 4], "texture": "#1"}
+ }
+ },
+ {
+ "from": [2, 4, 3.5],
+ "to": [14, 16, 3.5],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 3.5]},
+ "faces": {
+ "north": {"uv": [8, 8, 4, 12], "texture": "#1"},
+ "east": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "south": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "west": {"uv": [4, 8, 8, 12], "texture": "#1"},
+ "up": {"uv": [4, 12, 8, 8], "texture": "#1"},
+ "down": {"uv": [4, 8, 8, 12], "texture": "#1"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "ground": {
+ "translation": [0, 3.25, 0],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "gui": {
+ "rotation": [25, 135, 0],
+ "translation": [0, -0.25, 0],
+ "scale": [0.9, 0.9, 0.9]
+ },
+ "fixed": {
+ "rotation": [90, 0, 0],
+ "translation": [0, 0, -15],
+ "scale": [2, 2, 2]
+ }
+ },
+ "groups": [
+ {
+ "name": "bone3",
+ "origin": [-3, 4, -3],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ground.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ground.json
new file mode 100644
index 000000000..38d9eba22
--- /dev/null
+++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ground.json
@@ -0,0 +1,206 @@
+{
+ "credit": "Made with Blockbench",
+ "textures": {
+ "0": "item/custom/flower_basket"
+ },
+ "elements": [
+ {
+ "from": [2, 6.75, -1],
+ "to": [14, 6.75, 11],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 6.75, 5]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [0, 16, 4, 12], "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 16], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 8.25, -1],
+ "to": [14, 8.25, 11],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 8.25, 5]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [0, 12, 4, 8], "texture": "#0"},
+ "down": {"uv": [0, 8, 4, 12], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 8.25, 5],
+ "to": [14, 8.25, 17],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 8.25, 11]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [0, 8, 4, 12], "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 6.75, 5],
+ "to": [14, 6.75, 17],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.75, 11]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [0, 12, 4, 16], "texture": "#0"},
+ "down": {"uv": [0, 16, 4, 12], "texture": "#0"}
+ }
+ },
+ {
+ "from": [-1, 6.75, 2],
+ "to": [11, 6.75, 14],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5, 6.75, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [4, 16, 0, 12], "rotation": 270, "texture": "#0"},
+ "down": {"uv": [0, 16, 4, 12], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [5, 6.75, 2],
+ "to": [17, 6.75, 14],
+ "rotation": {"angle": -45, "axis": "z", "origin": [11, 6.75, 8]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [4, 12, 0, 16], "rotation": 270, "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 16], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [5, 8.25, 2],
+ "to": [17, 8.25, 14],
+ "rotation": {"angle": -45, "axis": "z", "origin": [11, 8.25, 8]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [4, 8, 0, 12], "rotation": 270, "texture": "#0"},
+ "down": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [-1, 8.25, 2],
+ "to": [11, 8.25, 14],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5, 8.25, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [4, 12, 0, 8], "rotation": 270, "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 8], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [3.5, 3.75, 3.5],
+ "to": [12.5, 5.25, 12.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [4.25, 3.75, 4.25]},
+ "faces": {
+ "north": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#0"},
+ "east": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#0"},
+ "south": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#0"},
+ "west": {"uv": [10.5, 15.5, 13.5, 16], "texture": "#0"},
+ "up": {"uv": [13.5, 12.5, 10.5, 9.5], "texture": "#0"},
+ "down": {"uv": [13.5, 12.5, 10.5, 15.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [4.25, 0, 4.25],
+ "to": [11.75, 3.75, 11.75],
+ "rotation": {"angle": 0, "axis": "y", "origin": [5, 0, 5]},
+ "faces": {
+ "north": {"uv": [13.5, 14.75, 16, 16], "texture": "#0"},
+ "east": {"uv": [13.5, 14.75, 16, 16], "texture": "#0"},
+ "south": {"uv": [13.5, 14.75, 16, 16], "texture": "#0"},
+ "west": {"uv": [13.5, 14.75, 16, 16], "texture": "#0"},
+ "up": {"uv": [16, 14.75, 13.5, 12.25], "texture": "#0"},
+ "down": {"uv": [16, 9.75, 13.5, 12.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8, 0, 0.5],
+ "to": [8, 12, 15.5],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8, 6, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 4], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 4], "texture": "#0"},
+ "up": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 4], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8, 0, 0.5],
+ "to": [8, 12, 15.5],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8, 6, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 4], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 4], "texture": "#0"},
+ "up": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 4], "texture": "#0"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "ground": {
+ "translation": [0, 3.25, 0],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "gui": {
+ "rotation": [25, -40, 0],
+ "translation": [-0.25, 2, 0],
+ "scale": [0.9, 0.9, 0.9]
+ },
+ "fixed": {
+ "rotation": [-90, 0, 0],
+ "translation": [0, 0, -16],
+ "scale": [2, 2, 2]
+ }
+ },
+ "groups": [
+ {
+ "name": "bone",
+ "origin": [-3, 0, -3],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_wall.json b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_wall.json
new file mode 100644
index 000000000..b627c0756
--- /dev/null
+++ b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_wall.json
@@ -0,0 +1,233 @@
+{
+ "format_version": "1.21.6",
+ "credit": "Made with Blockbench",
+ "textures": {
+ "0": "item/custom/flower_basket"
+ },
+ "elements": [
+ {
+ "from": [-1, 11.5625, 4.43375],
+ "to": [11, 11.5625, 13.43375],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5, 11.5625, 7.43375]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [3, 4, 0, 8], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [3, 8, 0, 4], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [-1, 10.0625, 4.43375],
+ "to": [11, 10.0625, 13.43375],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5, 10.0625, 7.43375]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [6, 4, 3, 8], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [6, 8, 3, 4], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [5, 11.5625, 4.43375],
+ "to": [17, 11.5625, 13.43375],
+ "rotation": {"angle": -45, "axis": "z", "origin": [11, 11.5625, 7.43375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [3, 8, 0, 4], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [3, 4, 0, 8], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [5, 10.0625, 4.43375],
+ "to": [17, 10.0625, 13.43375],
+ "rotation": {"angle": -45, "axis": "z", "origin": [11, 10.0625, 7.43375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [6, 8, 3, 4], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [6, 4, 3, 8], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 10.0625, 4.43375],
+ "to": [14, 10.0625, 16.43375],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 10.0625, 10.43375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [4, 12, 0, 16], "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 16], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 10.0625, 1.43375],
+ "to": [14, 10.0625, 13.43375],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 10.0625, 7.43375]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [4, 16, 0, 12], "texture": "#0"},
+ "down": {"uv": [0, 16, 4, 12], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 11.5625, 2.18375],
+ "to": [14, 11.5625, 14.18375],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 11.5625, 8.18375]},
+ "faces": {
+ "north": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 4, 0], "texture": "#0"},
+ "up": {"uv": [4, 12, 0, 8], "texture": "#0"},
+ "down": {"uv": [0, 12, 4, 8], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 11.5625, 3.68375],
+ "to": [14, 11.5625, 15.68375],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 11.5625, 9.68375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "east": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "south": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "west": {"uv": [4, 0, 0, 0], "texture": "#0"},
+ "up": {"uv": [4, 8, 0, 12], "texture": "#0"},
+ "down": {"uv": [0, 8, 4, 12], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "from": [3.5, 7.0625, 5.93375],
+ "to": [12.5, 8.5625, 11.93375],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 7.43375]},
+ "faces": {
+ "north": {"uv": [13.5, 15.5, 10.5, 16], "texture": "#0"},
+ "east": {"uv": [9, 15.5, 7, 16], "texture": "#0"},
+ "south": {"uv": [13.5, 15.5, 10.5, 16], "texture": "#0"},
+ "west": {"uv": [9, 15.5, 7, 16], "texture": "#0"},
+ "up": {"uv": [11.5, 6.5, 13.5, 3.5], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [11.5, 6.5, 13.5, 9.5], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [4.25, 3.3125, 6.68375],
+ "to": [11.75, 7.0625, 11.18375],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 7.43375]},
+ "faces": {
+ "north": {"uv": [16, 14.75, 13.5, 16], "texture": "#0"},
+ "east": {"uv": [10.5, 14.75, 9, 16], "texture": "#0"},
+ "south": {"uv": [16, 14.75, 13.5, 16], "texture": "#0"},
+ "west": {"uv": [10.5, 14.75, 9, 16], "texture": "#0"},
+ "up": {"uv": [8, 14.75, 10.5, 12.25], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [9, 9.75, 10.5, 12.25], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [4.1, 3.1625, 6.53375],
+ "to": [11.9, 7.2125, 11.33375],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 7.43375]},
+ "faces": {
+ "north": {"uv": [16, 8.5, 13.5, 9.75], "texture": "#0"},
+ "east": {"uv": [16, 8.5, 14.5, 9.75], "texture": "#0"},
+ "south": {"uv": [16, 8.5, 13.5, 9.75], "texture": "#0"},
+ "west": {"uv": [14.5, 8.5, 16, 9.75], "texture": "#0"},
+ "up": {"uv": [13.5, 8.5, 16, 6], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [15, 3.5, 13.5, 6], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [0.5, 3.3125, 8.93375],
+ "to": [15.5, 15.3125, 8.93375],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 9.3125, 8.93375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 4], "texture": "#0"},
+ "east": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 4], "texture": "#0"},
+ "west": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "up": {"uv": [0, 0, 0, 4], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 4], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [0.5, 3.3125, 8.93375],
+ "to": [15.5, 15.3125, 8.93375],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 9.3125, 8.93375]},
+ "faces": {
+ "north": {"uv": [4, 0, 0, 4], "texture": "#0"},
+ "east": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "south": {"uv": [0, 0, 4, 4], "texture": "#0"},
+ "west": {"uv": [0, 0, 0, 4], "texture": "#0"},
+ "up": {"uv": [0, 0, 0, 4], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 4], "rotation": 270, "texture": "#0"}
+ }
+ },
+ {
+ "from": [5, 3.3125, 4.44125],
+ "to": [11, 5.5625, 6.69125],
+ "rotation": {"angle": 0, "axis": "y", "origin": [10.25, 3.3125, 5.93375]},
+ "faces": {
+ "north": {"uv": [16, 0, 14, 0.75], "texture": "#0"},
+ "east": {"uv": [14, 2.75, 13.25, 3.5], "texture": "#0"},
+ "south": {"uv": [16, 0.75, 14, 1.5], "texture": "#0"},
+ "west": {"uv": [13.25, 2.75, 14, 3.5], "texture": "#0"},
+ "up": {"uv": [13.25, 0, 12.5, 2], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [14, 0, 13.25, 2], "rotation": 270, "texture": "#0"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [60, -34, 0],
+ "translation": [-0.5, 3, 1],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 45, 0],
+ "translation": [3.5, 0, 0]
+ },
+ "ground": {
+ "translation": [0, 3.25, 0],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "gui": {
+ "rotation": [25, 135, 0],
+ "translation": [-0.25, 2, 0],
+ "scale": [0.9, 0.9, 0.9]
+ },
+ "fixed": {
+ "rotation": [-90, 0, 0],
+ "translation": [0, 0, -16],
+ "scale": [2, 2, 2]
+ }
+ },
+ "groups": [
+ {
+ "name": "bone2",
+ "origin": [-5, 5.3125, -4.43375],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png
new file mode 100644
index 000000000..d7a8f86ba
Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png differ
diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png
new file mode 100644
index 000000000..7430df69f
Binary files /dev/null and b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png differ
diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java
index 7f7a20441..f8bb24094 100644
--- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java
+++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java
@@ -497,6 +497,11 @@ public abstract class AbstractPackManager implements PackManager {
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/table_lamp.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/wooden_chair.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/bench.png");
+ plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ceiling.json");
+ plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_ground.json");
+ plugin.saveResource("resources/default/resourcepack/assets/minecraft/models/item/custom/flower_basket_wall.json");
+ plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket.png");
+ plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/flower_basket_2d.png");
// tooltip
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png.mcmeta");