From d7e3ee995d79b20ecd166b7c05ea75598b6d265f Mon Sep 17 00:00:00 2001 From: Andrew-71 Date: Fri, 25 Aug 2023 14:28:30 +0300 Subject: [PATCH] Merge new update in --- .../su/a71/new_soviet/NewSovietClient.java | 1 + .../tags/blocks/mineable/pickaxe.json | 1 + .../loot_tables/blocks/black_bishop.json | 20 + .../loot_tables/blocks/black_king.json | 20 + .../loot_tables/blocks/black_knight.json | 20 + .../loot_tables/blocks/black_pawn.json | 20 + .../loot_tables/blocks/black_queen.json | 20 + .../loot_tables/blocks/black_rook.json | 20 + .../loot_tables/blocks/handrail.json | 20 + .../loot_tables/blocks/white_bishop.json | 20 + .../loot_tables/blocks/white_king.json | 20 + .../loot_tables/blocks/white_knight.json | 20 + .../loot_tables/blocks/white_pawn.json | 20 + .../loot_tables/blocks/white_queen.json | 20 + .../loot_tables/blocks/white_rook.json | 20 + .../su/a71/new_soviet/DataGeneration.java | 39 +- .../a71/new_soviet/blocks/CheckerBlock.java | 108 ++++++ .../su/a71/new_soviet/blocks/ChessBlock.java | 50 +++ .../new_soviet/blocks/ChessBlockKnight.java | 57 +++ .../a71/new_soviet/blocks/HandrailBlock.java | 165 ++++++++ .../su/a71/new_soviet/blocks/TVBlock.java | 15 +- .../a71/new_soviet/items/CigaretteItem.java | 128 +++++++ .../new_soviet/registration/NSE_Blocks.java | 7 +- .../new_soviet/registration/NSE_Custom.java | 37 ++ .../new_soviet/registration/NSE_Items.java | 8 + .../new_soviet/registration/NSE_Sounds.java | 7 + .../java/su/a71/new_soviet/sounds/Sounds.java | 52 +++ .../java/su/a71/new_soviet/util/Shapes.java | 199 ++++++++++ .../new_soviet/blockstates/black_bishop.json | 8 + .../new_soviet/blockstates/black_checker.json | 16 + .../new_soviet/blockstates/black_king.json | 8 + .../new_soviet/blockstates/black_knight.json | 8 + .../new_soviet/blockstates/black_pawn.json | 8 + .../new_soviet/blockstates/black_queen.json | 8 + .../new_soviet/blockstates/black_rook.json | 8 + .../new_soviet/blockstates/handrail.json | 18 + .../new_soviet/blockstates/white_bishop.json | 8 + .../new_soviet/blockstates/white_checker.json | 16 + .../new_soviet/blockstates/white_king.json | 8 + .../new_soviet/blockstates/white_knight.json | 8 + .../new_soviet/blockstates/white_pawn.json | 8 + .../new_soviet/blockstates/white_queen.json | 8 + .../new_soviet/blockstates/white_rook.json | 8 + .../assets/new_soviet/lang/en_us.json | 19 +- .../models/block/black_checker.json | 67 ++++ .../models/block/black_checker2.json | 80 ++++ .../models/block/black_checker3.json | 94 +++++ .../models/block/black_checker4.json | 107 ++++++ .../new_soviet/models/block/chess/bishop.json | 126 +++++++ .../models/block/chess/black/bishop.json | 130 +++++++ .../models/block/chess/black/king.json | 241 ++++++++++++ .../models/block/chess/black/knight.json | 142 +++++++ .../models/block/chess/black/pawn.json | 116 ++++++ .../models/block/chess/black/queen.json | 185 +++++++++ .../models/block/chess/black/rook.json | 131 +++++++ .../new_soviet/models/block/chess/king.json | 153 ++++++++ .../new_soviet/models/block/chess/knight.json | 138 +++++++ .../new_soviet/models/block/chess/pawn.json | 112 ++++++ .../new_soviet/models/block/chess/queen.json | 153 ++++++++ .../new_soviet/models/block/chess/rook.json | 127 +++++++ .../models/block/chess/white/bishop.json | 130 +++++++ .../models/block/chess/white/king.json | 241 ++++++++++++ .../models/block/chess/white/knight.json | 142 +++++++ .../models/block/chess/white/pawn.json | 116 ++++++ .../models/block/chess/white/queen.json | 185 +++++++++ .../models/block/chess/white/rook.json | 131 +++++++ .../models/block/handrail/handrail.json | 102 +++++ .../models/block/handrail/handrail_left.json | 84 +++++ .../models/block/handrail/handrail_right.json | 84 +++++ .../models/block/white_checker.json | 67 ++++ .../models/block/white_checker2.json | 80 ++++ .../models/block/white_checker3.json | 93 +++++ .../models/block/white_checker4.json | 106 ++++++ .../new_soviet/models/item/black_bishop.json | 4 + .../new_soviet/models/item/black_checker.json | 8 + .../new_soviet/models/item/black_king.json | 4 + .../new_soviet/models/item/black_knight.json | 4 + .../new_soviet/models/item/black_pawn.json | 4 + .../new_soviet/models/item/black_queen.json | 4 + .../new_soviet/models/item/black_rook.json | 4 + .../new_soviet/models/item/cigarette.json | 50 +++ .../models/item/cigarette_butt.json | 7 + .../new_soviet/models/item/handrail.json | 4 + .../new_soviet/models/item/white_bishop.json | 4 + .../new_soviet/models/item/white_checker.json | 8 + .../new_soviet/models/item/white_king.json | 4 + .../new_soviet/models/item/white_knight.json | 4 + .../new_soviet/models/item/white_pawn.json | 4 + .../new_soviet/models/item/white_queen.json | 4 + .../new_soviet/models/item/white_rook.json | 4 + .../resources/assets/new_soviet/sounds.json | 38 ++ .../new_soviet/sounds/cigarette_pause.ogg | Bin 0 -> 12313 bytes .../new_soviet/sounds/cigarette_random.ogg | Bin 0 -> 23263 bytes .../new_soviet/sounds/cigarette_restart.ogg | Bin 0 -> 7180 bytes .../new_soviet/sounds/cigarette_start.ogg | Bin 0 -> 8616 bytes .../new_soviet/sounds/cigarette_stopped.ogg | Bin 0 -> 7617 bytes .../assets/new_soviet/sounds/smoking_1.ogg | Bin 0 -> 8970 bytes .../assets/new_soviet/sounds/smoking_2.ogg | Bin 0 -> 7359 bytes .../assets/new_soviet/sounds/smoking_3.ogg | Bin 0 -> 7249 bytes .../block/games/checkers/black_checker.png | Bin 0 -> 365 bytes .../block/games/checkers/white_checker.png | Bin 0 -> 418 bytes .../block/games/chess/black/bishop.png | Bin 0 -> 599 bytes .../textures/block/games/chess/black/king.png | Bin 0 -> 631 bytes .../block/games/chess/black/knight.png | Bin 0 -> 628 bytes .../textures/block/games/chess/black/pawn.png | Bin 0 -> 468 bytes .../block/games/chess/black/queen.png | Bin 0 -> 627 bytes .../textures/block/games/chess/black/rook.png | Bin 0 -> 603 bytes .../block/games/chess/white/bishop.png | Bin 0 -> 622 bytes .../textures/block/games/chess/white/king.png | Bin 0 -> 659 bytes .../block/games/chess/white/knight.png | Bin 0 -> 668 bytes .../textures/block/games/chess/white/pawn.png | Bin 0 -> 511 bytes .../block/games/chess/white/queen.png | Bin 0 -> 669 bytes .../textures/block/games/chess/white/rook.png | Bin 0 -> 626 bytes .../new_soviet/textures/block/handrail.png | Bin 0 -> 699 bytes .../textures/item/black_checker.png | Bin 0 -> 349 bytes .../new_soviet/textures/item/cigarette.png | Bin 0 -> 123 bytes .../textures/item/cigarette_butt.png | Bin 0 -> 317 bytes .../textures/item/white_checker.png | Bin 0 -> 429 bytes .../loot_tables/blocks/black_checker.json | 62 +++ .../loot_tables/blocks/purple_goo.json | 356 ++++++++++++++++++ .../loot_tables/blocks/white_checker.json | 62 +++ 121 files changed, 5595 insertions(+), 10 deletions(-) create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_bishop.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_king.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_knight.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_pawn.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_queen.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/black_rook.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/handrail.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_bishop.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_king.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_knight.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_pawn.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_queen.json create mode 100644 src/main/generated/data/new_soviet/loot_tables/blocks/white_rook.json create mode 100644 src/main/java/su/a71/new_soviet/blocks/CheckerBlock.java create mode 100644 src/main/java/su/a71/new_soviet/blocks/ChessBlock.java create mode 100644 src/main/java/su/a71/new_soviet/blocks/ChessBlockKnight.java create mode 100644 src/main/java/su/a71/new_soviet/blocks/HandrailBlock.java create mode 100644 src/main/java/su/a71/new_soviet/items/CigaretteItem.java create mode 100644 src/main/java/su/a71/new_soviet/sounds/Sounds.java create mode 100644 src/main/java/su/a71/new_soviet/util/Shapes.java create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_bishop.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_checker.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_king.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_knight.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_pawn.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_queen.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/black_rook.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/handrail.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_bishop.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_checker.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_king.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_knight.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_pawn.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_queen.json create mode 100644 src/main/resources/assets/new_soviet/blockstates/white_rook.json create mode 100644 src/main/resources/assets/new_soviet/models/block/black_checker.json create mode 100644 src/main/resources/assets/new_soviet/models/block/black_checker2.json create mode 100644 src/main/resources/assets/new_soviet/models/block/black_checker3.json create mode 100644 src/main/resources/assets/new_soviet/models/block/black_checker4.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/bishop.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/bishop.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/king.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/knight.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/pawn.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/queen.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/black/rook.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/king.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/knight.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/pawn.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/queen.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/rook.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/bishop.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/king.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/knight.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/pawn.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/queen.json create mode 100644 src/main/resources/assets/new_soviet/models/block/chess/white/rook.json create mode 100644 src/main/resources/assets/new_soviet/models/block/handrail/handrail.json create mode 100644 src/main/resources/assets/new_soviet/models/block/handrail/handrail_left.json create mode 100644 src/main/resources/assets/new_soviet/models/block/handrail/handrail_right.json create mode 100644 src/main/resources/assets/new_soviet/models/block/white_checker.json create mode 100644 src/main/resources/assets/new_soviet/models/block/white_checker2.json create mode 100644 src/main/resources/assets/new_soviet/models/block/white_checker3.json create mode 100644 src/main/resources/assets/new_soviet/models/block/white_checker4.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_bishop.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_checker.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_king.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_knight.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_pawn.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_queen.json create mode 100644 src/main/resources/assets/new_soviet/models/item/black_rook.json create mode 100644 src/main/resources/assets/new_soviet/models/item/cigarette.json create mode 100644 src/main/resources/assets/new_soviet/models/item/cigarette_butt.json create mode 100644 src/main/resources/assets/new_soviet/models/item/handrail.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_bishop.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_checker.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_king.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_knight.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_pawn.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_queen.json create mode 100644 src/main/resources/assets/new_soviet/models/item/white_rook.json create mode 100644 src/main/resources/assets/new_soviet/sounds/cigarette_pause.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/cigarette_random.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/cigarette_restart.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/cigarette_start.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/cigarette_stopped.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/smoking_1.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/smoking_2.ogg create mode 100644 src/main/resources/assets/new_soviet/sounds/smoking_3.ogg create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/checkers/black_checker.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/checkers/white_checker.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/bishop.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/king.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/knight.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/pawn.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/queen.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/black/rook.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/bishop.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/king.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/knight.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/pawn.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/queen.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/games/chess/white/rook.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/handrail.png create mode 100644 src/main/resources/assets/new_soviet/textures/item/black_checker.png create mode 100644 src/main/resources/assets/new_soviet/textures/item/cigarette.png create mode 100644 src/main/resources/assets/new_soviet/textures/item/cigarette_butt.png create mode 100644 src/main/resources/assets/new_soviet/textures/item/white_checker.png create mode 100644 src/main/resources/data/new_soviet/loot_tables/blocks/black_checker.json create mode 100644 src/main/resources/data/new_soviet/loot_tables/blocks/purple_goo.json create mode 100644 src/main/resources/data/new_soviet/loot_tables/blocks/white_checker.json diff --git a/src/client/java/su/a71/new_soviet/NewSovietClient.java b/src/client/java/su/a71/new_soviet/NewSovietClient.java index d9f090f..2509989 100644 --- a/src/client/java/su/a71/new_soviet/NewSovietClient.java +++ b/src/client/java/su/a71/new_soviet/NewSovietClient.java @@ -16,6 +16,7 @@ public class NewSovietClient implements ClientModInitializer { @Override public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.CRATE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.HANDRAIL, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.LAMP, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.CEILING_FAN, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.SIREN, RenderLayer.getCutout()); diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json index e9caf71..ab67b35 100644 --- a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "new_soviet:sand_tiles", + "new_soviet:handrail", "new_soviet:nii_floor", "new_soviet:big_green_tiles", "new_soviet:big_green_tiles_cracked", diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_bishop.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_bishop.json new file mode 100644 index 0000000..d43e969 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_bishop.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_bishop" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_king.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_king.json new file mode 100644 index 0000000..3a18050 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_king.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_king" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_knight.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_knight.json new file mode 100644 index 0000000..8e3666c --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_knight.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_knight" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_pawn.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_pawn.json new file mode 100644 index 0000000..42a44a7 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_pawn.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_pawn" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_queen.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_queen.json new file mode 100644 index 0000000..8a5bff0 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_queen.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_queen" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/black_rook.json b/src/main/generated/data/new_soviet/loot_tables/blocks/black_rook.json new file mode 100644 index 0000000..3b389dd --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/black_rook.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:black_rook" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/handrail.json b/src/main/generated/data/new_soviet/loot_tables/blocks/handrail.json new file mode 100644 index 0000000..2c391a9 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/handrail.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:handrail" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_bishop.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_bishop.json new file mode 100644 index 0000000..e316114 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_bishop.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_bishop" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_king.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_king.json new file mode 100644 index 0000000..5ca35b7 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_king.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_king" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_knight.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_knight.json new file mode 100644 index 0000000..e3070d7 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_knight.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_knight" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_pawn.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_pawn.json new file mode 100644 index 0000000..0d1f254 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_pawn.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_pawn" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_queen.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_queen.json new file mode 100644 index 0000000..b313989 --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_queen.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_queen" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/new_soviet/loot_tables/blocks/white_rook.json b/src/main/generated/data/new_soviet/loot_tables/blocks/white_rook.json new file mode 100644 index 0000000..9429d9a --- /dev/null +++ b/src/main/generated/data/new_soviet/loot_tables/blocks/white_rook.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "new_soviet:white_rook" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/DataGeneration.java b/src/main/java/su/a71/new_soviet/DataGeneration.java index c7b3684..a605f49 100644 --- a/src/main/java/su/a71/new_soviet/DataGeneration.java +++ b/src/main/java/su/a71/new_soviet/DataGeneration.java @@ -11,19 +11,32 @@ import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.block.CandleBlock; import net.minecraft.data.client.BlockStateModelGenerator; import net.minecraft.data.client.ItemModelGenerator; import net.minecraft.data.server.recipe.RecipeJsonProvider; import net.minecraft.data.server.recipe.RecipeProvider; import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder; import net.minecraft.data.server.recipe.ShapelessRecipeJsonBuilder; +import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.Items; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.BlockStatePropertyLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.entry.LootPoolEntry; +import net.minecraft.loot.function.ExplosionDecayLootFunction; +import net.minecraft.loot.function.LootFunctionConsumingBuilder; +import net.minecraft.loot.function.SetCountLootFunction; +import net.minecraft.loot.provider.number.ConstantLootNumberProvider; +import net.minecraft.predicate.StatePredicate; import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.book.RecipeCategory; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.tag.BlockTags; import net.minecraft.util.Util; +import su.a71.new_soviet.blocks.CheckerBlock; import su.a71.new_soviet.registration.NSE_Blocks; import su.a71.new_soviet.registration.NSE_Custom; import su.a71.new_soviet.registration.NSE_Items; @@ -34,8 +47,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; public class DataGeneration implements DataGeneratorEntrypoint { - - private static class BlockLootTables extends FabricBlockLootTableProvider { + private class BlockLootTables extends FabricBlockLootTableProvider { public BlockLootTables(FabricDataOutput dataOutput) { super(dataOutput); } @@ -199,15 +211,29 @@ public class DataGeneration implements DataGeneratorEntrypoint { addDrop(NSE_Blocks.MEAT); addDrop(NSE_Blocks.MEAT_EYE); addDrop(NSE_Blocks.MEAT_TEETH); - addDrop(NSE_Blocks.CHISELED_BIRCH_DOOR); - addDrop(NSE_Blocks.CHISELED_MANGROVE_DOOR); - addDrop(NSE_Blocks.CHISELED_OAK_DOOR); - addDrop(NSE_Blocks.CHISELED_SPRUCE_DOOR); + addDrop(NSE_Blocks.CHISELED_BIRCH_DOOR, doorDrops(NSE_Blocks.CHISELED_BIRCH_DOOR)); + addDrop(NSE_Blocks.CHISELED_MANGROVE_DOOR, doorDrops(NSE_Blocks.CHISELED_MANGROVE_DOOR));; + addDrop(NSE_Blocks.CHISELED_OAK_DOOR, doorDrops(NSE_Blocks.CHISELED_OAK_DOOR)); + addDrop(NSE_Blocks.CHISELED_SPRUCE_DOOR, doorDrops(NSE_Blocks.CHISELED_SPRUCE_DOOR));; addDrop(NSE_Blocks.BEIGE_WALLPAPER); addDrop(NSE_Blocks.BROWN_WALLPAPER); addDrop(NSE_Blocks.GREEN_WALLPAPER); + addDrop(NSE_Blocks.HANDRAIL); // Drops for furniture/electronics/appliances + addDrop(NSE_Custom.WHITE_PAWN); + addDrop(NSE_Custom.WHITE_BISHOP); + addDrop(NSE_Custom.WHITE_KING); + addDrop(NSE_Custom.WHITE_KNIGHT); + addDrop(NSE_Custom.WHITE_QUEEN); + addDrop(NSE_Custom.WHITE_ROOK); + addDrop(NSE_Custom.BLACK_KNIGHT); + addDrop(NSE_Custom.BLACK_PAWN); + addDrop(NSE_Custom.BLACK_KING); + addDrop(NSE_Custom.BLACK_QUEEN); + addDrop(NSE_Custom.BLACK_BISHOP); + addDrop(NSE_Custom.BLACK_ROOK); + addDrop(NSE_Custom.TV); addDrop(NSE_Custom.RED_TV); addDrop(NSE_Custom.BROWN_TV); @@ -230,6 +256,7 @@ public class DataGeneration implements DataGeneratorEntrypoint { // Blocks mined with a pickaxe getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE) .add(NSE_Blocks.SAND_TILES) + .add(NSE_Blocks.HANDRAIL) .add(NSE_Blocks.NII_FLOOR) .add(NSE_Blocks.BIG_GREEN_TILES) .add(NSE_Blocks.BIG_GREEN_TILES_CRACKED) diff --git a/src/main/java/su/a71/new_soviet/blocks/CheckerBlock.java b/src/main/java/su/a71/new_soviet/blocks/CheckerBlock.java new file mode 100644 index 0000000..2283c40 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/CheckerBlock.java @@ -0,0 +1,108 @@ +package su.a71.new_soviet.blocks; + +import net.minecraft.block.*; +import net.minecraft.entity.ai.pathing.NavigationType; +import net.minecraft.entity.player.PlayerEntity; +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.IntProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.state.property.Property; +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.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; + +public class CheckerBlock extends Block implements Waterloggable { + public static final int MAX_PICKLES = 4; + public static final IntProperty CHECKERS; + public static final BooleanProperty WATERLOGGED; + protected static final VoxelShape ONE_CHECKER; + protected static final VoxelShape TWO_CHECKER; + protected static final VoxelShape THREE_CHECKER; + protected static final VoxelShape FOUR_CHECKER; + + public CheckerBlock(AbstractBlock.Settings settings) { + super(settings); + this.setDefaultState((BlockState)((BlockState)((BlockState)this.stateManager.getDefaultState()).with(CHECKERS, 1)).with(WATERLOGGED, true)); + } + + @Nullable + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockState blockState = ctx.getWorld().getBlockState(ctx.getBlockPos()); + if (blockState.isOf(this)) { + return (BlockState)blockState.with(CHECKERS, Math.min(4, (Integer)blockState.get(CHECKERS) + 1)); + } else { + FluidState fluidState = ctx.getWorld().getFluidState(ctx.getBlockPos()); + boolean bl = fluidState.getFluid() == Fluids.WATER; + return (BlockState)super.getPlacementState(ctx).with(WATERLOGGED, bl); + } + } + + protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) { + return !floor.getCollisionShape(world, pos).getFace(Direction.UP).isEmpty() || floor.isSideSolidFullSquare(world, pos, Direction.UP); + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + BlockPos blockPos = pos.down(); + return this.canPlantOnTop(world.getBlockState(blockPos), world, blockPos); + } + + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (!state.canPlaceAt(world, pos)) { + return Blocks.AIR.getDefaultState(); + } else { + if ((Boolean)state.get(WATERLOGGED)) { + world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + + return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos); + } + } + + public boolean canReplace(BlockState state, ItemPlacementContext context) { + return !context.shouldCancelInteraction() && context.getStack().isOf(this.asItem()) && (Integer) state.get(CHECKERS) < 4 || super.canReplace(state, context); + } + + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + switch ((Integer)state.get(CHECKERS)) { + case 1: + default: + return ONE_CHECKER; + case 2: + return TWO_CHECKER; + case 3: + return THREE_CHECKER; + case 4: + return FOUR_CHECKER; + } + } + + public FluidState getFluidState(BlockState state) { + return (Boolean)state.get(WATERLOGGED) ? Fluids.WATER.getStill(false) : super.getFluidState(state); + } + + protected void appendProperties(StateManager.Builder builder) { + builder.add(new Property[]{CHECKERS, WATERLOGGED}); + } + + public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) { + return false; + } + + static { + CHECKERS = IntProperty.of("checkers", 1, 4);; + WATERLOGGED = Properties.WATERLOGGED; + ONE_CHECKER = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 4.0, 14.0); + TWO_CHECKER = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 8.0, 14.0); + THREE_CHECKER = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 12.0, 14.0); + FOUR_CHECKER = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 16.0, 14.0); + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/ChessBlock.java b/src/main/java/su/a71/new_soviet/blocks/ChessBlock.java new file mode 100644 index 0000000..ade8934 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/ChessBlock.java @@ -0,0 +1,50 @@ +package su.a71.new_soviet.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; + +public class ChessBlock extends HorizontalFacingBlock { + + private VoxelShape blockShape; + + public ChessBlock(AbstractBlock.Settings settings, VoxelShape blockShape) { + super(settings.notSolid().nonOpaque().noBlockBreakParticles().pistonBehavior(PistonBehavior.DESTROY).strength(0.1f, 2f)); + setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); + this.blockShape = blockShape; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(Properties.HORIZONTAL_FACING); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + return VoxelShapes.union(blockShape, Block.createCuboidShape(4,0,4,12,1,12), Block.createCuboidShape(5,1,5,11,4,11), Block.createCuboidShape(6,0,6,10,13,10)); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) { + return !floor.getCollisionShape(world, pos).getFace(Direction.UP).isEmpty() || floor.isSideSolidFullSquare(world, pos, Direction.UP); + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + BlockPos blockPos = pos.down(); + return this.canPlantOnTop(world.getBlockState(blockPos), world, blockPos); + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/ChessBlockKnight.java b/src/main/java/su/a71/new_soviet/blocks/ChessBlockKnight.java new file mode 100644 index 0000000..d7f4065 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/ChessBlockKnight.java @@ -0,0 +1,57 @@ +package su.a71.new_soviet.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalFacingBlock; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; +import su.a71.new_soviet.util.Shapes; + +public class ChessBlockKnight extends HorizontalFacingBlock { + + public ChessBlockKnight(Settings settings) { + super(settings.notSolid().nonOpaque().noBlockBreakParticles().pistonBehavior(PistonBehavior.DESTROY).strength(0.1f, 2f)); + setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(Properties.HORIZONTAL_FACING); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + Direction dir = state.get(FACING); + return switch (dir) { + case NORTH -> VoxelShapes.union(Block.createCuboidShape(4,0,4,12,1,12), Block.createCuboidShape(5,1,5,11,4,11), Block.createCuboidShape(6,0,6,10,13,10), Block.createCuboidShape(5.5,9,1.5,10.5,13,9.5), Block.createCuboidShape(7.5,8,6,8.5,17,11)); + case SOUTH -> VoxelShapes.union(Block.createCuboidShape(4,0,4,12,1,12), Block.createCuboidShape(5,1,5,11,4,11), Block.createCuboidShape(6,0,6,10,13,10), Block.createCuboidShape(5.5,9,6.5,10.5,13,14.5), Block.createCuboidShape(7.5,8,5,8.5,17,10)); + case EAST -> VoxelShapes.union(Block.createCuboidShape(4,0,4,12,1,12), Block.createCuboidShape(5,1,5,11,4,11), Block.createCuboidShape(6,0,6,10,13,10), Block.createCuboidShape(6.5,9,5.5,14.5,13,10.5), Block.createCuboidShape(5,8,7.5,10,17,8.5)); + case WEST -> VoxelShapes.union(Block.createCuboidShape(4,0,4,12,1,12), Block.createCuboidShape(5,1,5,11,4,11), Block.createCuboidShape(6,0,6,10,13,10), Block.createCuboidShape(1.5,9,5.5,9.5,13,10.5), Block.createCuboidShape(6,8,7.5,11,17,8.5)); + default -> VoxelShapes.fullCube(); + }; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) { + return !floor.getCollisionShape(world, pos).getFace(Direction.UP).isEmpty() || floor.isSideSolidFullSquare(world, pos, Direction.UP); + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + BlockPos blockPos = pos.down(); + return this.canPlantOnTop(world.getBlockState(blockPos), world, blockPos); + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/HandrailBlock.java b/src/main/java/su/a71/new_soviet/blocks/HandrailBlock.java new file mode 100644 index 0000000..82e879c --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/HandrailBlock.java @@ -0,0 +1,165 @@ +package su.a71.new_soviet.blocks; + +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.enums.BlockHalf; +import net.minecraft.block.enums.StairShape; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.IntProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.gen.feature.util.CaveSurface; +import su.a71.new_soviet.entity.TVBlockEntity; +import su.a71.new_soviet.registration.NSE_Blocks; +import su.a71.new_soviet.util.Shapes; + +import java.util.List; +import java.util.Objects; + +import static net.minecraft.block.StairsBlock.HALF; +import static net.minecraft.block.StairsBlock.SHAPE; + +public class HandrailBlock extends HorizontalFacingBlock implements BlockEntityProvider { + protected static final Shapes.HorizontalShape2 SHAPE1; + protected static final Shapes.HorizontalShape2 SHAPE2; + protected static final Shapes.HorizontalShape2 SHAPE3; + public static final BooleanProperty WATERLOGGED; + + public static final IntProperty ROTATE; + + public HandrailBlock(Settings settings) { + super(settings.sounds(BlockSoundGroup.METAL).pistonBehavior(PistonBehavior.BLOCK).strength(1f, 2f)); + setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(Properties.HORIZONTAL_FACING, WATERLOGGED, ROTATE); + } + + public FluidState getFluidState(BlockState state) { + return (Boolean)state.get(WATERLOGGED) ? Fluids.WATER.getStill(false) : super.getFluidState(state); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + Direction dir = state.get(FACING); + int rot = state.get(ROTATE); + return switch (dir) { + case NORTH -> switch (rot) { + case 1 -> SHAPE1.north(); + case 2 -> SHAPE2.north(); + case 3 -> SHAPE3.north(); + default -> VoxelShapes.fullCube(); + }; + case SOUTH -> switch (rot) { + case 1 -> SHAPE1.south(); + case 2 -> SHAPE2.south(); + case 3 -> SHAPE3.south(); + default -> VoxelShapes.fullCube(); + }; + case EAST -> switch (rot) { + case 1 -> SHAPE1.east(); + case 2 -> SHAPE2.east(); + case 3 -> SHAPE3.east(); + default -> VoxelShapes.fullCube(); + }; + case WEST -> switch (rot) { + case 1 -> SHAPE1.west(); + case 2 -> SHAPE2.west(); + case 3 -> SHAPE3.west(); + default -> VoxelShapes.fullCube(); + }; + default -> VoxelShapes.fullCube(); + }; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + FluidState fluidState = ctx.getWorld().getFluidState(ctx.getBlockPos()); + boolean bl = fluidState.getFluid() == Fluids.WATER; + int rot = 2; + BlockPos under = new BlockPos(ctx.getBlockPos().getX(), ctx.getBlockPos().getY() - 1, ctx.getBlockPos().getZ()); + if (istruestairs1(ctx.getWorld().getBlockState(ctx.getBlockPos().down(1)), ctx)) { + rot = 1; + } else if (istruestairs2(ctx.getWorld().getBlockState(ctx.getBlockPos().down(1)), ctx)) { + rot = 3; + } + return (BlockState)this.getDefaultState() + .with(WATERLOGGED, ctx.getWorld().getFluidState(ctx.getBlockPos()).getFluid() == Fluids.WATER) + .with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()) + .with(ROTATE, rot); + + } + + private boolean istruestairs1(BlockState blockState, ItemPlacementContext ctx) { + boolean output = false; + if (blockState.isIn(BlockTags.STAIRS)) { + boolean h = blockState.get(SHAPE) == StairShape.STRAIGHT; + if (h && blockState.get(HALF) == BlockHalf.BOTTOM && returnFacing(blockState.get(FACING).getName()) == ctx.getHorizontalPlayerFacing().getOpposite().getName()) { + output = true; + } + } + return output; + } + + private boolean istruestairs2(BlockState blockState, ItemPlacementContext ctx) { + boolean output = false; + if (blockState.isIn(BlockTags.STAIRS)) { + boolean h = blockState.get(SHAPE) == StairShape.STRAIGHT; + if (h && blockState.get(HALF) == BlockHalf.BOTTOM && blockState.get(FACING).getName() == returnFacing(ctx.getHorizontalPlayerFacing().getOpposite().getName())) { + output = true; + } + } + return output; + } + + private String returnFacing(String facing1) { + String facing2 = "north"; + if (facing1 == "north") { + facing2 = "west"; + } else if (facing1 == "west") { + facing2 = "south"; + } else if (facing1 == "south") { + facing2 = "east"; + } + return facing2; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new TVBlockEntity(pos, state); + } + + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (!state.canPlaceAt(world, pos)) { + return Blocks.AIR.getDefaultState(); + } else { + if ((Boolean)state.get(WATERLOGGED)) { + world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + + return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos); + } + } + + static { + SHAPE2 = new Shapes.HorizontalShape2(List.of(List.of(0.0, 0.0, 15.0, 16.0, 17.0, 16.0), List.of(0.0, 17.0, 14.5, 16.0, 19.0, 16.5))); + SHAPE1 = new Shapes.HorizontalShape2(List.of(List.of(0.0, 0.0, 15.0, 8.0, 18.0, 16.0), List.of(8.0, -8.0, 15.0, 16.0, 10.0, 16.0))); + SHAPE3 = new Shapes.HorizontalShape2(List.of(List.of(0.0, -8.0, 15.0, 8.0, 10.0, 16.0), List.of(8.0, 0.0, 15.0, 16.0, 18.0, 16.0))); + ROTATE = IntProperty.of("rotate", 1, 3);; + WATERLOGGED = Properties.WATERLOGGED; + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/TVBlock.java b/src/main/java/su/a71/new_soviet/blocks/TVBlock.java index d350e79..9afd9f0 100644 --- a/src/main/java/su/a71/new_soviet/blocks/TVBlock.java +++ b/src/main/java/su/a71/new_soviet/blocks/TVBlock.java @@ -14,8 +14,13 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import su.a71.new_soviet.entity.TVBlockEntity; +import su.a71.new_soviet.util.Shapes; + +import java.util.List; public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvider { + protected static final Shapes.HorizontalShape SHAPE; + public TVBlock(AbstractBlock.Settings settings) { super(settings.sounds(BlockSoundGroup.METAL).pistonBehavior(PistonBehavior.BLOCK).strength(1f, 2f)); setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); @@ -30,8 +35,10 @@ public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvide public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { Direction dir = state.get(FACING); return switch (dir) { - case NORTH, SOUTH -> VoxelShapes.cuboid(0.0f, 0.0f, 0.1875f, 1.0f, 0.8125f, 0.8125f); - case EAST, WEST -> VoxelShapes.cuboid(0.1875f, 0.0f, 0.0f, 0.8125f, 0.8125f, 1.0f); + case NORTH -> SHAPE.north(); + case SOUTH -> SHAPE.south(); + case EAST -> SHAPE.east(); + case WEST -> SHAPE.west(); default -> VoxelShapes.fullCube(); }; } @@ -45,4 +52,8 @@ public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvide public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { return new TVBlockEntity(pos, state); } + + static { + SHAPE = new Shapes.HorizontalShape(List.of(List.of(0.0, 1.0, 3.0, 16.0, 13.0, 13.0), List.of(2.0, 0.0, 4.0, 14.0, 1.0, 12.0), List.of(6.0, 13.0, 7.0, 10.0, 14.0, 9.0))); + } } \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/items/CigaretteItem.java b/src/main/java/su/a71/new_soviet/items/CigaretteItem.java new file mode 100644 index 0000000..0a8ba95 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/items/CigaretteItem.java @@ -0,0 +1,128 @@ +package su.a71.new_soviet.items; + +import net.minecraft.client.item.TooltipContext; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.*; +import net.minecraft.particle.DustParticleEffect; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundCategory; +import net.minecraft.stat.Stats; +import net.minecraft.text.Text; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.World; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import org.jetbrains.annotations.Nullable; +import su.a71.new_soviet.NewSoviet; +import su.a71.new_soviet.registration.NSE_Items; +import su.a71.new_soviet.sounds.Sounds; + +import java.util.List; +import java.util.Objects; + +public class CigaretteItem + extends Item { + private final int durationInTicks; + private final Item returnedItem; + private final String local_tooltip; + + public CigaretteItem(int durationInTicks, Item returnedItem, String localTooltip, Item.Settings settings) { + super(settings.maxDamageIfAbsent(durationInTicks)); + this.durationInTicks = durationInTicks; + this.returnedItem = returnedItem; + this.local_tooltip = localTooltip; + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return durationInTicks - stack.getDamage() - 1; + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.SPYGLASS; + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + ItemStack itemStack = user.getStackInHand(hand); + if (user.getInventory().getStack(40).getItem() == Items.FLINT_AND_STEEL && user.getInventory().getMainHandStack().getDamage() == 0) { + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_START, SoundCategory.PLAYERS, 1.0f, 1.0f); + user.incrementStat(Stats.USED.getOrCreateStat(this)); + itemStack.damage(1, user, e -> e.sendEquipmentBreakStatus(EquipmentSlot.OFFHAND)); + return ItemUsage.consumeHeldItem(world, user, hand); + } else if (user.getInventory().getMainHandStack().getDamage() != 0) { + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_RESTART, SoundCategory.PLAYERS, 1.0f, 1.0f); + user.incrementStat(Stats.USED.getOrCreateStat(this)); + return ItemUsage.consumeHeldItem(world, user, hand); + } else if (user.isCreative()) { + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_RESTART, SoundCategory.PLAYERS, 1.0f, 1.0f); + user.incrementStat(Stats.USED.getOrCreateStat(this)); + return ItemUsage.consumeHeldItem(world, user, hand); + } + return TypedActionResult.fail(itemStack); + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + stack.onStoppedUsing(world, user, durationInTicks); + return stack; + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + user.setMovementSpeed(1.1f); + if (stack.getDamage() < durationInTicks - 1) { + stack.damage(1, user, e -> e.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND));} + if (NewSoviet.RANDOM.nextBetween(1, 2) == 1) { + float pitch = NewSoviet.RANDOM.nextBetween(8, 10) * 0.1f; + double d = user.getX(); + double e = user.getY() + 1.5; + double f = user.getZ(); + world.addParticle(ParticleTypes.SMOKE, d, e, f, 0, 0, 0); + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.SMOKING, SoundCategory.PLAYERS, 1.0f, pitch); + } + if (NewSoviet.RANDOM.nextBetween(1, 6) == 1) { + double d = user.getX(); + double e = user.getY() + 1.5; + double f = user.getZ(); + world.addParticle(ParticleTypes.LARGE_SMOKE, d, e, f, 0, 0, 0); + float pitch = NewSoviet.RANDOM.nextBetween(9, 10) * 0.1f; + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_RANDOM, SoundCategory.PLAYERS, 1.0f, pitch); + } + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + if (stack.getDamage() < (durationInTicks - 1)) { + stack.damage(1, user, e -> e.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND)); + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_PAUSE, SoundCategory.PLAYERS, 1.0f, 1.0f); + } else if (stack.getDamage() >= (durationInTicks - 2)) { + user.equipStack(EquipmentSlot.MAINHAND, new ItemStack(returnedItem)); + world.playSound(user, BlockPos.ofFloored(user.getPos()), Sounds.CIGARETTE_STOPPED, SoundCategory.PLAYERS, 1.0f, 1.0f); + } + double d = user.getX(); + double e = user.getY() + 1.5; + double f = user.getZ(); + world.addParticle(ParticleTypes.LARGE_SMOKE, d, e, f, 0, -0.03, 0); + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { + if (!local_tooltip.isEmpty()) { + tooltip.add(Text.translatable(local_tooltip)); + super.appendTooltip(stack, world, tooltip, context); + } + } +} + diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java b/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java index 39bcbdf..1c6b6fd 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java @@ -12,8 +12,10 @@ import net.minecraft.sound.BlockSoundGroup; import net.minecraft.text.Text; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; - +import su.a71.new_soviet.blocks.CheckerBlock; import su.a71.new_soviet.blocks.ConcreteWithBarsBlock; +import su.a71.new_soviet.blocks.HandrailBlock; +import su.a71.new_soviet.sounds.Sounds; public class NSE_Blocks extends NSE_BaseRegistration { @@ -229,6 +231,8 @@ public class NSE_Blocks extends NSE_BaseRegistration { public static final Block MEAT_TEETH = new Block(FabricBlockSettings.copy(MEAT)); public static final SnowBlock PURPLE_GOO = new SnowBlock(FabricBlockSettings.copy(MEAT).hardness(1.2f).nonOpaque()); + public static final HandrailBlock HANDRAIL = new HandrailBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.COPPER).hardness(4f).nonOpaque()); + private static final ItemGroup NSE_BUILDING_TAB = FabricItemGroup.builder() .icon(() -> new ItemStack(CALCITE_TILES)) .displayName(Text.translatable("itemGroup.new_soviet.building_blocks")) @@ -433,6 +437,7 @@ public class NSE_Blocks extends NSE_BaseRegistration { registerBlock("meat_eye", () -> MEAT_EYE, NSE_BUILDING_TAB); registerBlock("meat_teeth", () -> MEAT_TEETH, NSE_BUILDING_TAB); registerBlock("purple_goo", () -> PURPLE_GOO, NSE_BUILDING_TAB); + registerBlock("handrail", () -> HANDRAIL, NSE_BUILDING_TAB); // Flammable blocks! FlammableBlockRegistry flammableBlockRegistry = FlammableBlockRegistry.getDefaultInstance(); diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Custom.java b/src/main/java/su/a71/new_soviet/registration/NSE_Custom.java index bd29137..bc531ef 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Custom.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Custom.java @@ -2,7 +2,9 @@ package su.a71.new_soviet.registration; import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; import net.minecraft.block.MapColor; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.piston.PistonBehavior; @@ -13,8 +15,11 @@ import net.minecraft.registry.Registry; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundEvent; import net.minecraft.text.Text; +import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; import su.a71.new_soviet.NewSoviet; import su.a71.new_soviet.blocks.*; import su.a71.new_soviet.entity.TVBlockEntity; @@ -38,6 +43,24 @@ public class NSE_Custom extends NSE_BaseRegistration { public static final SoundEvent ELECTRIC_HIT = SoundEvent.of(new Identifier(NewSoviet.MOD_ID, "electric_hit")); public static final LandMineBlock LANDMINE = new LandMineBlock(FabricBlockSettings.create().mapColor(MapColor.LIGHT_GRAY).offset(AbstractBlock.OffsetType.XZ).dynamicBounds()); + //games + //checkers + public static final CheckerBlock WHITE_CHECKER = new CheckerBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).hardness(0.1f).nonOpaque().mapColor(MapColor.WHITE)); + public static final CheckerBlock BLACK_CHECKER = new CheckerBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).hardness(0.1f).nonOpaque().mapColor(MapColor.BLACK)); + //chess + public static final ChessBlock WHITE_BISHOP = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,8,5,11,9,11), Block.createCuboidShape(5,10,5,11,16,11), Block.createCuboidShape(7,16,7,9,19,9))); + public static final ChessBlock WHITE_KING = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,13,5,11,16,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); + public static final ChessBlockKnight WHITE_KNIGHT = new ChessBlockKnight(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque()); + public static final ChessBlock WHITE_PAWN = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5,8,5,11,14,11))); + public static final ChessBlock WHITE_QUEEN = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,13,5,11,16,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); + public static final ChessBlock WHITE_ROOK = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.WHITE).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,10,5,11,15,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); + + public static final ChessBlock BLACK_BISHOP = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,8,5,11,9,11), Block.createCuboidShape(5,10,5,11,16,11), Block.createCuboidShape(7,16,7,9,19,9))); + public static final ChessBlock BLACK_KING = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,13,5,11,16,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); + public static final ChessBlockKnight BLACK_KNIGHT = new ChessBlockKnight(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque()); + public static final ChessBlock BLACK_PAWN = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5,8,5,11,14,11))); + public static final ChessBlock BLACK_QUEEN = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,13,5,11,16,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); + public static final ChessBlock BLACK_ROOK = new ChessBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.DECORATED_POT).mapColor(DyeColor.BLACK).nonOpaque(), VoxelShapes.union(Block.createCuboidShape(5,10,5,11,15,11), Block.createCuboidShape(5.5,5,5.5,10.5,6,10.5), Block.createCuboidShape(5.5,7,5.5,10.5,8,10.5))); private static final ItemGroup NSE_CUSTOM_TAB = FabricItemGroup.builder() .icon(() -> new ItemStack(TV)) @@ -56,5 +79,19 @@ public class NSE_Custom extends NSE_BaseRegistration { registerBlock("siren", () -> SIREN, NSE_CUSTOM_TAB); registerBlock("landmine", () -> LANDMINE, NSE_CUSTOM_TAB); registerBlock("switch", () -> SWITCH, NSE_CUSTOM_TAB); + registerBlock("white_checker", () -> WHITE_CHECKER, NSE_CUSTOM_TAB); + registerBlock("black_checker", () -> BLACK_CHECKER, NSE_CUSTOM_TAB); + registerBlock("white_pawn", () -> WHITE_PAWN, NSE_CUSTOM_TAB); + registerBlock("white_queen", () -> WHITE_QUEEN, NSE_CUSTOM_TAB); + registerBlock("white_rook", () -> WHITE_ROOK, NSE_CUSTOM_TAB); + registerBlock("white_knight", () -> WHITE_KNIGHT, NSE_CUSTOM_TAB); + registerBlock("white_bishop", () -> WHITE_BISHOP, NSE_CUSTOM_TAB); + registerBlock("white_king", () -> WHITE_KING, NSE_CUSTOM_TAB); + registerBlock("black_pawn", () -> BLACK_PAWN, NSE_CUSTOM_TAB); + registerBlock("black_queen", () -> BLACK_QUEEN, NSE_CUSTOM_TAB); + registerBlock("black_knight", () -> BLACK_KNIGHT, NSE_CUSTOM_TAB); + registerBlock("black_rook", () -> BLACK_ROOK, NSE_CUSTOM_TAB); + registerBlock("black_bishop", () -> BLACK_BISHOP, NSE_CUSTOM_TAB); + registerBlock("black_king", () -> BLACK_KING, NSE_CUSTOM_TAB); } } \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Items.java b/src/main/java/su/a71/new_soviet/registration/NSE_Items.java index 212e233..c456bcd 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Items.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Items.java @@ -11,6 +11,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; import su.a71.new_soviet.Materials.NSE_ToolMaterials; +import su.a71.new_soviet.items.CigaretteItem; import su.a71.new_soviet.items.DiceItem; import su.a71.new_soviet.items.RakeItem; @@ -30,6 +31,11 @@ public class NSE_Items extends NSE_BaseRegistration { public static final DiceItem DICE_D20 = new DiceItem(20, "item.new_soviet.dice_d20.tooltip", new Item.Settings().maxCount(6)); public static final Item LIGHT_BULB = new Item(new Item.Settings()); + public static final Item CIGARETTE_BUTT = new Item(new Item.Settings()); + + //cigarettes + public static final CigaretteItem CIGARETTE = new CigaretteItem(200, NSE_Items.CIGARETTE_BUTT, "item.new_soviet.tooltip.salute", new Item.Settings()); + // private static final ItemGroup NSE_ITEMS_TAB = FabricItemGroup.builder() .icon(() -> new ItemStack(SICKLE)) @@ -46,5 +52,7 @@ public class NSE_Items extends NSE_BaseRegistration { registerItem("dice_d4", () -> DICE_D4, NSE_ITEMS_TAB); registerItem("dice_d20", () -> DICE_D20, NSE_ITEMS_TAB); registerItem("light_bulb_item", () -> LIGHT_BULB, NSE_ITEMS_TAB); + registerItem("cigarette", ()-> CIGARETTE, NSE_ITEMS_TAB); + registerItem("cigarette_butt", ()-> CIGARETTE_BUTT, NSE_ITEMS_TAB); } } diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Sounds.java b/src/main/java/su/a71/new_soviet/registration/NSE_Sounds.java index c29db12..35a3713 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Sounds.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Sounds.java @@ -27,6 +27,13 @@ public class NSE_Sounds extends NSE_BaseRegistration { public static SoundEvent ITEM_RAKE_TILL = registerSoundEvent("item_rake_till"); + public static SoundEvent SMOKING = registerSoundEvent("smoking"); + public static SoundEvent CIGARETTE_RESTART = registerSoundEvent("cigarette_restart"); + public static SoundEvent CIGARETTE_RANDOM = registerSoundEvent("cigarette_random"); + public static SoundEvent CIGARETTE_STOPPED = registerSoundEvent("cigarette_stopped"); + public static SoundEvent CIGARETTE_START = registerSoundEvent("cigarette_start"); + public static SoundEvent CIGARETTE_PAUSE = registerSoundEvent("cigarette_pause"); + public static final SoundEvent SIREN_SOUND = registerSoundEvent("siren_sound"); public static final SoundEvent LIGHT_BULB_BROKEN_SOUND = registerSoundEvent("light_bulb_broken_sound"); diff --git a/src/main/java/su/a71/new_soviet/sounds/Sounds.java b/src/main/java/su/a71/new_soviet/sounds/Sounds.java new file mode 100644 index 0000000..688ce23 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/sounds/Sounds.java @@ -0,0 +1,52 @@ +package su.a71.new_soviet.sounds; + +import net.minecraft.block.Blocks; +import net.minecraft.sound.SoundEvents; +import su.a71.new_soviet.NewSoviet; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; + +public class Sounds { + //dice sound + public static SoundEvent DICE_SOUND = registerSoundEvent("dice_sound"); + //parquet sounds + public static SoundEvent PARQUET_WALK = registerSoundEvent("parquet_walk"); + public static final BlockSoundGroup PARQUET_SOUNDS = new BlockSoundGroup(1f, 1f, + BlockSoundGroup.CHERRY_WOOD.getBreakSound(), Sounds.PARQUET_WALK, BlockSoundGroup.CHERRY_WOOD.getPlaceSound(), + BlockSoundGroup.CHERRY_WOOD.getHitSound(), Sounds.PARQUET_WALK); + + //meat sounds + public static final BlockSoundGroup MEAT_SOUNDS = new BlockSoundGroup(1f, 1f, + BlockSoundGroup.MUD.getBreakSound(), BlockSoundGroup.HONEY.getStepSound(), BlockSoundGroup.MUD.getPlaceSound(), + BlockSoundGroup.MUD.getHitSound(), BlockSoundGroup.HONEY.getStepSound()); + + //switch sound + public static SoundEvent SWITCH_PRESS = registerSoundEvent("switch_press"); + + //sand tiles sounds + public static final BlockSoundGroup SAND_TILES_SOUNDS = new BlockSoundGroup(1f, 0.8f, + BlockSoundGroup.MUD_BRICKS.getBreakSound(), BlockSoundGroup.DECORATED_POT.getStepSound(), BlockSoundGroup.MUD_BRICKS.getPlaceSound(), + BlockSoundGroup.MUD_BRICKS.getHitSound(), BlockSoundGroup.DECORATED_POT.getStepSound()); + + //wallpaper block sounds + public static final BlockSoundGroup WALLPAPER_BLOCK_SOUNDS = new BlockSoundGroup(1f, 0.7f, + BlockSoundGroup.BAMBOO_WOOD.getBreakSound(), BlockSoundGroup.WOOL.getStepSound(), BlockSoundGroup.BAMBOO_WOOD.getPlaceSound(), + BlockSoundGroup.WOOL.getHitSound(), BlockSoundGroup.WOOL.getStepSound()); + //rake sound + public static SoundEvent ITEM_RAKE_TILL = registerSoundEvent("item_rake_till"); + //cigarette sounds + public static SoundEvent SMOKING = registerSoundEvent("smoking"); + public static SoundEvent CIGARETTE_RESTART = registerSoundEvent("cigarette_restart"); + public static SoundEvent CIGARETTE_RANDOM = registerSoundEvent("cigarette_random"); + public static SoundEvent CIGARETTE_STOPPED = registerSoundEvent("cigarette_stopped"); + public static SoundEvent CIGARETTE_START = registerSoundEvent("cigarette_start"); + public static SoundEvent CIGARETTE_PAUSE = registerSoundEvent("cigarette_pause"); + + private static SoundEvent registerSoundEvent(String name) { + Identifier id = new Identifier(NewSoviet.MOD_ID, name); + return Registry.register(Registries.SOUND_EVENT, id, SoundEvent.of(id)); + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/util/Shapes.java b/src/main/java/su/a71/new_soviet/util/Shapes.java new file mode 100644 index 0000000..f589d62 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/util/Shapes.java @@ -0,0 +1,199 @@ +package su.a71.new_soviet.util; + +import net.minecraft.block.Block; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; + +import java.util.ArrayList; +import java.util.List; + +public class Shapes { + public static class NHShape{ + private VoxelShape NORTH; + private VoxelShape WEST; + private VoxelShape SOUTH; + private VoxelShape EAST; + private double minX; + private double minY; + private double minZ; + private double maxX; + private double maxY; + private double maxZ; + + public NHShape(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { + this.minX = minX; + this.minY = minY; + this.minZ = minZ; + this.maxX = maxX; + this.maxY = maxY; + this.maxZ = maxZ; + this.NORTH = Block.createCuboidShape(minX, minY, minZ, maxX, maxY, maxZ); + this.WEST = Block.createCuboidShape(minZ, minY, minX, maxZ, maxY, maxX); + this.SOUTH = Block.createCuboidShape(minX, minY, (16 - maxZ), maxX, maxY, (16 - minZ)); + this.EAST = Block.createCuboidShape((16 - maxZ), minY, minX, (16 - minZ), maxY, maxX); + } + + public VoxelShape north(){ + return NORTH; + } + + public VoxelShape west(){ + return WEST; + } + + public VoxelShape south(){ + return SOUTH; + } + + public VoxelShape east(){ + return EAST; + } + } + + public static class NHShape2{ + private VoxelShape NORTH; + private VoxelShape WEST; + private VoxelShape SOUTH; + private VoxelShape EAST; + private double minX; + private double minY; + private double minZ; + private double maxX; + private double maxY; + private double maxZ; + + public NHShape2(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { + this.minX = minX; + this.minY = minY; + this.minZ = minZ; + this.maxX = maxX; + this.maxY = maxY; + this.maxZ = maxZ; + this.NORTH = Block.createCuboidShape((16 - maxX), minY, minZ, (16 - minX), maxY, maxZ); + this.WEST = Block.createCuboidShape(minZ, minY, minX, maxZ, maxY, maxX); + this.SOUTH = Block.createCuboidShape(minX, minY, (16 - maxZ), maxX, maxY, (16 - minZ)); + this.EAST = Block.createCuboidShape((16 - maxZ), minY, (16 - maxX), (16 - minZ), maxY, (16 - minX)); + } + + public VoxelShape north(){ + return NORTH; + } + + public VoxelShape west(){ + return WEST; + } + + public VoxelShape south(){ + return SOUTH; + } + + public VoxelShape east(){ + return EAST; + } + } + + public static class HorizontalShape{ + private List ShapesListN; + private List ShapesListS; + private List ShapesListW; + private List ShapesListE; + public HorizontalShape(List> list) { + this.ShapesListN = new ArrayList<>(); + this.ShapesListS = new ArrayList<>(); + this.ShapesListW = new ArrayList<>(); + this.ShapesListE = new ArrayList<>(); + for (List i : list) { + NHShape shape = new NHShape(i.get(0), i.get(1), i.get(2), i.get(3), i.get(4), i.get(5)); + ShapesListN.add(shape.north()); + ShapesListS.add(shape.south()); + ShapesListW.add(shape.west()); + ShapesListE.add(shape.east()); + } + } + + public VoxelShape north() { + VoxelShape shape = Block.createCuboidShape(0, 0,0,0,0,0); + for (int i=0;i> list) { + this.ShapesListN = new ArrayList<>(); + this.ShapesListS = new ArrayList<>(); + this.ShapesListW = new ArrayList<>(); + this.ShapesListE = new ArrayList<>(); + for (List i : list) { + NHShape2 shape = new NHShape2(i.get(0), i.get(1), i.get(2), i.get(3), i.get(4), i.get(5)); + ShapesListN.add(shape.north()); + ShapesListS.add(shape.south()); + ShapesListW.add(shape.west()); + ShapesListE.add(shape.east()); + } + } + + public VoxelShape north() { + VoxelShape shape = Block.createCuboidShape(0, 0,0,0,0,0); + for (int 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 D>Ry>p literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/sounds/cigarette_random.ogg b/src/main/resources/assets/new_soviet/sounds/cigarette_random.ogg new file mode 100644 index 0000000000000000000000000000000000000000..eedc15d106997d55e5557bd47bcc20b633f100ed GIT binary patch literal 23263 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 aF2pYqcq#kNg}xVAi`P;BXaEil4h|0J!pfHb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/sounds/cigarette_restart.ogg b/src/main/resources/assets/new_soviet/sounds/cigarette_restart.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ff2aefefdf1d791c1ab21c6821b9e4cfea37bdeb GIT binary patch literal 7180 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 G?f(GCd$I2T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/sounds/cigarette_start.ogg b/src/main/resources/assets/new_soviet/sounds/cigarette_start.ogg new file mode 100644 index 0000000000000000000000000000000000000000..24784229cbcd06805eb4e1bfa8c1455cbadf087e GIT binary patch literal 8616 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 Xd9W_`{0-+D#W%c%e>x6-OmO}mIE_-@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/sounds/smoking_1.ogg b/src/main/resources/assets/new_soviet/sounds/smoking_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f156bea195ff081c6c8a3572490e763327d2dc2f GIT binary patch literal 8970 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/sounds/smoking_3.ogg b/src/main/resources/assets/new_soviet/sounds/smoking_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2243a8371cf4f224e1698d8ff59587ce7109fe3a GIT binary patch literal 7249 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 LNkvXXu0mjfMedv7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/checkers/white_checker.png b/src/main/resources/assets/new_soviet/textures/block/games/checkers/white_checker.png new file mode 100644 index 0000000000000000000000000000000000000000..12721a5054adec4a024d24832998495cf8ed43c6 GIT binary patch literal 418 zcmV;T0bTxyP)Px$TuDShR9J=WlrK-iKp4iKHunjboMLNeLbA-(5;Vb}P$)!2;R7@%_3afY;|2sjyVqKv_sZ6Sx5Q;YFxu7B;X>T=C6| z(9tRzFutQTpld*<&X%RdY4VihUXcmD1K)G7sDYxnOV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/black/bishop.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/black/bishop.png new file mode 100644 index 0000000000000000000000000000000000000000..6f679c4522ff1af6ce4e8c1be5a3d1487964fd12 GIT binary patch literal 599 zcmV-d0;v6oP)Px%5lKWrR9J=WmO)S3KoEt$5X*`;wiT-=6*N@~mm*FGZiqk8U)n!`xKUNARM873 zpdzXiWYRT?irhmx>3Y2z>;P2{c~TVb?99HmFEdFx@3wbJfT*VcDDE@@GZys}DpHux zg|6(`YdiPTmyaDR1Ygh3NaM5;%%?fPJf2T;4iAp(T2!Peg3Wl77(i!p_^Jd*;sk)( z=`8@m^_TM^U1;wCy6_7)IX$lN*?~Za#cqLlGkJE|D%P9ireM=uake6$7Wo5HP}KWv zwS2y|KwFgL?(ObZa-9O~o6CCq{n|+&ACX;SHlgIWa%%#78*g84Ro1RP@OAdy?tbaY zy&7NE1&BR9YvmyGhLZ1V%r;ZtbwG&ZhKC17rQMjmLr+eRy`xgXf+kLniUpCHN zYnu36m(`Its*Ex;!H7vw9fu)=?V&ikG15+GF}{h-T_pZ5UddIrFUv-8GZtIHq| zavP}%$@Prq78tn5Z4r~%J)f_?RrW^NfGq4jh8uAF81;j0<&~=gf(d<7jiv&5|V`igvdoM@1tx`+aF~EXI)!(|CXD` l!Y*&NHUQ?M_!Q&-zW`WcAf!;Px%F-b&0R9J=WmTha(P!xcltf4fwZD?5OP>W&_T0}(Lx3NFrFZEA|-z-I?v>;V< zDk~iwNliv^#1G?SdAUhbJHJRD2O#u*G`3P~{bT%>2@Z#yq zP+2OH{ouwvt`mK53a91w< z-XOEqxZimY0yG;<0KAn4K&O2aW#I=tqw!E%fs^CYFs=LY?Q^uB;H^A5?W2snDGR0C zg0d7Jr|$uH)__r!M4mXuG)0xL*Im06Sz(?1FI^q|BSp*=`*`+F5$jA}3`7 zE#g3$Nr&sN@5D)A0OCmJT<%?`m3iKET3WkpDfNfMsaAOO_#Qwsig)20;1B;04#e6G RsI341002ovPDHLkV1m6JER_HN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/black/knight.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/black/knight.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3608cac6d8dd7e1210597fbfaa284783869cf7 GIT binary patch literal 628 zcmV-)0*n2LP)Px%E=fc|R9J=Wmfva`K@^8Sbr5&lU6hKUtysDUN-3qZccm}UC+$m=-Zg|Y1ikSp zF+>!@YG*|n?1dexv$L+ErZ;{duJiAA&Y5%0nrQ~DIe=4;07O%TW_9dYxw0Hr(Z4l% zzSC`INTC_D=1xH(9f^t*(NrNi-8R1KuPqEGA@AROh#9iV#q~J=zU$*kFHJiU@uKyvJ@nk&zuSwYJ-)6G5{(R!Z ziKisxa{T)J2tcT20DNtCkNRE^THM5!c|tYg*aixlxM{>__Q=osyS2Gm zxkNdi+eaH9{x&R%+}g*Nd2U7zv5hyQ2W#YZMHEHc3mxV(Y*e*+E1$8lZ)2;`+N*F2&|+<&t&Zu59&(q@2(3>h*JgWhov)9N-VCe*r8`RwtkU O0000Px$j!8s8R9J=WmtRZ5P#lII+hOS3h9fajA@U~aD*7gU(!NA=R|G-mjaNb#fimrE zjKnTt;NQu3T=eZ?}TdlL_(AP-u8xM7Prez%nfWma8SEVMQkPe6;~cMoJaA zOaq~C)ziq&0ke&LU;Yv?BYRl`Dk|q^&%jNL_jx_}!v7@gyu{AaBP` z`%Jk7FK^GeGhS&R9?G;8q@9AYoRprSB;wR*1Mv9tP%4yr8#u&KDrF#V5*_O~P*G7) zQStB8?uLU6fNkhBg~r$S8UR-Y0NjrzM}13*P&|%p=(sZA*an44JZ@qhta+WiN80*M z3rE+=XakBbqNdOymu=`w=ZnO^>3pG#Tv0?*Bv%oJ`7cys3mb@w#V5@Y$!j!=lQ5Z7 zxH341NTz{MNF^TL`%Wv--gjEcaYf1XW8&x<7nkP%+oO00aeyCEzM}xWPiPPT0000< KMNUMnLSTZVhRv=3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/black/queen.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/black/queen.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa7493dcba8e5530f0b547e3b91a5d73cf7f8c7 GIT binary patch literal 627 zcmV-(0*w8MP)Px%ElET{R9J=WmS2k!Q53*`u7fyN9UN9%Dk+jciHK<5mi-ca(!NCWmPmytghg$| zii^vP-C3k%daygq+_^J5qCVvhMDLkrU0Mq*b5!WPlmnoP$ybtkdeTY3PIT&;^T91U>l4&8@O0GNLLgtzqQ zb^EEkrTgs%AwZ+v0Ki}R0JK{tQ4}(e3`YZF2F^~;LtXae+vn&!g}?M^w@y;}mfEP& ztq`{0x(1fuF z^ERt`Fh!(@r&ZX3;b>4&ouy;yBullO-iCHnr0PQF?DRamTFeuUDp^r7GccQ9-l;5u ze_4WcrQ213zx0h=V07TvZ2|E1-J3*u^!EBO`<_yc53RT?-ogsIDvW1jW}pbh={PfA zjS4j7fFAj-(61)Tfy_A&XJ1Z2&J}EHv{7#qYU8bHAPX5tj@?!w?Rf+0z<~q*H>Fqo zZV2Fr3N@?Duiv)-cya~6>+y7NV;KHULPu0m4;)d!lPmV^pk*?yJF!^Z^5ODl;#tRS z;#SJr*ai%5!m2XVsV{PyjWZtGq)*L%}Ph1(tH;t-Hjd4jp>Kx87b;$9!IK} zOn7p&6C=3}C_^UW>bv7MQ_nkY)2O#8h5nGZl`@YW-vfwRaTmq`{s6g|4WKhvLY@Es N002ovPDHLkV1h(ZCqe)K literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/black/rook.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/black/rook.png new file mode 100644 index 0000000000000000000000000000000000000000..6922bcfcd033a174f11ca3e17779cac15a8eef30 GIT binary patch literal 603 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 B>XHBe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/white/queen.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/white/queen.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9dc5d1c5bc70cee951d48055ed5f9cfef4f1bd GIT binary patch literal 669 zcmV;O0%HA%P)Px%S4l)cR9J=Wmc46QQ53*`Pah5n;>T1FipBUu5LfdbWNImSJ%hFYg3N*T)@*SlkVr%cM5jW&g%MJZ$1W3#gNnPf7- z(U))b;$H6@fTLt$V(gdK&$mb>6FhzO1c3KjAL#YYS>Jr%T5G&`^G*O{^JxH1j!yw7 zZ>-t7sCV0}uH>{C5JCu5_VVqvZBKG?d`fv^&82V3g)-feQpV!p<}(03?rnQ-cMfFg zo#TMl;@#?@_O~C@-AkF%IgB%F)H*F!3UzoLfvyOhg{F6^KDz^7tah-KYg94T<`wP5{xUoUL4DG zU7*8|ZDbh6M0(WrQs)77DhEO}oXw~0b5?`Z)zP&A@IpPBY(CAS@?EWsfN_Oi<9<<( z#tYATz{w&4oEd=O;9m?oi*Q;SFN9jBB~<)gcuSTn`TsEP=k5rAXgEZ~4D##uB>;or z2!Q?8_k~@V94ToG4(Qt^taKxemGO`%%$Qn;-TPmd;^+4qlg)t zc%tDDXZ;J8;#vPfo4I*0Bc^*7GR?El>CPR1>P$5{&57SYrxB3Fq+>7~-H4N^0Z2zW z=klG3$6WKNcucD|FP@*}PU4{;x6`)(>{h%9=Ky~I4+SV@iDoKl00000NkvXXu0mjf DsTw^u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/games/chess/white/rook.png b/src/main/resources/assets/new_soviet/textures/block/games/chess/white/rook.png new file mode 100644 index 0000000000000000000000000000000000000000..9430a26b0a08792ce15f44a93cedd6bc2a7c214f GIT binary patch literal 626 zcmV-&0*(ENP)Px%EJ;K`R9J=Wm(ObxK@`V7+YC7*5c1Of(;_mEhnl()hk`ILJ%)U3@_ujl2 zSZlMgD*@&g3INn=HUN)TmMvUJDdlQujqUO}0P6Y0o3nAgm;>O;=WhVKd->Gk53pI; zmGcV)7Uv37n>O{Dji{7AkjbRk-}}@zbexv%OSNfx<{hU+wQ2XqN;oXm^VjdCDT915 z=c|euE7ZI$o-gKn6$CgqY)E}hC}DkZRVu}+XK&fhq&+r{(_*D`@0=X}qDt=`i$M-< z)sAiQvn2Rp^19UMsGsPv@a$W=L(okfn{07 zz=p*NI)-{C-@hLDPDdt_W@l?-qyPeYKrgwJQZC(k;IY{*ud}nYF^WFo(cRksBbV}D znHkn_wX`DC~=)cEJ~-_W847>leiv4yLU?c=MT@jY${1A z8W}|!FkHoP5%K&Iu_(vw6QAR8`@~qeu!y+uXQ9e`9wy(=0qA1-qJu<+4RjDQs+ml5 zy1fe#85n>PGKs7IY%1w{pG_r=eqkB-X{Ja;BV5T{0_Y#bix3C+1E8WV=khe13jhEB M07*qoM6N<$f><{j6aWAK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/handrail.png b/src/main/resources/assets/new_soviet/textures/block/handrail.png new file mode 100644 index 0000000000000000000000000000000000000000..9194db38bd5b607045ad2667d388a6bba09b142b GIT binary patch literal 699 zcmV;s0!00ZP)Px%bxA})RCt{2nK5n~F%U(+ECVXk7?P6+0o)i+vAqg6LT->MfDhot7f6*ll`i1M z2QZ*YHxSaKNT0$$Y5|S}H7*3$UQh z?>0EB+fh#**a!OQ^B1*T%sWTJM*zU}xKNwT4ue4t0MH-xp4i{7b^rj~XS3NqfBpHV zWA@WY&|~GMmICa6&Mz+2axqU9;OO14bIer!eTWLM11Tm`b#r}HPF~A@yM6%B#diIG zqv2z@!Y2E^-Lh}hcski_D8Z`$R{&c6xdJl%zr>kPVh-$@@cG51a`konCbgTs>iW-$ zJ)j++oe~WtzS3Jp*U^|occ#{)5_6(`APnv|Pfa(0O^E+!Vlyo5+0_1%D+X_hSKN{&C zj!{6Vy0c>)R^t}tKGArr>|nH3#wK4Y`@>$CMlH#mBrs8 zhp~TZNZ70VRAGIu!cI`Fu-R}Qw_R2brSok(784L7)jGU}tw0DNgb+dqA%qY@2qAPx$7fD1xR5*>LlEF^HFbsyjRvg+W-f7Cz_6;~8xFO#EDG-~O*tBY=CQ5rN2WUvv zRzl!Yr1<;o-!}X+vbB%eG~@Jk-qN{lG52l_6fKm60zd`<7=f8kb_-9SDpexvdk?_d z`)eYSt-*)mKETdfDpLbc7Ag_Rw8_Ig3Ipp|fLPgrL|WziCHXIqFZt%Y?ze?g!hd;-QTYb7zC zi0AON+t{n~7V9ipNq|r72M_m;v6U?8pmQDl;3*3gs>joQetO|>+|R7tp66JbCK*!f v`}?F5Zt1>92&)Peqi)tuc}eJ(xqpvO_T8G2gKdSM00000NkvXXu0mjf5aF0L literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/item/cigarette.png b/src/main/resources/assets/new_soviet/textures/item/cigarette.png new file mode 100644 index 0000000000000000000000000000000000000000..adc4a1cdb317bc921d58d419f92355eaf95e88a4 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar`&KIv+xRoNr*!dsBI` z;KA>5H#Q~4?iJChT?ZP^zI4e>O8^2vF%bn<+hvSRHG4!P4>ZWJElv>W31DEbk>dV& TQ!B&}Xc~j3tDnm{r-UW|TR0`M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/item/cigarette_butt.png b/src/main/resources/assets/new_soviet/textures/item/cigarette_butt.png new file mode 100644 index 0000000000000000000000000000000000000000..a1054e1b1505f21a68541cad30b2c775d3725834 GIT binary patch literal 317 zcmV-D0mA-?P)Px#_en%SR5*>*(XmRyP!z`Te{Pi~fz(EY40aF>T`qJHd<*N+}Rs}9GVi0$qcLA#A-4Bp-$ z*~49h0XDwERz%}Y1b};90Fb)^U

LfL&8pN)=d*Ins;Fc@fhb)%DMs_VrkY(*+; zMb-vXXS5=k&FA=G$oc7r+!frPx$XGugsR5*>TlCetyQ5?rVmP-+a4lPcnq9A08nNuKwIOyag2<;6{xjAJ10cHO| z6gV|qLj~f}P$I!;2ui0dH=h4M#5L4C-l;d$Z+hH&pU?Y!fA8Rr<#F3MIlHjzwV_XG zUtO*|>vaR8afRKz7yv_U3}69EBJUz>gXu_2d{0MWLIzl}#Onsvnk^wP^eLHQ7JzE~ z*dbYy56N(;oTpUI6OAimidnj9N5nDBxsa~`l#i-brkHiW0JrUX0m_m@DoL(Tu^bVk zj109glhKT5Tmhh~b_j+;;^t^vVbJR@4^b{dpSo=^8O_962!5YRfO5;haL84@4)CVE zG`2Q&P7e