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 0000000..eae21c8 Binary files /dev/null and b/common/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png differ 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 0000000..6351cbf Binary files /dev/null and b/forge/src/main/resources/icon.png differ 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 7454180..249e583 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ 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 48629f7..0000000 Binary files a/src/main/resources/resourcepacks/nobrewingbottles/assets/minecraft/textures/block/brewing_stand.png and /dev/null differ