From 258cc3c64eed86a28468043bbf5098da055d0a97 Mon Sep 17 00:00:00 2001 From: Motschen Date: Sat, 19 Nov 2022 16:18:28 +0100 Subject: [PATCH] Port to Architectury --- .gitignore | 33 ++-- build.gradle | 115 +++++------ common/build.gradle | 34 ++++ .../visualoverhaul/VisualOverhaul.java | 0 .../visualoverhaul/VisualOverhaulClient.java | 15 ++ .../visualoverhaul/block/JukeboxTop.java | 4 +- .../block/model/FurnaceWoodenPlanksModel.java | 4 +- .../BrewingStandBlockEntityRenderer.java | 0 .../renderer/FurnaceBlockEntityRenderer.java | 0 .../renderer/JukeboxBlockEntityRenderer.java | 0 .../compat/phonos/block/RadioJukeboxTop.java | 1 - .../RadioJukeboxBlockEntityRenderer.java | 0 .../compat/phonos/init/PhonosCompatInit.java | 1 - .../visualoverhaul/config/VOConfig.java | 1 + .../mixin/MixinBlastFurnaceBlock.java | 0 .../mixin/MixinJukeboxBlockEntity.java | 0 .../visualoverhaul/mixin/MixinPotionItem.java | 0 .../mixin/MixinSmokerBlock.java | 0 .../mixin/MixinSoundSystem.java | 4 +- .../util/JukeboxPacketUpdate.java | 0 .../visualoverhaul/util/SoundTest.java | 0 .../main/resources/architectury.common.json | 2 + .../blockstates/jukebox_top.json | 0 .../blockstates/radio_jukebox_top.json | 0 .../resources/assets/visualoverhaul/icon.png | Bin .../assets/visualoverhaul/lang/en_us.json | 0 .../models/block/jukebox_top_playing.json | 0 .../models/block/jukebox_top_stopped.json | 0 .../block/phonos/jukebox_top_playing_0.json | 0 .../block/phonos/jukebox_top_playing_1.json | 0 .../block/phonos/jukebox_top_playing_10.json | 0 .../block/phonos/jukebox_top_playing_11.json | 0 .../block/phonos/jukebox_top_playing_12.json | 0 .../block/phonos/jukebox_top_playing_13.json | 0 .../block/phonos/jukebox_top_playing_14.json | 0 .../block/phonos/jukebox_top_playing_15.json | 0 .../block/phonos/jukebox_top_playing_16.json | 0 .../block/phonos/jukebox_top_playing_17.json | 0 .../block/phonos/jukebox_top_playing_18.json | 0 .../block/phonos/jukebox_top_playing_19.json | 0 .../block/phonos/jukebox_top_playing_2.json | 0 .../block/phonos/jukebox_top_playing_3.json | 0 .../block/phonos/jukebox_top_playing_4.json | 0 .../block/phonos/jukebox_top_playing_5.json | 0 .../block/phonos/jukebox_top_playing_6.json | 0 .../block/phonos/jukebox_top_playing_7.json | 0 .../block/phonos/jukebox_top_playing_8.json | 0 .../block/phonos/jukebox_top_playing_9.json | 0 .../block/phonos/jukebox_top_stopped_0.json | 0 .../block/phonos/jukebox_top_stopped_1.json | 0 .../block/phonos/jukebox_top_stopped_10.json | 0 .../block/phonos/jukebox_top_stopped_11.json | 0 .../block/phonos/jukebox_top_stopped_12.json | 0 .../block/phonos/jukebox_top_stopped_13.json | 0 .../block/phonos/jukebox_top_stopped_14.json | 0 .../block/phonos/jukebox_top_stopped_15.json | 0 .../block/phonos/jukebox_top_stopped_16.json | 0 .../block/phonos/jukebox_top_stopped_17.json | 0 .../block/phonos/jukebox_top_stopped_18.json | 0 .../block/phonos/jukebox_top_stopped_19.json | 0 .../block/phonos/jukebox_top_stopped_2.json | 0 .../block/phonos/jukebox_top_stopped_3.json | 0 .../block/phonos/jukebox_top_stopped_4.json | 0 .../block/phonos/jukebox_top_stopped_5.json | 0 .../block/phonos/jukebox_top_stopped_6.json | 0 .../block/phonos/jukebox_top_stopped_7.json | 0 .../block/phonos/jukebox_top_stopped_8.json | 0 .../block/phonos/jukebox_top_stopped_9.json | 0 .../textures/block/vo_jukebox_top.png | Bin .../minecraft/models/item/axolotl_bucket.json | 0 .../minecraft/models/item/cod_bucket.json | 0 .../models/item/pufferfish_bucket.json | 0 .../minecraft/models/item/salmon_bucket.json | 0 .../models/item/tropical_fish_bucket.json | 0 .../minecraft/models/item/water_bucket.json | 0 .../textures/item/axolotl_bucket_overlay.png | Bin .../textures/item/fish_bucket_overlay.png | Bin .../item/pufferfish_bucket_overlay.png | Bin .../textures/item/salmon_bucket_overlay.png | Bin .../minecraft/textures/item/sugar_canee.png | Bin .../item/tropical_fish_bucket_overlay.png | Bin .../textures/item/water_bucket_overlay.png | Bin .../coloredwaterbucket/pack.mcmeta | 0 .../resourcepacks/coloredwaterbucket/pack.png | Bin .../minecraft/blockstates/blast_furnace.json | 0 .../assets/minecraft/blockstates/furnace.json | 0 .../assets/minecraft/blockstates/smoker.json | 0 .../minecraft/materialmaps/block/furnace.json | 0 .../minecraft/models/block/blast_furnace.json | 0 .../models/block/blast_furnace_on.json | 0 .../minecraft/models/block/furnace.json | 0 .../minecraft/models/block/furnace_on.json | 0 .../assets/minecraft/models/block/smoker.json | 0 .../minecraft/models/block/smoker_on.json | 0 .../resourcepacks/fancyfurnace/pack.mcmeta | 0 .../resourcepacks/fancyfurnace/pack.png | Bin .../models/block/brewing_stand_bottle0.json | 6 +- .../models/block/brewing_stand_bottle1.json | 6 +- .../models/block/brewing_stand_bottle2.json | 6 +- .../textures/block/brewing_stand.png | Bin 0 -> 5502 bytes .../nobrewingbottles/pack.mcmeta | 0 .../resourcepacks/nobrewingbottles/pack.png | Bin .../item/button_mushrooms_music_disk.json | 0 .../button_mushrooms_music_disk_round.json | 0 .../models/item/ghost_town_music_disk.json | 0 .../item/ghost_town_music_disk_round.json | 0 .../models/item/swamp_jives_music_disk.json | 0 .../item/swamp_jives_music_disk_round.json | 0 .../models/item/music_disc_ashes.json | 0 .../models/item/music_disc_ashes_round.json | 0 .../models/item/dynamic_disc.json | 0 .../models/item/music_disc_0x10c.json | 0 .../models/item/music_disc_0x10c_round.json | 0 .../item/music_disc_cliffside_hinson.json | 0 .../music_disc_cliffside_hinson_round.json | 0 .../models/item/music_disc_i_jate_my_hob.json | 0 .../item/music_disc_i_jate_my_hob_round.json | 0 .../models/item/music_disc_peanuts.json | 0 .../models/item/music_disc_peanuts_round.json | 0 .../models/item/music_disc_repetition.json | 0 .../item/music_disc_repetition_round.json | 0 ...isc_sometimes_i_make_video_game_music.json | 0 ...metimes_i_make_video_game_music_round.json | 0 .../minecraft/models/item/music_disc_11.json | 0 .../models/item/music_disc_11_round.json | 0 .../minecraft/models/item/music_disc_13.json | 0 .../models/item/music_disc_13_round.json | 0 .../minecraft/models/item/music_disc_5.json | 0 .../models/item/music_disc_5_round.json | 0 .../models/item/music_disc_blocks.json | 0 .../models/item/music_disc_blocks_round.json | 0 .../minecraft/models/item/music_disc_cat.json | 0 .../models/item/music_disc_cat_round.json | 0 .../models/item/music_disc_chirp.json | 0 .../models/item/music_disc_chirp_round.json | 0 .../minecraft/models/item/music_disc_far.json | 0 .../models/item/music_disc_far_round.json | 0 .../models/item/music_disc_mall.json | 0 .../models/item/music_disc_mall_round.json | 0 .../models/item/music_disc_mellohi.json | 0 .../models/item/music_disc_mellohi_round.json | 0 .../models/item/music_disc_otherside.json | 0 .../item/music_disc_otherside_round.json | 0 .../models/item/music_disc_pigstep.json | 0 .../models/item/music_disc_pigstep_round.json | 0 .../models/item/music_disc_stal.json | 0 .../models/item/music_disc_stal_round.json | 0 .../models/item/music_disc_strad.json | 0 .../models/item/music_disc_strad_round.json | 0 .../models/item/music_disc_wait.json | 0 .../models/item/music_disc_wait_round.json | 0 .../models/item/music_disc_ward.json | 0 .../models/item/music_disc_ward_round.json | 0 .../phonos/models/item/custom_music_disc.json | 0 .../models/item/custom_music_disc_round.json | 0 .../recordable/models/item/copper_record.json | 0 .../models/item/copper_record_round.json | 0 .../models/item/round_disc.json | 0 .../item/round_disc_colored_layers.json | 0 .../resourcepacks/rounddiscs/pack.mcmeta | 0 .../resourcepacks/rounddiscs/pack.png | Bin .../main/resources/visualoverhaul.mixins.json | 6 +- fabric-like/build.gradle | 16 ++ fabric/build.gradle | 89 +++++++++ .../fabric/VisualOverhaulClientFabric.java | 67 +++---- .../MixinAbstractFurnaceBlockEntity.java | 8 +- .../mixin/MixinBrewingStandBlockEntity.java | 4 +- .../fabric}/mixin/MixinJukeboxBlock.java | 2 +- .../src}/main/resources/fabric.mod.json | 19 +- .../visualoverhaul-fabric.mixins.json | 14 ++ forge/build.gradle | 91 +++++++++ forge/gradle.properties | 1 + .../forge/VisualOverhaulClientEvents.java | 78 ++++++++ .../forge/VisualOverhaulClientForge.java | 111 +++++++++++ .../forge/VisualOverhaulForge.java | 15 ++ .../MixinAbstractFurnaceBlockEntity.java | 58 ++++++ .../forge/mixin/MixinBlockColors.java | 18 ++ .../mixin/MixinBrewingStandBlockEntity.java | 57 ++++++ .../forge/mixin/MixinItemColors.java | 62 ++++++ .../forge/mixin/MixinJukeboxBlock.java | 57 ++++++ .../forge/mixin/MixinResourcePackManager.java | 33 ++++ forge/src/main/resources/META-INF/mods.toml | 42 ++++ forge/src/main/resources/icon.png | Bin 0 -> 6314 bytes forge/src/main/resources/pack.mcmeta | 6 + .../visualoverhaul-forge.mixins.json | 19 ++ gradle.properties | 31 +-- gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 60756 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 6 + gradlew.bat | 180 +++++++++--------- quilt/build.gradle | 97 ++++++++++ quilt/gradle.properties | 1 + .../quilt/VisualOverhaulClientQuilt.java | 180 ++++++++++++++++++ .../MixinAbstractFurnaceBlockEntity.java | 57 ++++++ .../mixin/MixinBrewingStandBlockEntity.java | 56 ++++++ .../quilt/mixin/MixinJukeboxBlock.java | 56 ++++++ quilt/src/main/resources/quilt.mod.json | 61 ++++++ .../visualoverhaul-quilt.mixins.json | 14 ++ settings.gradle | 16 +- .../textures/block/brewing_stand.png | Bin 293 -> 0 bytes 200 files changed, 1591 insertions(+), 271 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 build.gradle create mode 100644 common/build.gradle rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/VisualOverhaul.java (100%) create mode 100755 common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java (83%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java (92%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/block/renderer/FurnaceBlockEntityRenderer.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java (92%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java (89%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java (92%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSmokerBlock.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java (82%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/util/JukeboxPacketUpdate.java (100%) rename {src => common/src}/main/java/eu/midnightdust/visualoverhaul/util/SoundTest.java (100%) create mode 100644 common/src/main/resources/architectury.common.json rename {src => common/src}/main/resources/assets/visualoverhaul/blockstates/jukebox_top.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/blockstates/radio_jukebox_top.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/icon.png (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/lang/en_us.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/jukebox_top_playing.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/jukebox_top_stopped.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_0.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_1.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_10.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_11.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_12.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_13.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_14.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_15.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_16.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_17.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_18.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_19.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_2.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_3.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_4.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_5.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_6.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_7.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_8.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_9.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_0.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_1.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_10.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_11.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_12.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_13.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_14.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_15.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_16.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_17.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_18.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_19.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_2.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_3.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_4.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_5.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_6.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_7.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_8.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_9.json (100%) rename {src => common/src}/main/resources/assets/visualoverhaul/textures/block/vo_jukebox_top.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/axolotl_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/cod_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/pufferfish_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/salmon_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/tropical_fish_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/water_bucket.json (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/axolotl_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/fish_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/pufferfish_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/salmon_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/sugar_canee.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/tropical_fish_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/water_bucket_overlay.png (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/pack.mcmeta (100%) rename {src => common/src}/main/resources/resourcepacks/coloredwaterbucket/pack.png (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/blast_furnace.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/furnace.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/smoker.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/materialmaps/block/furnace.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace_on.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace_on.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker_on.json (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/pack.mcmeta (100%) rename {src => common/src}/main/resources/resourcepacks/fancyfurnace/pack.png (100%) rename {src => common/src}/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json (73%) rename {src => common/src}/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json (78%) rename {src => common/src}/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json (78%) create mode 100755 common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png rename {src => common/src}/main/resources/resourcepacks/nobrewingbottles/pack.mcmeta (100%) rename {src => common/src}/main/resources/resourcepacks/nobrewingbottles/pack.png (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/dynamic-discs/models/item/dynamic_disc.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record_round.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc_colored_layers.json (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/pack.mcmeta (100%) rename {src => common/src}/main/resources/resourcepacks/rounddiscs/pack.png (100%) rename {src => common/src}/main/resources/visualoverhaul.mixins.json (67%) mode change 100755 => 100644 create mode 100644 fabric-like/build.gradle create mode 100644 fabric/build.gradle rename src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java => fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/VisualOverhaulClientFabric.java (78%) mode change 100755 => 100644 rename {src/main/java/eu/midnightdust/visualoverhaul => fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric}/mixin/MixinAbstractFurnaceBlockEntity.java (89%) rename {src/main/java/eu/midnightdust/visualoverhaul => fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric}/mixin/MixinBrewingStandBlockEntity.java (95%) rename {src/main/java/eu/midnightdust/visualoverhaul => fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric}/mixin/MixinJukeboxBlock.java (97%) rename {src => fabric/src}/main/resources/fabric.mod.json (75%) mode change 100755 => 100644 create mode 100644 fabric/src/main/resources/visualoverhaul-fabric.mixins.json create mode 100644 forge/build.gradle create mode 100644 forge/gradle.properties create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulForge.java create mode 100755 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinAbstractFurnaceBlockEntity.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBlockColors.java create mode 100755 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBrewingStandBlockEntity.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinItemColors.java create mode 100755 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinResourcePackManager.java create mode 100644 forge/src/main/resources/META-INF/mods.toml create mode 100644 forge/src/main/resources/icon.png create mode 100644 forge/src/main/resources/pack.mcmeta create mode 100644 forge/src/main/resources/visualoverhaul-forge.mixins.json mode change 100755 => 100644 gradle.properties mode change 100755 => 100644 gradle/wrapper/gradle-wrapper.jar mode change 100755 => 100644 gradle/wrapper/gradle-wrapper.properties mode change 100755 => 100644 gradlew.bat create mode 100644 quilt/build.gradle create mode 100644 quilt/gradle.properties create mode 100644 quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java create mode 100755 quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinAbstractFurnaceBlockEntity.java create mode 100755 quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinBrewingStandBlockEntity.java create mode 100755 quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java create mode 100644 quilt/src/main/resources/quilt.mod.json create mode 100644 quilt/src/main/resources/visualoverhaul-quilt.mixins.json mode change 100755 => 100644 settings.gradle delete mode 100755 src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index 823aca8..4f340a1 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,20 @@ -# gradle - -.gradle/ -out/ -classes/ build/ - -# idea - -.idea/ -*.iml *.ipr +run/ *.iws - -# vscode - -.settings/ -.vscode/ +out/ +*.iml +.gradle/ +output/ bin/ +libs/ +.architectury-transformer/ + .classpath .project - -# fabric - -run/ \ No newline at end of file +.idea/ +classes/ +.metadata +.vscode +.settings +*.launch \ No newline at end of file diff --git a/build.gradle b/build.gradle old mode 100755 new mode 100644 index 00e429d..c5d41c7 --- a/build.gradle +++ b/build.gradle @@ -1,83 +1,58 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' - id 'maven-publish' + id "architectury-plugin" version "3.4-SNAPSHOT" + id "dev.architectury.loom" version "1.0-SNAPSHOT" apply false } -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group +architectury { + injectInjectables = false + minecraft = rootProject.minecraft_version +} repositories { - maven { url "https://jitpack.io" } - maven { url "https://api.modrinth.com/maven" } + maven { + url = "https://api.modrinth.com/maven" + } } -dependencies { - //to change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" +subprojects { + apply plugin: "dev.architectury.loom" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + loom { + silentMojangMappingsLicense() + } - modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}" - include "maven.modrinth:midnightlib:${project.midnightlib_version}" + dependencies { + minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" + // The following line declares the mojmap mappings, you may use other mappings as well + //mappings loom.officialMojangMappings() + // The following line declares the yarn mappings you may select this one as well. + mappings "net.fabricmc:yarn:1.19.2+build.3:v2" + } } -processResources { - inputs.property "version", project.version +allprojects { + apply plugin: "java" + apply plugin: "architectury-plugin" + apply plugin: "maven-publish" - filesMatching("fabric.mod.json") { - expand "version": project.version - } -} - -tasks.withType(JavaCompile).configureEach { - // ensure that the encoding is set to UTF-8, no matter what the system default is - // this fixes some edge cases with special characters not displaying correctly - // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html - // If Javadoc is generated, this must be specified in that task too. - it.options.encoding = "UTF-8" - - // Minecraft 1.17 (21w19a) upwards uses Java 16. - it.options.release = 17 -} - -java { - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() -} - -jar { - from("LICENSE") { - rename { "${it}_${project.archivesBaseName}"} - } -} - -// configure the maven publication -publishing { - publications { - mavenJava(MavenPublication) { - // add all the jars that should be included when publishing to maven - artifact(remapJar) { - builtBy remapJar - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } - } - } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - // Notice: This block does NOT have the same function as the block in the top level. - // The repositories here will be used for publishing your artifact, not for - // retrieving dependencies. - } + archivesBaseName = rootProject.archives_base_name + version = rootProject.mod_version + group = rootProject.maven_group + + repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. + } + + tasks.withType(JavaCompile) { + options.encoding = "UTF-8" + options.release = 17 + } + + java { + withSourcesJar() + } } diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 0000000..64e9a53 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,34 @@ +architectury { + injectInjectables = false + common(rootProject.enabled_platforms.split(",")) +} + +loom { +} +repositories { + maven { url "https://api.modrinth.com/maven" } +} + +dependencies { + // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies + // Do NOT use other classes from fabric loader + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + modCompileOnlyApi "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric" + + // Remove the next line if you don't want to depend on the API + //modApi "dev.architectury:architectury:${rootProject.architectury_version}" +} + +publishing { + publications { + mavenCommon(MavenPublication) { + artifactId = rootProject.archives_base_name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaul.java b/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaul.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaul.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaul.java diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java b/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java new file mode 100755 index 0000000..b1695b6 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java @@ -0,0 +1,15 @@ +package eu.midnightdust.visualoverhaul; + +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.minecraft.block.Block; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; + +public class VisualOverhaulClient { + + public static Block JukeBoxTop; + + public static void onInitializeClient() { + VOConfig.init(MOD_ID, VOConfig.class); + } +} diff --git a/src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java similarity index 83% rename from src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java index 92fc360..aa498e3 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/block/JukeboxTop.java @@ -1,6 +1,6 @@ package eu.midnightdust.visualoverhaul.block; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -12,7 +12,7 @@ public class JukeboxTop extends Block { private static final BooleanProperty HAS_RECORD = Properties.HAS_RECORD; public JukeboxTop() { - super(FabricBlockSettings.copy(Blocks.JUKEBOX)); + super(AbstractBlock.Settings.copy(Blocks.JUKEBOX)); this.setDefaultState(this.stateManager.getDefaultState().with(HAS_RECORD,false)); } @Override diff --git a/src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java similarity index 92% rename from src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java index 4115f6a..d15c418 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/block/model/FurnaceWoodenPlanksModel.java @@ -7,9 +7,11 @@ import net.minecraft.client.render.entity.model.EntityModelLayer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; +import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; + public class FurnaceWoodenPlanksModel extends Model { private static ModelPart bb_main; - public static final EntityModelLayer WOODEN_PLANKS_MODEL_LAYER = new EntityModelLayer(new Identifier("visualoverhaul", "wooden_planks"), "main"); + public static final EntityModelLayer WOODEN_PLANKS_MODEL_LAYER = new EntityModelLayer(new Identifier(MOD_ID, "wooden_planks"), "main"); public FurnaceWoodenPlanksModel(ModelPart root) { super(RenderLayer::getEntitySolid); diff --git a/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/FurnaceBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/FurnaceBlockEntityRenderer.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/block/renderer/FurnaceBlockEntityRenderer.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/FurnaceBlockEntityRenderer.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java b/common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java similarity index 92% rename from src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java index 72fcc20..cd97a87 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/RadioJukeboxTop.java @@ -2,7 +2,6 @@ package eu.midnightdust.visualoverhaul.compat.phonos.block; //import io.github.foundationgames.phonos.block.PhonosBlocks; //import io.github.foundationgames.phonos.block.RadioJukeboxBlock; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.state.StateManager; diff --git a/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java b/common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java similarity index 89% rename from src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java index e2311e8..c070493 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/init/PhonosCompatInit.java @@ -2,7 +2,6 @@ package eu.midnightdust.visualoverhaul.compat.phonos.init; //import eu.midnightdust.visualoverhaul.compat.phonos.block.RadioJukeboxTop; //import io.github.foundationgames.phonos.block.PhonosBlocks; -import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl; import net.minecraft.block.Block; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; diff --git a/src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java b/common/src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java similarity index 92% rename from src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java index d14243c..f215287 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/config/VOConfig.java @@ -13,4 +13,5 @@ public class VOConfig extends MidnightConfig { @Client @Entry public static boolean coloredLilypad = true; @Client @Entry public static boolean potionEnchantmentGlint = true; @Client @Entry(name = "Debug") public static boolean debug = false; + @Client @Entry @Hidden public static boolean firstLaunch = true; } diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSmokerBlock.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSmokerBlock.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSmokerBlock.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSmokerBlock.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java similarity index 82% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java index d5cfb3a..8164d1c 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java @@ -21,7 +21,7 @@ public abstract class MixinSoundSystem { @Inject(at = @At("TAIL"),method = "play(Lnet/minecraft/client/sound/SoundInstance;)V") public void vo$onPlayRecordSound(SoundInstance soundInstance, CallbackInfo ci) { if (soundInstance.getCategory().equals(SoundCategory.RECORDS) && this.started) { - jukeboxPos = new BlockPos(soundInstance.getX(),soundInstance.getY(),soundInstance.getZ()); + jukeboxPos = new BlockPos(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); SoundTest.soundPos.put(jukeboxPos, soundInstance.getId()); } } @@ -30,7 +30,7 @@ public abstract class MixinSoundSystem { public void vo$onStopRecordSound(SoundInstance soundInstance, CallbackInfo ci) { if (soundInstance != null) { if (soundInstance.getCategory().equals(SoundCategory.RECORDS)) { - jukeboxPos = new BlockPos(soundInstance.getX(), soundInstance.getY(), soundInstance.getZ()); + jukeboxPos = new BlockPos(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); if (SoundTest.soundPos.containsKey(jukeboxPos)) { SoundTest.soundPos.remove(jukeboxPos, soundInstance.getId()); } diff --git a/src/main/java/eu/midnightdust/visualoverhaul/util/JukeboxPacketUpdate.java b/common/src/main/java/eu/midnightdust/visualoverhaul/util/JukeboxPacketUpdate.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/util/JukeboxPacketUpdate.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/util/JukeboxPacketUpdate.java diff --git a/src/main/java/eu/midnightdust/visualoverhaul/util/SoundTest.java b/common/src/main/java/eu/midnightdust/visualoverhaul/util/SoundTest.java similarity index 100% rename from src/main/java/eu/midnightdust/visualoverhaul/util/SoundTest.java rename to common/src/main/java/eu/midnightdust/visualoverhaul/util/SoundTest.java diff --git a/common/src/main/resources/architectury.common.json b/common/src/main/resources/architectury.common.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/common/src/main/resources/architectury.common.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/src/main/resources/assets/visualoverhaul/blockstates/jukebox_top.json b/common/src/main/resources/assets/visualoverhaul/blockstates/jukebox_top.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/blockstates/jukebox_top.json rename to common/src/main/resources/assets/visualoverhaul/blockstates/jukebox_top.json diff --git a/src/main/resources/assets/visualoverhaul/blockstates/radio_jukebox_top.json b/common/src/main/resources/assets/visualoverhaul/blockstates/radio_jukebox_top.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/blockstates/radio_jukebox_top.json rename to common/src/main/resources/assets/visualoverhaul/blockstates/radio_jukebox_top.json diff --git a/src/main/resources/assets/visualoverhaul/icon.png b/common/src/main/resources/assets/visualoverhaul/icon.png similarity index 100% rename from src/main/resources/assets/visualoverhaul/icon.png rename to common/src/main/resources/assets/visualoverhaul/icon.png diff --git a/src/main/resources/assets/visualoverhaul/lang/en_us.json b/common/src/main/resources/assets/visualoverhaul/lang/en_us.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/lang/en_us.json rename to common/src/main/resources/assets/visualoverhaul/lang/en_us.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_playing.json b/common/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_playing.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/jukebox_top_playing.json rename to common/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_playing.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_stopped.json b/common/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_stopped.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/jukebox_top_stopped.json rename to common/src/main/resources/assets/visualoverhaul/models/block/jukebox_top_stopped.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_0.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_0.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_0.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_0.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_1.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_1.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_1.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_1.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_10.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_10.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_10.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_10.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_11.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_11.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_11.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_11.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_12.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_12.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_12.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_12.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_13.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_13.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_13.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_13.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_14.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_14.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_14.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_14.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_15.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_15.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_15.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_15.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_16.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_16.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_16.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_16.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_17.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_17.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_17.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_17.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_18.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_18.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_18.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_18.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_19.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_19.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_19.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_19.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_2.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_2.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_2.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_2.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_3.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_3.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_3.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_3.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_4.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_4.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_4.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_4.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_5.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_5.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_5.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_5.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_6.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_6.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_6.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_6.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_7.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_7.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_7.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_7.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_8.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_8.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_8.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_8.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_9.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_9.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_9.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_playing_9.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_0.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_0.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_0.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_0.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_1.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_1.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_1.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_1.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_10.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_10.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_10.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_10.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_11.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_11.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_11.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_11.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_12.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_12.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_12.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_12.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_13.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_13.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_13.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_13.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_14.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_14.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_14.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_14.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_15.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_15.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_15.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_15.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_16.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_16.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_16.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_16.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_17.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_17.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_17.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_17.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_18.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_18.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_18.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_18.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_19.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_19.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_19.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_19.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_2.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_2.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_2.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_2.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_3.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_3.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_3.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_3.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_4.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_4.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_4.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_4.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_5.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_5.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_5.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_5.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_6.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_6.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_6.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_6.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_7.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_7.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_7.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_7.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_8.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_8.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_8.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_8.json diff --git a/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_9.json b/common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_9.json similarity index 100% rename from src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_9.json rename to common/src/main/resources/assets/visualoverhaul/models/block/phonos/jukebox_top_stopped_9.json diff --git a/src/main/resources/assets/visualoverhaul/textures/block/vo_jukebox_top.png b/common/src/main/resources/assets/visualoverhaul/textures/block/vo_jukebox_top.png similarity index 100% rename from src/main/resources/assets/visualoverhaul/textures/block/vo_jukebox_top.png rename to common/src/main/resources/assets/visualoverhaul/textures/block/vo_jukebox_top.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/axolotl_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/axolotl_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/axolotl_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/axolotl_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/cod_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/cod_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/cod_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/cod_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/pufferfish_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/pufferfish_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/pufferfish_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/pufferfish_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/salmon_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/salmon_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/salmon_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/salmon_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/tropical_fish_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/tropical_fish_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/tropical_fish_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/tropical_fish_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/water_bucket.json b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/water_bucket.json similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/water_bucket.json rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/models/item/water_bucket.json diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/axolotl_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/axolotl_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/axolotl_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/axolotl_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/fish_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/fish_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/fish_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/fish_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/pufferfish_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/pufferfish_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/pufferfish_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/pufferfish_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/salmon_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/salmon_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/salmon_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/salmon_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/sugar_canee.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/sugar_canee.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/sugar_canee.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/sugar_canee.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/tropical_fish_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/tropical_fish_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/tropical_fish_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/tropical_fish_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/water_bucket_overlay.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/water_bucket_overlay.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/water_bucket_overlay.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/assets/minecraft/textures/item/water_bucket_overlay.png diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/pack.mcmeta b/common/src/main/resources/resourcepacks/coloredwaterbucket/pack.mcmeta similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/pack.mcmeta rename to common/src/main/resources/resourcepacks/coloredwaterbucket/pack.mcmeta diff --git a/src/main/resources/resourcepacks/coloredwaterbucket/pack.png b/common/src/main/resources/resourcepacks/coloredwaterbucket/pack.png similarity index 100% rename from src/main/resources/resourcepacks/coloredwaterbucket/pack.png rename to common/src/main/resources/resourcepacks/coloredwaterbucket/pack.png diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/blast_furnace.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/blast_furnace.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/blast_furnace.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/blast_furnace.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/furnace.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/furnace.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/furnace.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/furnace.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/smoker.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/smoker.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/smoker.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/blockstates/smoker.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/materialmaps/block/furnace.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/materialmaps/block/furnace.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/materialmaps/block/furnace.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/materialmaps/block/furnace.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace_on.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace_on.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace_on.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/blast_furnace_on.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace_on.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace_on.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace_on.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/furnace_on.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker_on.json b/common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker_on.json similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker_on.json rename to common/src/main/resources/resourcepacks/fancyfurnace/assets/minecraft/models/block/smoker_on.json diff --git a/src/main/resources/resourcepacks/fancyfurnace/pack.mcmeta b/common/src/main/resources/resourcepacks/fancyfurnace/pack.mcmeta similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/pack.mcmeta rename to common/src/main/resources/resourcepacks/fancyfurnace/pack.mcmeta diff --git a/src/main/resources/resourcepacks/fancyfurnace/pack.png b/common/src/main/resources/resourcepacks/fancyfurnace/pack.png similarity index 100% rename from src/main/resources/resourcepacks/fancyfurnace/pack.png rename to common/src/main/resources/resourcepacks/fancyfurnace/pack.png diff --git a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json similarity index 73% rename from src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json rename to common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json index ef34a97..a8d4d93 100644 --- a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json +++ b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle0.json @@ -14,11 +14,11 @@ } }, { - "from": [11, 9, 8], + "from": [11, 8, 8], "to": [16, 16, 8], "faces": { - "north": {"uv": [0, 0, 5, 7], "texture": "#stand"}, - "south": {"uv": [5, 0, 0, 7], "texture": "#stand"} + "north": {"uv": [0, 0, 5, 8], "texture": "#stand"}, + "south": {"uv": [5, 0, 0, 8], "texture": "#stand"} } } ] diff --git a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json similarity index 78% rename from src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json rename to common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json index e758e6d..2747636 100644 --- a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json +++ b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle1.json @@ -15,12 +15,12 @@ } }, { - "from": [-0.41, 9, 8], + "from": [-0.41, 8, 8], "to": [4.59, 16, 8], "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [5, 0, 0, 7], "texture": "#stand"}, - "south": {"uv": [0, 0, 5, 7], "texture": "#stand"} + "north": {"uv": [5, 0, 0, 8], "texture": "#stand"}, + "south": {"uv": [0, 0, 5, 8], "texture": "#stand"} } } ] diff --git a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json similarity index 78% rename from src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json rename to common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json index f10c250..99a8497 100644 --- a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json +++ b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/models/block/brewing_stand_bottle2.json @@ -15,12 +15,12 @@ } }, { - "from": [-0.41, 9, 8], + "from": [-0.41, 8, 8], "to": [4.59, 16, 8], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [5, 0, 0, 7], "texture": "#stand"}, - "south": {"uv": [0, 0, 5, 7], "texture": "#stand"} + "north": {"uv": [5, 0, 0, 8], "texture": "#stand"}, + "south": {"uv": [0, 0, 5, 8], "texture": "#stand"} } } ] diff --git a/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png new file mode 100755 index 0000000000000000000000000000000000000000..eae21c8f8e392de46ef5cd65c33ee23a37066c0d GIT binary patch literal 5502 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 BRhj?* literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/nobrewingbottles/pack.mcmeta b/common/src/main/resources/resourcepacks/nobrewingbottles/pack.mcmeta similarity index 100% rename from src/main/resources/resourcepacks/nobrewingbottles/pack.mcmeta rename to common/src/main/resources/resourcepacks/nobrewingbottles/pack.mcmeta diff --git a/src/main/resources/resourcepacks/nobrewingbottles/pack.png b/common/src/main/resources/resourcepacks/nobrewingbottles/pack.png similarity index 100% rename from src/main/resources/resourcepacks/nobrewingbottles/pack.png rename to common/src/main/resources/resourcepacks/nobrewingbottles/pack.png diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/button_mushrooms_music_disk_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/ghost_town_music_disk_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/biomemakeover/models/item/swamp_jives_music_disk_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/desolation/models/item/music_disc_ashes_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/dynamic-discs/models/item/dynamic_disc.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/dynamic-discs/models/item/dynamic_disc.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/dynamic-discs/models/item/dynamic_disc.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/dynamic-discs/models/item/dynamic_disc.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_0x10c_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_cliffside_hinson_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_i_jate_my_hob_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_peanuts_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_repetition_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/extra_discs/models/item/music_disc_sometimes_i_make_video_game_music_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_11_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_13_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_5_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_blocks_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_cat_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_chirp_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_far_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mall_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_mellohi_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_otherside_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_pigstep_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_stal_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_strad_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_wait_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/minecraft/models/item/music_disc_ward_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/phonos/models/item/custom_music_disc_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record_round.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record_round.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record_round.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/recordable/models/item/copper_record_round.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc.json diff --git a/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc_colored_layers.json b/common/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc_colored_layers.json similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc_colored_layers.json rename to common/src/main/resources/resourcepacks/rounddiscs/assets/visualoverhaul/models/item/round_disc_colored_layers.json diff --git a/src/main/resources/resourcepacks/rounddiscs/pack.mcmeta b/common/src/main/resources/resourcepacks/rounddiscs/pack.mcmeta similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/pack.mcmeta rename to common/src/main/resources/resourcepacks/rounddiscs/pack.mcmeta diff --git a/src/main/resources/resourcepacks/rounddiscs/pack.png b/common/src/main/resources/resourcepacks/rounddiscs/pack.png similarity index 100% rename from src/main/resources/resourcepacks/rounddiscs/pack.png rename to common/src/main/resources/resourcepacks/rounddiscs/pack.png diff --git a/src/main/resources/visualoverhaul.mixins.json b/common/src/main/resources/visualoverhaul.mixins.json old mode 100755 new mode 100644 similarity index 67% rename from src/main/resources/visualoverhaul.mixins.json rename to common/src/main/resources/visualoverhaul.mixins.json index 747a50f..95bf771 --- a/src/main/resources/visualoverhaul.mixins.json +++ b/common/src/main/resources/visualoverhaul.mixins.json @@ -1,11 +1,9 @@ { "required": true, "package": "eu.midnightdust.visualoverhaul.mixin", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", "mixins": [ - "MixinAbstractFurnaceBlockEntity", - "MixinBrewingStandBlockEntity", - "MixinJukeboxBlock", "MixinJukeboxBlockEntity" ], "client": [ diff --git a/fabric-like/build.gradle b/fabric-like/build.gradle new file mode 100644 index 0000000..5f1e660 --- /dev/null +++ b/fabric-like/build.gradle @@ -0,0 +1,16 @@ +architectury { + injectInjectables = false + common(rootProject.enabled_platforms.split(",")) +} + +loom { +} + +dependencies { + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + // Remove the next line if you don't want to depend on the API + //modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" + + compileClasspath(project(path: ":common", configuration: "namedElements")) { transitive false } +} diff --git a/fabric/build.gradle b/fabric/build.gradle new file mode 100644 index 0000000..2a59bb9 --- /dev/null +++ b/fabric/build.gradle @@ -0,0 +1,89 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" +} + +architectury { + injectInjectables = false + platformSetupLoomIde() + fabric() +} + +loom { +} +repositories { + maven { url "https://api.modrinth.com/maven" } +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common + archivesBaseName = rootProject.archives_base_name + "-fabric" +} + +dependencies { + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + // Remove the next line if you don't want to depend on the API + //modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" + modImplementation "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric" + include "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric" + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } + common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":fabric-like", configuration: "transformProductionFabric")) { transitive false } +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +shadowJar { + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + classifier "dev-shadow" +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar + classifier null +} + +jar { + classifier "dev" +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenFabric(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/VisualOverhaulClientFabric.java old mode 100755 new mode 100644 similarity index 78% rename from src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java rename to fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/VisualOverhaulClientFabric.java index d823506..ca37a66 --- a/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/VisualOverhaulClientFabric.java @@ -1,30 +1,29 @@ -package eu.midnightdust.visualoverhaul; +package eu.midnightdust.visualoverhaul.fabric; -import eu.midnightdust.visualoverhaul.block.JukeboxTop; +import eu.midnightdust.visualoverhaul.VisualOverhaulClient; import eu.midnightdust.visualoverhaul.block.model.FurnaceWoodenPlanksModel; import eu.midnightdust.visualoverhaul.block.renderer.BrewingStandBlockEntityRenderer; import eu.midnightdust.visualoverhaul.block.renderer.FurnaceBlockEntityRenderer; import eu.midnightdust.visualoverhaul.block.renderer.JukeboxBlockEntityRenderer; import eu.midnightdust.visualoverhaul.config.VOConfig; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; -import net.fabricmc.fabric.api.item.v1.FabricItemSettings; -import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; -import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl; -import net.fabricmc.fabric.impl.client.rendering.BlockEntityRendererRegistryImpl; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.block.Block; import net.minecraft.block.Blocks; -import net.minecraft.block.entity.*; -import net.minecraft.client.MinecraftClient; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.BrewingStandBlockEntity; +import net.minecraft.block.entity.JukeboxBlockEntity; import net.minecraft.client.color.world.BiomeColors; -import net.minecraft.client.render.*; -import net.minecraft.item.Item; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.client.render.RenderLayer; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.MusicDiscItem; @@ -36,34 +35,28 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; import static eu.midnightdust.visualoverhaul.VisualOverhaul.*; +import static eu.midnightdust.visualoverhaul.VisualOverhaulClient.JukeBoxTop; -public class VisualOverhaulClient implements ClientModInitializer { - - public static Block JukeBoxTop = new JukeboxTop(); - public static Item RoundDiscDummy = new Item(new FabricItemSettings()); - private final MinecraftClient client = MinecraftClient.getInstance(); - +public class VisualOverhaulClientFabric implements ClientModInitializer { @Override public void onInitializeClient() { - VOConfig.init("visualoverhaul", VOConfig.class); - + VisualOverhaulClient.onInitializeClient(); // Block only registered on client, because it's just used for the renderer // - Registry.register(Registry.BLOCK, new Identifier("visualoverhaul","jukebox_top"), JukeBoxTop); - Registry.register(Registry.ITEM, new Identifier("visualoverhaul","round_disc"), RoundDiscDummy); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"jukebox_top"), JukeBoxTop); + EntityModelLayerRegistry.registerModelLayer(FurnaceWoodenPlanksModel.WOODEN_PLANKS_MODEL_LAYER, FurnaceWoodenPlanksModel::getTexturedModelData); + BlockRenderLayerMap.INSTANCE.putBlock(Blocks.JUKEBOX, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(JukeBoxTop, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(Blocks.FURNACE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(Blocks.SMOKER, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(Blocks.BLAST_FURNACE, RenderLayer.getCutout()); - BlockRenderLayerMapImpl.INSTANCE.putBlock(Blocks.JUKEBOX, RenderLayer.getCutout()); - BlockRenderLayerMapImpl.INSTANCE.putBlock(JukeBoxTop, RenderLayer.getCutout()); - BlockRenderLayerMapImpl.INSTANCE.putBlock(Blocks.FURNACE, RenderLayer.getCutout()); - BlockRenderLayerMapImpl.INSTANCE.putBlock(Blocks.SMOKER, RenderLayer.getCutout()); - BlockRenderLayerMapImpl.INSTANCE.putBlock(Blocks.BLAST_FURNACE, RenderLayer.getCutout()); - - BlockEntityRendererRegistryImpl.register(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); - BlockEntityRendererRegistryImpl.register(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); - BlockEntityRendererRegistryImpl.register(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); - BlockEntityRendererRegistryImpl.register(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); - BlockEntityRendererRegistryImpl.register(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); // // Phonos Compat // // if (FabricLoader.getInstance().isModLoaded("phonos")) { @@ -73,7 +66,7 @@ public class VisualOverhaulClient implements ClientModInitializer { Registry.ITEM.forEach((item) -> { if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) { - FabricModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); + ModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); } }); @@ -122,10 +115,10 @@ public class VisualOverhaulClient implements ClientModInitializer { // Register builtin resourcepacks FabricLoader.getInstance().getModContainer("visualoverhaul").ifPresent(modContainer -> { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("visualoverhaul","nobrewingbottles"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("visualoverhaul","fancyfurnace"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("visualoverhaul","coloredwaterbucket"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("visualoverhaul","rounddiscs"), modContainer, ResourcePackActivationType.ALWAYS_ENABLED); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID,"nobrewingbottles"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID,"fancyfurnace"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID,"coloredwaterbucket"), modContainer, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID,"rounddiscs"), modContainer, ResourcePackActivationType.ALWAYS_ENABLED); }); diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinAbstractFurnaceBlockEntity.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinAbstractFurnaceBlockEntity.java similarity index 89% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinAbstractFurnaceBlockEntity.java rename to fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinAbstractFurnaceBlockEntity.java index b4b4537..16d17de 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinAbstractFurnaceBlockEntity.java +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinAbstractFurnaceBlockEntity.java @@ -1,11 +1,13 @@ -package eu.midnightdust.visualoverhaul.mixin; +package eu.midnightdust.visualoverhaul.fabric.mixin; import eu.midnightdust.visualoverhaul.VisualOverhaul; import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.BlockState; -import net.minecraft.block.entity.*; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.LockableContainerBlockEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.server.network.ServerPlayerEntity; @@ -48,7 +50,7 @@ public abstract class MixinAbstractFurnaceBlockEntity extends LockableContainerB } } - @Inject(at = @At("RETURN"), method = "getStack", cancellable = true) + @Inject(at = @At("RETURN"), method = "getStack") public void getStack(int slot, CallbackInfoReturnable cir) { invUpdate = true; } diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBrewingStandBlockEntity.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinBrewingStandBlockEntity.java similarity index 95% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBrewingStandBlockEntity.java rename to fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinBrewingStandBlockEntity.java index be84d2d..25185a4 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBrewingStandBlockEntity.java +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinBrewingStandBlockEntity.java @@ -1,4 +1,4 @@ -package eu.midnightdust.visualoverhaul.mixin; +package eu.midnightdust.visualoverhaul.fabric.mixin; import eu.midnightdust.visualoverhaul.VisualOverhaul; import io.netty.buffer.Unpooled; @@ -49,7 +49,7 @@ public abstract class MixinBrewingStandBlockEntity extends LockableContainerBloc playerUpdate = world.getPlayers().size(); } - @Inject(at = @At("RETURN"), method = "getStack", cancellable = true) + @Inject(at = @At("RETURN"), method = "getStack") public void getStack(int slot, CallbackInfoReturnable cir) { invUpdate = true; } diff --git a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlock.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java similarity index 97% rename from src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlock.java rename to fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java index 7a87b10..cc6e785 100755 --- a/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlock.java +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java @@ -1,4 +1,4 @@ -package eu.midnightdust.visualoverhaul.mixin; +package eu.midnightdust.visualoverhaul.fabric.mixin; import eu.midnightdust.visualoverhaul.VisualOverhaul; import eu.midnightdust.visualoverhaul.util.JukeboxPacketUpdate; diff --git a/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json old mode 100755 new mode 100644 similarity index 75% rename from src/main/resources/fabric.mod.json rename to fabric/src/main/resources/fabric.mod.json index 9dc445b..c8abdef --- a/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -21,16 +21,17 @@ "environment": "*", "entrypoints": { "client": [ - "eu.midnightdust.visualoverhaul.VisualOverhaulClient" + "eu.midnightdust.visualoverhaul.fabric.VisualOverhaulClientFabric" ] }, - "mixins": [ - "visualoverhaul.mixins.json" - ], - "depends": { - "fabric": ">=0.28.4", - "minecraft": ">=1.18" - } -} + "fabric": "*", + "minecraft": ">=1.19" + }, + + "mixins": [ + "visualoverhaul.mixins.json", + "visualoverhaul-fabric.mixins.json" + ] +} \ No newline at end of file diff --git a/fabric/src/main/resources/visualoverhaul-fabric.mixins.json b/fabric/src/main/resources/visualoverhaul-fabric.mixins.json new file mode 100644 index 0000000..ce67398 --- /dev/null +++ b/fabric/src/main/resources/visualoverhaul-fabric.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "package": "eu.midnightdust.visualoverhaul.fabric.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "mixins": [ + "MixinJukeboxBlock", + "MixinAbstractFurnaceBlockEntity", + "MixinBrewingStandBlockEntity" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/forge/build.gradle b/forge/build.gradle new file mode 100644 index 0000000..886aa16 --- /dev/null +++ b/forge/build.gradle @@ -0,0 +1,91 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" +} + +architectury { + injectInjectables = false + platformSetupLoomIde() + forge() +} + +loom { + forge { + mixinConfig "visualoverhaul.mixins.json" + mixinConfig "visualoverhaul-forge.mixins.json" + } +} +repositories { + maven { url "https://api.modrinth.com/maven" } +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common + archivesBaseName = rootProject.archives_base_name + "-forge" +} + +dependencies { + forge "net.minecraftforge:forge:${rootProject.forge_version}" + // Remove the next line if you don't want to depend on the API + modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}" + modImplementation "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-forge" + include "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-forge" + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } +} + +processResources { + inputs.property "version", project.version + + filesMatching("META-INF/mods.toml") { + expand "version": project.version + } +} + +shadowJar { + exclude "fabric.mod.json" + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + classifier "dev-shadow" +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar + classifier null +} + +jar { + classifier "dev" +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenForge(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/forge/gradle.properties b/forge/gradle.properties new file mode 100644 index 0000000..32f842a --- /dev/null +++ b/forge/gradle.properties @@ -0,0 +1 @@ +loom.platform=forge \ No newline at end of file diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java new file mode 100644 index 0000000..fa905b2 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java @@ -0,0 +1,78 @@ +package eu.midnightdust.visualoverhaul.forge; + +import eu.midnightdust.visualoverhaul.block.model.FurnaceWoodenPlanksModel; +import eu.midnightdust.visualoverhaul.block.renderer.BrewingStandBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.block.renderer.FurnaceBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.block.renderer.JukeboxBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.color.world.BiomeColors; +import net.minecraft.resource.*; +import net.minecraft.resource.metadata.PackResourceMetadata; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.event.AddPackFindersEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.forgespi.locating.IModFile; +import net.minecraftforge.resource.PathPackResources; + +import java.io.IOException; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; + +@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class VisualOverhaulClientEvents { + @SubscribeEvent + public void registerClientTick(TickEvent.ClientTickEvent event) { + if (VOConfig.coloredItems) { + MinecraftClient client = VisualOverhaulClientForge.client; + if (client.world != null && client.player != null) { + VisualOverhaulClientForge.waterColor = BiomeColors.getWaterColor(client.world, client.player.getBlockPos()); + VisualOverhaulClientForge.foliageColor = BiomeColors.getFoliageColor(client.world, client.player.getBlockPos()); + VisualOverhaulClientForge.grassColor = BiomeColors.getGrassColor(client.world, client.player.getBlockPos()); + } else { + VisualOverhaulClientForge.waterColor = 4159204; + VisualOverhaulClientForge.foliageColor = -8934609; + VisualOverhaulClientForge.grassColor = -8934609; + } + } + } + @SubscribeEvent + public static void registerLayerDefinition(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(FurnaceWoodenPlanksModel.WOODEN_PLANKS_MODEL_LAYER, FurnaceWoodenPlanksModel::getTexturedModelData); + } + + @SubscribeEvent + public static void registerBlockEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + event.registerBlockEntityRenderer(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); + event.registerBlockEntityRenderer(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); + event.registerBlockEntityRenderer(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); + event.registerBlockEntityRenderer(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); + event.registerBlockEntityRenderer(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); + } + @SubscribeEvent + public static void addPackFinders(AddPackFindersEvent event) { + if (event.getPackType() == ResourceType.CLIENT_RESOURCES) { + registerResourcePack(event, new Identifier(MOD_ID,"nobrewingbottles"), false, true); + registerResourcePack(event, new Identifier(MOD_ID,"fancyfurnace"), false, true); + registerResourcePack(event, new Identifier(MOD_ID,"coloredwaterbucket"), false, true); + registerResourcePack(event, new Identifier(MOD_ID,"rounddiscs"), true, false); + } + } + private static void registerResourcePack(AddPackFindersEvent event, Identifier id, boolean alwaysEnabled, boolean defaultEnabled) { + event.addRepositorySource(((profileAdder, factory) -> { + IModFile file = ModList.get().getModFileById(id.getNamespace()).getFile(); + try (PathPackResources pack = new PathPackResources(id.toString(), file.findResource("resourcepacks/" +id.getPath()))) { + ResourcePackProfile packProfile = new ResourcePackProfile(id.toString(), alwaysEnabled, () -> pack, Text.of(id.getNamespace()+"/"+id.getPath()), pack.parseMetadata(PackResourceMetadata.READER).getDescription().copy().append(" §7(built-in)"), ResourcePackCompatibility.COMPATIBLE, ResourcePackProfile.InsertionPosition.TOP, false, ResourcePackSource.PACK_SOURCE_BUILTIN, false); + profileAdder.accept(packProfile); + if (defaultEnabled && !alwaysEnabled) VisualOverhaulClientForge.defaultEnabledPacks.add(packProfile); + } catch (IOException | NullPointerException e) {e.printStackTrace();} + })); + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java new file mode 100644 index 0000000..7789a68 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java @@ -0,0 +1,111 @@ +package eu.midnightdust.visualoverhaul.forge; + +import dev.architectury.networking.NetworkManager; +import eu.midnightdust.lib.config.MidnightConfig; +import eu.midnightdust.visualoverhaul.VisualOverhaulClient; +import eu.midnightdust.visualoverhaul.block.JukeboxTop; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BrewingStandBlockEntity; +import net.minecraft.block.entity.JukeboxBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.RenderLayers; +import net.minecraft.item.ItemStack; +import net.minecraft.item.MusicDiscItem; +import net.minecraft.resource.ResourcePackProfile; +import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.ConfigScreenHandler; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.IExtensionPoint; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.network.NetworkConstants; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import org.apache.commons.compress.utils.Lists; + +import java.util.List; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.*; + +//@SuppressWarnings("all") +public class VisualOverhaulClientForge { + public static List defaultEnabledPacks = Lists.newArrayList(); + public static MinecraftClient client = MinecraftClient.getInstance(); + private static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MOD_ID); + public static int waterColor = 4159204; + public static int foliageColor = -8934609; + public static int grassColor = -8934609; + + public static void initClient() { + VisualOverhaulClient.onInitializeClient(); + // Block only registered on client, because it's just used for the renderer // + BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); + BLOCKS.register("jukebox_top", () -> { + VisualOverhaulClient.JukeBoxTop = new JukeboxTop(); + return VisualOverhaulClient.JukeBoxTop; + }); + + ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (remote, server) -> true)); + ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> + new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, MOD_ID))); + MinecraftForge.EVENT_BUS.register(new VisualOverhaulClientEvents()); + ForgeRegistries.ITEMS.forEach((item) -> { + if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) { + ModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); + } + }); + + NetworkManager.registerReceiver(NetworkManager.Side.S2C, UPDATE_POTION_BOTTLES, + (attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + DefaultedList inv = DefaultedList.ofSize(5, ItemStack.EMPTY); + for (int i = 0; i < 4; i++) { + inv.set(i, attachedData.readItemStack()); + } + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof BrewingStandBlockEntity blockEntity) { + blockEntity.setStack(0, inv.get(0)); + blockEntity.setStack(1, inv.get(1)); + blockEntity.setStack(2, inv.get(2)); + blockEntity.setStack(3, inv.get(3)); + blockEntity.setStack(4, inv.get(4)); + } + }); + }); + NetworkManager.registerReceiver(NetworkManager.Side.S2C, UPDATE_RECORD, + (attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + ItemStack record = attachedData.readItemStack(); + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) { + blockEntity.setRecord(record); + } + }); + }); + NetworkManager.registerReceiver(NetworkManager.Side.S2C, UPDATE_FURNACE_ITEMS, + (attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + DefaultedList inv = DefaultedList.ofSize(3, ItemStack.EMPTY); + for (int i = 0; i < 2; i++) { + inv.set(i, attachedData.readItemStack()); + } + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof AbstractFurnaceBlockEntity blockEntity) { + blockEntity.setStack(0, inv.get(0)); + blockEntity.setStack(1, inv.get(1)); + blockEntity.setStack(2, inv.get(2)); + } + }); + }); + RenderLayers.setRenderLayer(Blocks.JUKEBOX, RenderLayer.getCutout()); + RenderLayers.setRenderLayer(Blocks.FURNACE, RenderLayer.getCutout()); + RenderLayers.setRenderLayer(Blocks.SMOKER, RenderLayer.getCutout()); + RenderLayers.setRenderLayer(Blocks.BLAST_FURNACE, RenderLayer.getCutout()); + } +} \ No newline at end of file diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulForge.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulForge.java new file mode 100644 index 0000000..549f0b0 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulForge.java @@ -0,0 +1,15 @@ +package eu.midnightdust.visualoverhaul.forge; + +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.common.Mod; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; + +@Mod(MOD_ID) +public class VisualOverhaulForge { + + public VisualOverhaulForge() { + DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> VisualOverhaulClientForge::initClient); + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinAbstractFurnaceBlockEntity.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinAbstractFurnaceBlockEntity.java new file mode 100755 index 0000000..a3cb017 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinAbstractFurnaceBlockEntity.java @@ -0,0 +1,58 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import dev.architectury.networking.NetworkManager; +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerChunkManager; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.stream.Stream; + +@Mixin(AbstractFurnaceBlockEntity.class) +public abstract class MixinAbstractFurnaceBlockEntity extends LockableContainerBlockEntity { + + private static boolean invUpdate = true; + private static int playerUpdate = -1; + + + protected MixinAbstractFurnaceBlockEntity(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { + super(blockEntityType, blockPos, blockState); + } + + @Inject(at = @At("TAIL"), method = "tick") + private static void tick(World world, BlockPos pos, BlockState state, AbstractFurnaceBlockEntity blockEntity, CallbackInfo ci) { + if (world.getBlockState(pos).hasBlockEntity()) { + if (!world.isClient && (invUpdate || world.getPlayers().size() == playerUpdate)) { + Stream watchingPlayers = ((ServerChunkManager)world.getChunkManager()).threadedAnvilChunkStorage.getPlayersWatchingChunk(new ChunkPos(pos), false).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getStack(0)); + passedData.writeItemStack(blockEntity.getStack(1)); + passedData.writeItemStack(blockEntity.getStack(2)); + + watchingPlayers.forEach(player -> NetworkManager.sendToPlayer(player, VisualOverhaul.UPDATE_FURNACE_ITEMS, passedData)); + invUpdate = false; + } + playerUpdate = world.getPlayers().size(); + } + } + + @Inject(at = @At("RETURN"), method = "getStack") + public void getStack(int slot, CallbackInfoReturnable cir) { + invUpdate = true; + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBlockColors.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBlockColors.java new file mode 100644 index 0000000..b32c563 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBlockColors.java @@ -0,0 +1,18 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.minecraft.block.Blocks; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.world.BiomeColors; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BlockColors.class) +public abstract class MixinBlockColors { + @Inject(method = "create", at = @At("RETURN")) + private static void create(CallbackInfoReturnable info) { + if (VOConfig.coloredItems) info.getReturnValue().registerColorProvider((state, world, pos, tintIndex) -> world != null ? world.getColor(pos, BiomeColors.FOLIAGE_COLOR) : 0, Blocks.LILY_PAD); + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBrewingStandBlockEntity.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBrewingStandBlockEntity.java new file mode 100755 index 0000000..6326c5a --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinBrewingStandBlockEntity.java @@ -0,0 +1,57 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import dev.architectury.networking.NetworkManager; +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.BrewingStandBlockEntity; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerChunkManager; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.stream.Stream; + +@Mixin(BrewingStandBlockEntity.class) +public abstract class MixinBrewingStandBlockEntity extends LockableContainerBlockEntity { + + private static boolean invUpdate = true; + private static int playerUpdate = -1; + + protected MixinBrewingStandBlockEntity(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { + super(blockEntityType, blockPos, blockState); + } + + @Inject(at = @At("TAIL"), method = "tick") + private static void tick(World world, BlockPos pos, BlockState state, BrewingStandBlockEntity blockEntity, CallbackInfo ci) { + if (!world.isClient && (invUpdate || world.getPlayers().size() == playerUpdate)) { + Stream watchingPlayers = ((ServerChunkManager)world.getChunkManager()).threadedAnvilChunkStorage.getPlayersWatchingChunk(new ChunkPos(pos), false).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getStack(0)); + passedData.writeItemStack(blockEntity.getStack(1)); + passedData.writeItemStack(blockEntity.getStack(2)); + passedData.writeItemStack(blockEntity.getStack(3)); + passedData.writeItemStack(blockEntity.getStack(4)); + + watchingPlayers.forEach(player -> NetworkManager.sendToPlayer(player, VisualOverhaul.UPDATE_POTION_BOTTLES, passedData)); + invUpdate = false; + } + playerUpdate = world.getPlayers().size(); + } + + @Inject(at = @At("RETURN"), method = "getStack") + public void getStack(int slot, CallbackInfoReturnable cir) { + invUpdate = true; + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinItemColors.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinItemColors.java new file mode 100644 index 0000000..dc38e5f --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinItemColors.java @@ -0,0 +1,62 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.item.ItemColors; +import net.minecraft.item.Items; +import net.minecraft.potion.PotionUtil; +import net.minecraft.potion.Potions; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import static eu.midnightdust.visualoverhaul.forge.VisualOverhaulClientForge.grassColor; +import static eu.midnightdust.visualoverhaul.forge.VisualOverhaulClientForge.foliageColor; +import static eu.midnightdust.visualoverhaul.forge.VisualOverhaulClientForge.waterColor; + +@Mixin(ItemColors.class) +public abstract class MixinItemColors { + @Inject(method = "create", at = @At("RETURN")) + private static void create(BlockColors blockMap, CallbackInfoReturnable info) { + if (VOConfig.coloredItems) { + ItemColors itemColors = info.getReturnValue(); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.WATER_BUCKET); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.AXOLOTL_BUCKET); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.COD_BUCKET); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.PUFFERFISH_BUCKET); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.TROPICAL_FISH_BUCKET); + itemColors.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.SALMON_BUCKET); + itemColors.register((stack, tintIndex) -> grassColor, Items.GRASS_BLOCK); + itemColors.register((stack, tintIndex) -> grassColor, Items.GRASS); + itemColors.register((stack, tintIndex) -> grassColor, Items.TALL_GRASS); + itemColors.register((stack, tintIndex) -> grassColor, Items.FERN); + itemColors.register((stack, tintIndex) -> grassColor, Items.LARGE_FERN); + itemColors.register((stack, tintIndex) -> foliageColor, Items.ACACIA_LEAVES); + itemColors.register((stack, tintIndex) -> foliageColor, Items.DARK_OAK_LEAVES); + itemColors.register((stack, tintIndex) -> foliageColor, Items.JUNGLE_LEAVES); + itemColors.register((stack, tintIndex) -> foliageColor, Items.OAK_LEAVES); + itemColors.register((stack, tintIndex) -> foliageColor, Items.VINE); + itemColors.register((stack, tintIndex) -> foliageColor, Items.SUGAR_CANE); + if (VOConfig.coloredLilypad) itemColors.register((stack, tintIndex) -> foliageColor, Items.LILY_PAD); + itemColors.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.POTION); + itemColors.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.SPLASH_POTION); + itemColors.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.LINGERING_POTION); + } + } +} diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java new file mode 100755 index 0000000..9ccc2f0 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java @@ -0,0 +1,57 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import dev.architectury.networking.NetworkManager; +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import eu.midnightdust.visualoverhaul.util.JukeboxPacketUpdate; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.JukeboxBlock; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.JukeboxBlockEntity; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerChunkManager; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +import java.util.stream.Stream; + +@Mixin(JukeboxBlock.class) +public abstract class MixinJukeboxBlock extends BlockWithEntity { + + protected MixinJukeboxBlock(Settings settings) { + super(settings); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Nullable + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + return world.isClient() ? null : checkType(type, BlockEntityType.JUKEBOX, MixinJukeboxBlock::tick); + } + @Unique + private static void tick(World world, BlockPos pos, BlockState state, JukeboxBlockEntity blockEntity) { + if (!world.isClient && (JukeboxPacketUpdate.invUpdate || world.getPlayers().size() == JukeboxPacketUpdate.playerUpdate)) { + Stream watchingPlayers = ((ServerChunkManager)world.getChunkManager()).threadedAnvilChunkStorage.getPlayersWatchingChunk(new ChunkPos(pos), false).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getRecord()); + + watchingPlayers.forEach(player -> NetworkManager.sendToPlayer(player, VisualOverhaul.UPDATE_RECORD, passedData)); + JukeboxPacketUpdate.invUpdate = false; + } + JukeboxPacketUpdate.playerUpdate = world.getPlayers().size(); + } +} + diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinResourcePackManager.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinResourcePackManager.java new file mode 100644 index 0000000..8b14d62 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinResourcePackManager.java @@ -0,0 +1,33 @@ +package eu.midnightdust.visualoverhaul.forge.mixin; + +import eu.midnightdust.visualoverhaul.config.VOConfig; +import eu.midnightdust.visualoverhaul.forge.VisualOverhaulClientForge; +import net.minecraft.resource.ResourcePackManager; +import net.minecraft.resource.ResourcePackProfile; +import org.apache.commons.compress.utils.Lists; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; + +@Mixin(ResourcePackManager.class) +public abstract class MixinResourcePackManager { + @Shadow private List enabled; + + @Inject(method = "Lnet/minecraft/resource/ResourcePackManager;setEnabledProfiles(Ljava/util/Collection;)V", at = @At("TAIL")) + private void setDefaultEnabledPacks(CallbackInfo info) { + if (VOConfig.firstLaunch) { + List enabledPacks = Lists.newArrayList(); + enabledPacks.addAll(enabled); + enabledPacks.addAll(VisualOverhaulClientForge.defaultEnabledPacks); + this.enabled = enabledPacks; + VOConfig.firstLaunch = false; + VOConfig.write(MOD_ID); + } + } +} diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..71ac934 --- /dev/null +++ b/forge/src/main/resources/META-INF/mods.toml @@ -0,0 +1,42 @@ +modLoader = "javafml" +loaderVersion = "[43,)" +#issueTrackerURL = "" +license = "MIT License" + +[[mods]] +modId = "visualoverhaul" +version = "${version}" +displayName = "VisualOverhaul" +authors = "Motschen, TeamMidnightDust" +description = ''' +Adds better visuals for certain Minecraft Vanilla Blocks. +''' +logoFile = "icon.png" + +[[dependencies.visualoverhaul]] +modId = "forge" +mandatory = true +versionRange = "[43,)" +ordering = "NONE" +side = "CLIENT" + +[[dependencies.visualoverhaul]] +modId = "minecraft" +mandatory = true +versionRange = "[1.19.2,)" +ordering = "NONE" +side = "CLIENT" + +[[dependencies.visualoverhaul]] +modId = "midnightlib" +mandatory = true +versionRange = "[1.0.0,)" +ordering = "BEFORE" +side = "CLIENT" + +[[dependencies.visualoverhaul]] +modId = "architectury" +mandatory = true +versionRange = "[6.0.0,)" +ordering = "BEFORE" +side = "BOTH" \ No newline at end of file diff --git a/forge/src/main/resources/icon.png b/forge/src/main/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6351cbf0056d8c5cffb8f9750cb359935d293359 GIT binary patch literal 6314 zcmX9?cRW@9|9{`X9oEIQ_uhMkxUQLbmCVYG2+4?K6o-nC2$fACq>!EHT9u6ONg0vb zBFZQ;#P|69&f}cddA(on*LXf(ulM8pagr!@7A$yvJOF^@h^6UK_zfLASQISR=(qpE zFZ5YsTVnv8rZMfFW`Ng-(4!V)Q2kbL9$w&rEnPzaVC_115L~iW5CF(86dOk~i(nf8 z6P)~cR{3+RuoN)Gi8>tAk#J?^|35pd!xwDl)x*N_!0jBXN(3A11}m`SCm(G6f0Ud* zivStNPd-?}yBb&7ITRRq4`E#$wIl?l!%d<4&B6xg5}UWroiK3a*`yd`eOPeZC}C^7oG+``aV8EWM&83% zo6ViraVS>q5WfagPr9b+QMGN?omU^*Cf zB$FVTMFOn`5#S~WnBjyh@zS0wiXkw005f7>MZz6M;}I|^fggQ=vnp}{vZM}o_~RyQsGS-vxq=}f7axfKkhEx%tGs;R7@UTIifPD`6v zo;bh0oIn~$tAUrxwKX+?O=-)^=&G|(d#doE&p%>n>=-fmGVd%&z_|%Z^zX3NVkFnA zy(9$R6bMO6jlMMH_4*V|H$1=aSHDl@^jbia_Qy*e%ijBDx$GPn=43Kfj6_8+3ZRzK zYXd|6?9oDpo@rzZQ)@$>8D) zXs^_e+;amn5*wa#s^-%EtemOKIshC;*SFWQD)N;;t<+rHO=GgQv#DTQ!-5~%QK9R6 zY3~Q}Lt8+6)cMYm8_HnGC-xU`8 z{eAcz$t_$j>~WA@SVfZ1LUHtmjS}L8KN);S$dP@Ae;OT6n{KYR`|U3#{Y?IOJt*D7sV z@$;cr?WtFGJR^kO#;v5nN}HCde`hPZ0?+<)f5Ne*{-d$alH#r>^2+e!vT((dc4lPd z^ZpXm^E*KN%ri ztRyVXz}I8qub4VNVcnHp^fZ7*dZN#>xq>xv_TqHiA7y{5e&q}XqFj5wCd z6FrAgOZ~Snz`?z_=3TiO(qb)vpXl5+$JIBSPnoMF5btb%XGn+|91M83uvO$A<{s3n zaVK3Sqs~#qe3So9ZgNOX1JR?6@}jpj@7Uo?A#Ry0jU121&u&=JFV?1LRMq>DhAHwK z%cQN8X5;@dAJs7PI@)+L>>XYAs^I-Mw$Agp-Pq)L=gx`cnt6WS`XjkBd@Wq0GM zR@@GgROyyOFNDU38duvVU-{ZZtyTWrRcGlenxpb)Ra_X`$!i-hY4j);i$JmQ7l@wKBsZWlWpk`U z_1(HHy;14{eg5l3TZd@w`zoC}Uig3^Lxv44>sXOR_4khe6)Vl)jrXInd?H0p}64Wl(F@taMK9?vCGx+jc@3=+V@QQ zpeRSfrE$mjv>*~h5Eko+%`}bPsuH%px=LmO<(Wl2T zIqehuIN#TmA@1_3Q%^jXJ#=Ha#!TcapMI*0NHi;~`7``26DJztTw8PPa%#dk?30H1 zXXCYd$A&AaGa_aOj7$GqXvpuv3r_YNH5e%8S!cem)4@|?c_N68wcp6gHc_OmVdXKzezZ?kqU%%Zy04JC zrM>d%TCmXHx-P`5$$vPpMemHx_c39P|EAANzq16sIqZ)bs!w5DI}wT*yEihvln%=@ z^RzqaMN~*BYCL{&@z35fUt?v|nk~24ELtFNuraXw2qz#IKD5~WUBy##TSGk7)DwesC{l+8N9cv6Ks6Ro_E zSX~$4b?2~d?$o_vJrknm)!=teW>}G@?stb1TKF!~A z_g*vZ*Xub)`}b;)vb!uP|66;T0HBBcelO~`&UXDSpcpH!nS6PPuHWJrU@ILCcLIs|7SO!<``JcP1r_5^eSHP`aJ7GF9Gvpd-o z?%o@-eK>n8J*JPPV5KAO&AE5$>pJ6JhDGfkQxkeji#KO}tp0twInB##dW?b8G!fzR|Zdo}1Wz@sQS~()6>LljO;GQEMjh z2s0+)GAF8o5!|M-?1wW!JyLIS{Of8I?DcYsg zQU?#P#uvj!ZX0d8m7K={DAfJ!&_3lM8&WicW+3Ux1>Mih+23X3X2RTnduuJM1ko2} z$VyO?fth?7`Nz*MbKQ%94Ajl2C0{$n#}esilWXhR;vgq#`eT0ag@nF0ZVW1@&r;e66ab8Ip z-OB=OMuHF-&AQCgO94~txhs2c!&?t`lzBvDaf|q5srZQGY8g% z#6U(vI{C$sW8f@ia- zWrD?nWxzoE8nTC08ilASLOc+qHPOz*Bdgl<8-p$0;Cr{0_7C zEkcok&rLkt6ug-j;lNXOkB1SFywOB}jgapc$WYnxE5C&>_*&;e2A;_hS=(ggUL^3m zpox%7HwxMP>cl|*Q~BY;2aUzNPrvi^zB?d32pbiC|2#*_lWyy>-?{lpXESE+bwWad z00R2TCZfB7ZTgCF&{w~I z4qm*o{ih^>$uJ|dao?7SUb?r)(_Pb)Tml+eS}FLSb!5bsRP7x72j99Jz^N5&Uqt>q zzpxI8N7tK?a=Xz|hXa}rMfNcLzRpw_@g*r3RNABH0x8~YKq)3g1mX6v>rY(7h0O~L zsA6q3;I7+Im3|M96iQ`F5WK1E?&g^BD*|A@T!5kDeOJ5&=$!_kCuP5ryMpN-kEuWB|nHkR@<{hkEPl=2*I6)+UZM>pRA!{(jO zY|nCbBYvUNBO4&8gb`IEL`fDiqX{|2Td3tV(kgdrsuQs(m>~UTU^-yLU;B=mEcPYc z+hu^~y!v}%&y7Dpe+LIxc}WW2EhNCe`Eayq-n|+NaCJljg3rQj8#Dn4Y_U|;U?bX! zA1Cs0j^RlXNV^$xdl2__4EwBHoFY#S@{<~(kmao zD|fsAgnu+$fX1|m?4kb)u@Qw=b{)(^gTA_cvh&>W z{1cmOmMLSjyt=+ts6WQ!{NrqlvTWeKCMw<2$y*(`x19U?y;_n*=bM(S@^f}zr*Mem z6SP%g`1^FKNQ5sMgql`qBJ6URG+)q+0A2l}Jg{$^W+zRBV$=QJ8fXVXiJU~})3$ad zlKPHuD@_et%a%xd!``@Mf!X?fWOlno^Mw_NM-EHeLJYt2=4XNw^nBaR=|+CBX?0Ua z@2YBBukJ-LK~brrWn*FIpyfVY(j9G5$++*z%>!Y6;0^*HYO>LWgXB5OGl@s zC)|JtCff)QRe@eJEgLx?WR)O{q^wCA1&#cNDAG;f2rTc(A4E4Ie&N9Y=lRdTo##>E z@WbaQ=pCcgz-z|Z0>dklqpBQq6}9?T$gMNXfT9s82%N|Jbqa-WE9t7z9o=3i-jDw6 zB|tO$hFi6Z0BK_y0pv~tJP#K+Wr`qg45;kDfy+7A9mm11Bx!K`vWLkUrynp-Vvpd z+7m)`tIfq$r8w$}PLZV0Q(2&#XUCwcP~G2^;h5kuwChlJRK_2R@jc8i7`X83m!|jL ziFta~U|?WlfnMY8?f9$m9m|FL-k_uB%73*%iy{2++y!sL?c`49?7j58j7UbQWbZ!Q zuCCS*k*kikKR22a14JtdSOB^YWyC%!C!&7IJOPDvOR-xkYWqhe=3lvvx-7&@&AKI5 zUS}u>d6#pdwmu#&x``l^=b!S|$%#rxw8zXo>h5OYJ`ZT#Qy|1AHDwZTm`?auQ{|^D zpS3WOO3H%BV6MN<0ug-iJzFADPE>K4Zro zeadK4V-6Sai*?G^aAfmIzt4>X`v}*&U!-j(F)}mTlliK+rlgte4@X(3MQIOxD7q`_ z>ss`gE9XM|zt*>GZ(nY2pQBHv_>a)biYxg>JxWS^mtrGHU+U3_z|kW|g#;h?*~VE6 z{L*u3z1GEn+A2=ApZ1Xp?Y^26aGm=En`1&sNW$!+LQv~RtyaPE!35#j!qCneG$G+#r#0$4Bs)DXaAabuFBQg;E@Z-6sd&cRzdPe z+B|R1dqn8rqPrH_jSAotnow~KrQut13~{5vN*ZFplRo@%893~foRWpp7a)Rh5do*- z8%#pK4?gghq#O=?NnEo;LXYK?i?ssq_JIBPGhSbxIGijKXM^cWYfV0iARRBia{YR;s2Y5$)naF)v`L2@%T-oMx##=Ip4j4)_1^>Y zrQSPV=gfaxE+}Wgjjo5qEfPFC{|>kDdVid-WlVS8MsUYwq-c{YU)_nS&U#8k-X%O) zi5NzHdHJYT$yv=pmz0S@2>!>%hJoUlQL?(N3Q2WW=UNC4K2Nlj)ob|Pp7o2EaBXoQ zxr&@Vr_l-HtnWoje6etEdRUi|msYc~7pTFq6%{d$?C_hXg3jb#1#&pgE6BA$7D4mq ziDkFa)Zdyv>Za57J+R5DaqAi&qiY7G&JP*`(y$*GZT=HK?C+L!gXe={iA8cTxk183 zAJStPv5wws)5=w7X+Bd4io^4lHmHoDDL)n!}i-9p6pK(CJ5#P4Oa9GZByy-RvR>h%lh}HvT9Kq z8SmNv+1y^nOPcLXQLMGAV|lz#fI)p?p4j3o!ljp9KjwWG(<2eF-0ORj37)6P=M`Ly z6n%yp{Le}udB1n3VL*WTOGCc9azt=Se@4NkK`I1u<}LOySFeke?g=|!&S!GraR6sQ zi-Vj_Jj%vq%fG*p40eJ-N)%B)nocWSeUjZWx!^s3`*6IYN&~t|^i!-EY}KEx-xzQ@ z`V!AdnOpy%3v>Zvt!DV`Ot7&^y~18A}{m7&TejsI2s6{GAah?@|?{yr5$F3 uVQ(ZAblvXGfdBsOoPD>Dv^TS}k1|pUh)TJ-y#W7Q1xL*6OsmP%`2PVWJd)-B literal 0 HcmV?d00001 diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..5cae9ae --- /dev/null +++ b/forge/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "CullLeaves", + "pack_format": 9 + } +} diff --git a/forge/src/main/resources/visualoverhaul-forge.mixins.json b/forge/src/main/resources/visualoverhaul-forge.mixins.json new file mode 100644 index 0000000..0f9122c --- /dev/null +++ b/forge/src/main/resources/visualoverhaul-forge.mixins.json @@ -0,0 +1,19 @@ +{ + "required": true, + "package": "eu.midnightdust.visualoverhaul.forge.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "mixins": [ + "MixinJukeboxBlock", + "MixinAbstractFurnaceBlockEntity", + "MixinBrewingStandBlockEntity" + ], + "client": [ + "MixinResourcePackManager", + "MixinItemColors", + "MixinBlockColors" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties old mode 100755 new mode 100644 index afa79e5..c99c0ac --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,19 @@ -# Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx2G +org.gradle.jvmargs=-Xmx4096M -# Fabric Properties - # check these on https://fabricmc.net/use - minecraft_version=1.19 - yarn_mappings=1.19+build.4 - loader_version=0.14.8 +minecraft_version=1.19.2 +enabled_platforms=quilt,fabric,forge -# Mod Properties - mod_version = 4.1.1 - maven_group = eu.midnightdust - archives_base_name = visualoverhaul +archives_base_name=visualoverhaul +mod_version=5.0.0 +maven_group=eu.midnightdust -# Dependencies - # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.56.0+1.19 - midnightlib_version=0.5.2 +architectury_version=6.2.43 +midnightlib_version=1.0.0 + +fabric_loader_version=0.14.9 +fabric_api_version=0.59.0+1.19.2 + +forge_version=1.19.2-43.0.8 + +quilt_loader_version=0.17.2-beta.3 +quilt_fabric_api_version=4.0.0-beta.7+0.59.0-1.19.2 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100755 new mode 100644 index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch delta 10158 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 delta 9041 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100755 new mode 100644 index d2880ba..ae04661 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787..a69d9cb 100755 --- a/gradlew +++ b/gradlew @@ -205,6 +205,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat old mode 100755 new mode 100644 index 107acd3..53a6b23 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,89 +1,91 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/quilt/build.gradle b/quilt/build.gradle new file mode 100644 index 0000000..474e69b --- /dev/null +++ b/quilt/build.gradle @@ -0,0 +1,97 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" +} + +repositories { + maven { url "https://maven.quiltmc.org/repository/release/" } + maven { url "https://api.modrinth.com/maven" } +} + +architectury { + injectInjectables = false + platformSetupLoomIde() + loader("quilt") +} + +loom { +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentQuilt.extendsFrom common + archivesBaseName = rootProject.archives_base_name + "-quilt" +} + +dependencies { + modImplementation "org.quiltmc:quilt-loader:${rootProject.quilt_loader_version}" + modApi "org.quiltmc.quilted-fabric-api:quilted-fabric-api:${rootProject.quilt_fabric_api_version}" + // Remove the next few lines if you don't want to depend on the API + //modApi("dev.architectury:architectury-fabric:${rootProject.architectury_version}") { + // // We must not pull Fabric Loader from Architectury Fabric + // exclude group: "net.fabricmc" + // exclude group: "net.fabricmc.fabric-api" + //} + modImplementation "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-quilt" + include "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-quilt" + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionQuilt")) { transitive false } + common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":fabric-like", configuration: "transformProductionQuilt")) { transitive false } +} + +processResources { + inputs.property "group", rootProject.maven_group + inputs.property "version", project.version + + filesMatching("quilt.mod.json") { + expand "group": rootProject.maven_group, + "version": project.version + } +} + +shadowJar { + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + classifier "dev-shadow" +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar + classifier null +} + +jar { + classifier "dev" +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +publishing { + publications { + mavenQuilt(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } +} diff --git a/quilt/gradle.properties b/quilt/gradle.properties new file mode 100644 index 0000000..96758ce --- /dev/null +++ b/quilt/gradle.properties @@ -0,0 +1 @@ +loom.platform=quilt \ No newline at end of file diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java new file mode 100644 index 0000000..0ed1f75 --- /dev/null +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java @@ -0,0 +1,180 @@ +package eu.midnightdust.visualoverhaul.quilt; + +import eu.midnightdust.visualoverhaul.VisualOverhaulClient; +import eu.midnightdust.visualoverhaul.block.model.FurnaceWoodenPlanksModel; +import eu.midnightdust.visualoverhaul.block.renderer.BrewingStandBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.block.renderer.FurnaceBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.block.renderer.JukeboxBlockEntityRenderer; +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; +import net.minecraft.block.Blocks; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.BrewingStandBlockEntity; +import net.minecraft.block.entity.JukeboxBlockEntity; +import net.minecraft.client.color.world.BiomeColors; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.MusicDiscItem; +import net.minecraft.potion.PotionUtil; +import net.minecraft.potion.Potions; +import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.registry.Registry; +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; +import org.quiltmc.qsl.block.extensions.api.client.BlockRenderLayerMap; +import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents; +import org.quiltmc.qsl.networking.api.client.ClientPlayNetworking; +import org.quiltmc.qsl.resource.loader.api.ResourceLoader; +import org.quiltmc.qsl.resource.loader.api.ResourcePackActivationType; + +import static eu.midnightdust.visualoverhaul.VisualOverhaul.*; +import static eu.midnightdust.visualoverhaul.VisualOverhaulClient.JukeBoxTop; + +public class VisualOverhaulClientQuilt implements ClientModInitializer { + @Override + public void onInitializeClient(ModContainer mod) { + VisualOverhaulClient.onInitializeClient(); + // Block only registered on client, because it's just used for the renderer // + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"jukebox_top"), JukeBoxTop); + + EntityModelLayerRegistry.registerModelLayer(FurnaceWoodenPlanksModel.WOODEN_PLANKS_MODEL_LAYER, FurnaceWoodenPlanksModel::getTexturedModelData); + + BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.JUKEBOX); + BlockRenderLayerMap.put(RenderLayer.getCutout(), JukeBoxTop); + BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.FURNACE); + BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.SMOKER); + BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.BLAST_FURNACE); + + BlockEntityRendererRegistry.register(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); + BlockEntityRendererRegistry.register(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); + +// // Phonos Compat // +// if (FabricLoader.getInstance().isModLoaded("phonos")) { +// PhonosCompatInit.init(); +// BlockEntityRendererRegistry.INSTANCE.register(PhonosBlocks.RADIO_JUKEBOX_ENTITY, RadioJukeboxBlockEntityRenderer::new); +// } + + Registry.ITEM.forEach((item) -> { + if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) { + ModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); + } + }); + + ClientPlayNetworking.registerGlobalReceiver(UPDATE_POTION_BOTTLES, + (client, handler, attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + DefaultedList inv = DefaultedList.ofSize(5, ItemStack.EMPTY); + for (int i = 0; i < 4; i++) { + inv.set(i, attachedData.readItemStack()); + } + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof BrewingStandBlockEntity blockEntity) { + blockEntity.setStack(0, inv.get(0)); + blockEntity.setStack(1, inv.get(1)); + blockEntity.setStack(2, inv.get(2)); + blockEntity.setStack(3, inv.get(3)); + blockEntity.setStack(4, inv.get(4)); + } + }); + }); + ClientPlayNetworking.registerGlobalReceiver(UPDATE_RECORD, + (client, handler, attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + ItemStack record = attachedData.readItemStack(); + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) { + blockEntity.setRecord(record); + } + }); + }); + ClientPlayNetworking.registerGlobalReceiver(UPDATE_FURNACE_ITEMS, + (client, handler, attachedData, packetSender) -> { + BlockPos pos = attachedData.readBlockPos(); + DefaultedList inv = DefaultedList.ofSize(3, ItemStack.EMPTY); + for (int i = 0; i < 2; i++) { + inv.set(i, attachedData.readItemStack()); + } + client.execute(() -> { + if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof AbstractFurnaceBlockEntity blockEntity) { + blockEntity.setStack(0, inv.get(0)); + blockEntity.setStack(1, inv.get(1)); + blockEntity.setStack(2, inv.get(2)); + } + }); + }); + + // Register builtin resourcepacks + ResourceLoader.registerBuiltinResourcePack(new Identifier(MOD_ID,"nobrewingbottles"), mod, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceLoader.registerBuiltinResourcePack(new Identifier(MOD_ID,"fancyfurnace"), mod, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceLoader.registerBuiltinResourcePack(new Identifier(MOD_ID,"coloredwaterbucket"), mod, ResourcePackActivationType.DEFAULT_ENABLED); + ResourceLoader.registerBuiltinResourcePack(new Identifier(MOD_ID,"rounddiscs"), mod, ResourcePackActivationType.ALWAYS_ENABLED); + + // Biome-colored Items + if (VOConfig.coloredItems) { + ClientTickEvents.END.register(client -> { + int waterColor; + int foliageColor; + int grassColor; + if (client.world != null && client.player != null) { + waterColor = BiomeColors.getWaterColor(client.world, client.player.getBlockPos()); + foliageColor = BiomeColors.getFoliageColor(client.world, client.player.getBlockPos()); + grassColor = BiomeColors.getGrassColor(client.world, client.player.getBlockPos()); + } + else { + waterColor = 4159204; + foliageColor = -8934609; + grassColor = -8934609; + } + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.WATER_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.AXOLOTL_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.COD_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.PUFFERFISH_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.TROPICAL_FISH_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> tintIndex == 0 ? -1 : waterColor, Items.SALMON_BUCKET); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> grassColor, Items.GRASS_BLOCK); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> grassColor, Items.GRASS); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> grassColor, Items.TALL_GRASS); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> grassColor, Items.FERN); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> grassColor, Items.LARGE_FERN); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.ACACIA_LEAVES); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.DARK_OAK_LEAVES); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.JUNGLE_LEAVES); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.OAK_LEAVES); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.VINE); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.SUGAR_CANE); + if (VOConfig.coloredLilypad) ColorProviderRegistry.ITEM.register((stack, tintIndex) -> foliageColor, Items.LILY_PAD); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.POTION); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.SPLASH_POTION); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> { + if ((PotionUtil.getPotion(stack) == Potions.WATER || PotionUtil.getPotion(stack) == Potions.MUNDANE || PotionUtil.getPotion(stack) == Potions.THICK || PotionUtil.getPotion(stack) == Potions.AWKWARD) && tintIndex == 0) { + return waterColor; + } + return tintIndex > 0 ? -1 : PotionUtil.getColor(stack); + }, Items.LINGERING_POTION); + }); + } + if (VOConfig.coloredLilypad) { + ColorProviderRegistry.BLOCK.register((state, world, pos, tintIndex) -> world != null ? world.getColor(pos, BiomeColors.FOLIAGE_COLOR) : 0, Blocks.LILY_PAD); + } + } +} diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinAbstractFurnaceBlockEntity.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinAbstractFurnaceBlockEntity.java new file mode 100755 index 0000000..33c2f59 --- /dev/null +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinAbstractFurnaceBlockEntity.java @@ -0,0 +1,57 @@ +package eu.midnightdust.visualoverhaul.quilt.mixin; + +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.quiltmc.qsl.networking.api.PlayerLookup; +import org.quiltmc.qsl.networking.api.ServerPlayNetworking; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.stream.Stream; + +@Mixin(AbstractFurnaceBlockEntity.class) +public abstract class MixinAbstractFurnaceBlockEntity extends LockableContainerBlockEntity { + + private static boolean invUpdate = true; + private static int playerUpdate = -1; + + + protected MixinAbstractFurnaceBlockEntity(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { + super(blockEntityType, blockPos, blockState); + } + + @Inject(at = @At("TAIL"), method = "tick") + private static void tick(World world, BlockPos pos, BlockState state, AbstractFurnaceBlockEntity blockEntity, CallbackInfo ci) { + if (world.getBlockState(pos).hasBlockEntity()) { + if (!world.isClient && (invUpdate || world.getPlayers().size() == playerUpdate)) { + Stream watchingPlayers = PlayerLookup.tracking(blockEntity).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getStack(0)); + passedData.writeItemStack(blockEntity.getStack(1)); + passedData.writeItemStack(blockEntity.getStack(2)); + + watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_FURNACE_ITEMS, passedData)); + invUpdate = false; + } + playerUpdate = world.getPlayers().size(); + } + } + + @Inject(at = @At("RETURN"), method = "getStack") + public void getStack(int slot, CallbackInfoReturnable cir) { + invUpdate = true; + } +} diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinBrewingStandBlockEntity.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinBrewingStandBlockEntity.java new file mode 100755 index 0000000..da4192e --- /dev/null +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinBrewingStandBlockEntity.java @@ -0,0 +1,56 @@ +package eu.midnightdust.visualoverhaul.quilt.mixin; + +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.BrewingStandBlockEntity; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.quiltmc.qsl.networking.api.PlayerLookup; +import org.quiltmc.qsl.networking.api.ServerPlayNetworking; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.stream.Stream; + +@Mixin(BrewingStandBlockEntity.class) +public abstract class MixinBrewingStandBlockEntity extends LockableContainerBlockEntity { + + private static boolean invUpdate = true; + private static int playerUpdate = -1; + + protected MixinBrewingStandBlockEntity(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { + super(blockEntityType, blockPos, blockState); + } + + @Inject(at = @At("TAIL"), method = "tick") + private static void tick(World world, BlockPos pos, BlockState state, BrewingStandBlockEntity blockEntity, CallbackInfo ci) { + if (!world.isClient && (invUpdate || world.getPlayers().size() == playerUpdate)) { + Stream watchingPlayers = PlayerLookup.tracking(blockEntity).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getStack(0)); + passedData.writeItemStack(blockEntity.getStack(1)); + passedData.writeItemStack(blockEntity.getStack(2)); + passedData.writeItemStack(blockEntity.getStack(3)); + passedData.writeItemStack(blockEntity.getStack(4)); + + watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_POTION_BOTTLES, passedData)); + invUpdate = false; + } + playerUpdate = world.getPlayers().size(); + } + + @Inject(at = @At("RETURN"), method = "getStack") + public void getStack(int slot, CallbackInfoReturnable cir) { + invUpdate = true; + } +} diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java new file mode 100755 index 0000000..0b13e1b --- /dev/null +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java @@ -0,0 +1,56 @@ +package eu.midnightdust.visualoverhaul.quilt.mixin; + +import eu.midnightdust.visualoverhaul.VisualOverhaul; +import eu.midnightdust.visualoverhaul.util.JukeboxPacketUpdate; +import io.netty.buffer.Unpooled; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.JukeboxBlock; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.JukeboxBlockEntity; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import org.quiltmc.qsl.networking.api.PlayerLookup; +import org.quiltmc.qsl.networking.api.ServerPlayNetworking; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +import java.util.stream.Stream; + +@Mixin(JukeboxBlock.class) +public abstract class MixinJukeboxBlock extends BlockWithEntity { + + protected MixinJukeboxBlock(Settings settings) { + super(settings); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Nullable + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + return world.isClient() ? null : checkType(type, BlockEntityType.JUKEBOX, MixinJukeboxBlock::tick); + } + @Unique + private static void tick(World world, BlockPos pos, BlockState state, JukeboxBlockEntity blockEntity) { + if (!world.isClient && (JukeboxPacketUpdate.invUpdate || world.getPlayers().size() == JukeboxPacketUpdate.playerUpdate)) { + Stream watchingPlayers = PlayerLookup.tracking(blockEntity).stream(); + PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); + passedData.writeBlockPos(pos); + passedData.writeItemStack(blockEntity.getRecord()); + + watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_RECORD, passedData)); + JukeboxPacketUpdate.invUpdate = false; + } + JukeboxPacketUpdate.playerUpdate = world.getPlayers().size(); + } +} + diff --git a/quilt/src/main/resources/quilt.mod.json b/quilt/src/main/resources/quilt.mod.json new file mode 100644 index 0000000..4ff7060 --- /dev/null +++ b/quilt/src/main/resources/quilt.mod.json @@ -0,0 +1,61 @@ +{ + "schema_version": 1, + "quilt_loader": { + "group": "${group}", + "id": "visualoverhaul", + "version": "${version}", + "name": "VisualOverhaul", + "description": "Adds better visuals for certain Minecraft Vanilla Blocks.", + "authors": [ + "Motschen", + "TeamMidnightDust" + ], + "contact": { + "homepage": "https://www.midnightdust.eu/", + "sources": "https://github.com/TeamMidnightDust/VisualOverhaul", + "issues": "https://github.com/TeamMidnightDust/VisualOverhaul/issues" + }, + "license": "MIT", + "icon": "assets/visualoverhaul/icon.png", + "intermediate_mappings": "net.fabricmc:intermediary", + "environment": "client", + "entrypoints": { + "client_init": [ + "eu.midnightdust.visualoverhaul.quilt.VisualOverhaulClientQuilt" + ] + }, + "depends": [ + { + "id": "quilt_loader", + "version": "*" + }, + { + "id": "quilt_base", + "version": "*" + }, + { + "id": "midnightlib", + "version": "*" + } + ], + "metadata": { + "name": "VisualOverhaul (Quilt)", + "description": "Adds better visuals for certain Minecraft Vanilla Blocks.", + "contributors": { + "Motschen": "Author", + "TeamMidnightDust": "Mascot" + }, + "contact": { + "email": "mail@midnightdust.eu", + "homepage": "https://modrinth.com/mod/visualoverhaul", + "issues": "https://github.com/TeamMidnightDust/VisualOverhaul/issues", + "sources": "https://github.com/TeamMidnightDust/VisualOverhaul" + }, + "icon": "assets/visualoverhaul/icon.png" + } + }, + "mixin": [ + "visualoverhaul.mixins.json", + "visualoverhaul-quilt.mixins.json" + ] +} \ No newline at end of file diff --git a/quilt/src/main/resources/visualoverhaul-quilt.mixins.json b/quilt/src/main/resources/visualoverhaul-quilt.mixins.json new file mode 100644 index 0000000..12c72dc --- /dev/null +++ b/quilt/src/main/resources/visualoverhaul-quilt.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "package": "eu.midnightdust.visualoverhaul.quilt.mixin", + "compatibilityLevel": "JAVA_17", + "minVersion": "0.8", + "mixins": [ + "MixinJukeboxBlock", + "MixinAbstractFurnaceBlockEntity", + "MixinBrewingStandBlockEntity" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle old mode 100755 new mode 100644 index 5b60df3..3b1361c --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,16 @@ pluginManagement { repositories { - jcenter() - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.architectury.dev/" } + maven { url "https://maven.minecraftforge.net/" } gradlePluginPortal() } } + +include("common") +include("fabric-like") +include("fabric") +include("quilt") +include("forge") + +rootProject.name = "visualoverhaul" diff --git a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png b/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png deleted file mode 100755 index 48629f7fb8e4dcd460ce554006e333b5967b3704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?8wB`-xc>kDAIQ9U#{SB7tE(IRE;SpUO4dqD zOq}d(6B!xVWUKG%>uY0U6Q`qOXlN)WBQyD!t