From a5d91575a39337f21a3c33edba1873ae37f34c5b Mon Sep 17 00:00:00 2001 From: LopyMine Date: Sat, 22 Nov 2025 19:49:49 +0300 Subject: [PATCH 1/4] Oops, forgot this one --- build.gradle | 4 + .../manager/MossyDependenciesManager.java | 2 +- gradle.properties | 2 +- .../java/net/lopymine/pe/ParticleEffects.java | 12 +- .../lopymine/pe/capture/ParticleCaptures.java | 8 +- .../pe/debug/DebugParticleInfoRenderer.java | 63 +++++----- .../pe/manager/ParticleEffectsManager.java | 118 +++++++++--------- .../pe/mixin/AreaEffectCloudEntityMixin.java | 28 ++--- .../lopymine/pe/mixin/ArrowEntityMixin.java | 21 ++-- .../mixin/BillboardParticleRendererMixin.java | 22 ++-- .../lopymine/pe/mixin/ClientWorldMixin.java | 20 +-- .../pe/mixin/ParticleManagerMixin.java | 35 ++---- .../pe/mixin/SecondLivingEntityMixin.java | 12 +- .../pe/mixin/SimpleParticleTypeMixin.java | 2 +- .../lopymine/pe/mixin/StatusEffectMixin.java | 12 +- .../lopymine/pe/mixin/StatusEffectsMixin.java | 8 +- .../pe/mixin/WorldEventHandlerMixin.java | 37 +++--- .../lopymine/pe/mixin/WorldRendererMixin.java | 12 +- .../pe/modmenu/NoConfigLibraryScreen.java | 16 +-- .../modmenu/yacl/YACLConfigurationScreen.java | 6 +- .../yacl/simple/SimpleCategoryBuilder.java | 4 +- .../yacl/simple/SimpleGroupBuilder.java | 6 +- .../yacl/simple/SimpleYACLScreenBuilder.java | 2 +- .../pe/particle/TexturedParticle.java | 16 +-- .../pe/particle/TexturedParticleFactory.java | 16 +-- .../java/net/lopymine/pe/utils/ListUtils.java | 6 +- .../net/lopymine/pe/utils/ModMenuUtils.java | 20 +-- .../net/lopymine/pe/utils/PEStatusEffect.java | 6 +- .../lopymine/pe/utils/StatusEffectUtils.java | 9 +- src/main/resources/aws/1.20.1.accesswidener | 4 +- src/main/resources/aws/1.21.1.accesswidener | 10 +- src/main/resources/aws/1.21.2.accesswidener | 12 +- src/main/resources/aws/1.21.3.accesswidener | 12 +- src/main/resources/aws/1.21.4.accesswidener | 12 +- src/main/resources/aws/1.21.5.accesswidener | 18 +-- src/main/resources/aws/1.21.6.accesswidener | 18 +-- src/main/resources/aws/1.21.7.accesswidener | 18 +-- src/main/resources/aws/1.21.8.accesswidener | 20 +-- src/main/resources/aws/1.21.9.accesswidener | 30 ++--- src/main/resources/aws/1.21.accesswidener | 10 +- .../resources/particle-effects.mixins.json5 | 6 +- stonecutter.gradle | 2 +- 42 files changed, 339 insertions(+), 358 deletions(-) diff --git a/build.gradle b/build.gradle index 2ea603b..93552d2 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,10 @@ mossyDependencies { } } +dependencies { + mappings loom.officialMojangMappings() +} + mossyResources { //expandFiles = ["custom", "file", "patterns", "here"] } diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java index 869faa5..928d52d 100644 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java +++ b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java @@ -25,7 +25,7 @@ private static void addDependencies(MossyDependenciesExtension extension, Projec DependencyHandler dependencies = project.getDependencies(); dependencies.add("minecraft", "com.mojang:minecraft:%s".formatted(minecraft)); - dependencies.add("mappings", "net.fabricmc:yarn:%s:v2".formatted(mappings)); + //dependencies.add("mappings", "net.fabricmc:yarn:%s:v2".formatted(mappings)); dependencies.add("modImplementation", "net.fabricmc.fabric-api:fabric-api:%s".formatted(fabricApi)); dependencies.add("modImplementation", "net.fabricmc:fabric-loader:%s".formatted(fabricLoader)); dependencies.add("compileOnly", "org.projectlombok:lombok:%s".formatted(lombok)); diff --git a/gradle.properties b/gradle.properties index 4942826..0e31e62 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ base.lombok_version = 1.18.32 # Multi-Versions Properties # Verified version: 1.20 1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.20.6 1.21 1.21.1 1.21.2 1.21.3 -multi_versions = 1.20.1 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 +multi_versions = 1.20.1 1.21 1.21.1 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 # Build Dependencies build.yarn = [VERSIONED] diff --git a/src/main/java/net/lopymine/pe/ParticleEffects.java b/src/main/java/net/lopymine/pe/ParticleEffects.java index 7e81546..f1e3ece 100644 --- a/src/main/java/net/lopymine/pe/ParticleEffects.java +++ b/src/main/java/net/lopymine/pe/ParticleEffects.java @@ -1,8 +1,8 @@ package net.lopymine.pe; import lombok.*; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import org.slf4j.*; import net.fabricmc.api.ModInitializer; @@ -16,12 +16,12 @@ public class ParticleEffects implements ModInitializer { public static final String MOD_ID = /*$ mod_id*/ "particle-effects"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME); - public static Identifier id(String path) { - return Identifier.of(MOD_ID, path); + public static ResourceLocation id(String path) { + return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); } - public static Text text(String path, Object... args) { - return Text.translatable(String.format("%s.%s", MOD_ID, path), args); + public static Component text(String path, Object... args) { + return Component.translatable(String.format("%s.%s", MOD_ID, path), args); } @Setter diff --git a/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java b/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java index 14615d9..3952fc4 100644 --- a/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java +++ b/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java @@ -1,19 +1,19 @@ package net.lopymine.pe.capture; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; import org.jetbrains.annotations.Nullable; public class ParticleCaptures { - private final static ThreadLocal MAIN = new ThreadLocal<>(); + private final static ThreadLocal MAIN = new ThreadLocal<>(); private final static ThreadLocal DEBUG_DATA = new ThreadLocal<>(); - public static void setParticle(ParticleEffect entity) { + public static void setParticle(ParticleOptions entity) { MAIN.set(entity); } @Nullable - public static ParticleEffect getParticle() { + public static ParticleOptions getParticle() { return MAIN.get(); } diff --git a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java index 7242a9b..da43998 100644 --- a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java +++ b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java @@ -3,53 +3,54 @@ import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.particle.TexturedParticle; import net.lopymine.pe.utils.*; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.*; +import net.minecraft.client.gui.Font; import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.Text; -import net.minecraft.util.math.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; public class DebugParticleInfoRenderer { - public static void renderDebugInfo(MatrixStack matrices, Camera camera, float tickProgress, Iterable particles) { + public static void renderDebugInfo(PoseStack matrices, Camera camera, float tickProgress, Iterable particles) { if (!ParticleEffects.getConfig().isDebugLogEnabled()) { return; } for (Particle particle : particles) { - Vec3d vec3d = camera.getPos(); - float x = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastX /*?} else {*/ /*prevPosX *//*?}*/, particle.x) - vec3d.getX()); - float y = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastY /*?} else {*/ /*prevPosY *//*?}*/, particle.y) - vec3d.getY()); - float z = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastZ /*?} else {*/ /*prevPosZ *//*?}*/, particle.z) - vec3d.getZ()); - TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + Vec3 vec3d = camera.getPosition(); + float x = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ xo /*?} else {*/ /*prevPosX *//*?}*/, particle.x) - vec3d.x()); + float y = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ yo /*?} else {*/ /*prevPosY *//*?}*/, particle.y) - vec3d.y()); + float z = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ zo /*?} else {*/ /*prevPosZ *//*?}*/, particle.z) - vec3d.z()); + Font textRenderer = Minecraft.getInstance().font; - matrices.push(); + matrices.pushPose(); matrices.translate(x, y + 0.5D, z); //? if <=1.21.8 { - matrices.multiply(camera.getRotation()); - matrices.scale(/*? if =1.20.1 {*//* - *//*?}*/0.015F, -0.015F, 0.015F); + /*matrices.multiply(camera.getRotation()); + matrices.scale(/^? if =1.20.1 {^//^ - ^//^?}^/0.015F, -0.015F, 0.015F); int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - //?} + *///?} String[] text = getDebugInfo(particle); int yOffset = 0; for (String line : text) { //? if <=1.21.8 { - float f = (float) (-textRenderer.getWidth(line)) / 2.0F; - //?} + /*float f = (float) (-textRenderer.getWidth(line)) / 2.0F; + *///?} //? if >=1.21.9 { - /*MinecraftClient.getInstance().worldRenderer.entityRenderDispatcher.getQueue().submitLabel(matrices, Vec3d.ZERO, -yOffset, Text.literal(line), true, LightmapTextureManager.MAX_LIGHT_COORDINATE, 10, MinecraftClient.getInstance().worldRenderer.worldRenderState.cameraRenderState); - *///?} else { - textRenderer.draw(line, f, (float) -yOffset, -1, false, matrices.peek().getPositionMatrix(), MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(), net.minecraft.client.font.TextRenderer.TextLayerType.NORMAL, opacity, LightmapTextureManager.MAX_LIGHT_COORDINATE); - //?} - yOffset += textRenderer.fontHeight + 1; + Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), true, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); + //?} else { + /*textRenderer.draw(line, f, (float) -yOffset, -1, false, matrices.peek().getPositionMatrix(), MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(), net.minecraft.client.font.TextRenderer.TextLayerType.NORMAL, opacity, LightmapTextureManager.MAX_LIGHT_COORDINATE); + *///?} + yOffset += textRenderer.lineHeight + 1; } - matrices.pop(); + matrices.popPose(); } } @@ -68,17 +69,17 @@ public static void renderDebugInfo(MatrixStack matrices, Camera camera, float ti blue = ArgbUtils.getBlue(color); } else { //? if <=1.21.8 { - alpha = (int) (particle.alpha * 255); + /*alpha = (int) (particle.alpha * 255); red = (int) (particle.red * 255); green = (int) (particle.green * 255); blue = (int) (particle.blue * 255); color = ArgbUtils.getArgb(alpha, red, green, blue); - //?} else { - /*if (particle instanceof BillboardParticle billboard) { + *///?} else { + if (particle instanceof SingleQuadParticle billboard) { alpha = (int) (billboard.alpha * 255); - red = (int) (billboard.red * 255); - green = (int) (billboard.green * 255); - blue = (int) (billboard.blue * 255); + red = (int) (billboard.rCol * 255); + green = (int) (billboard.gCol * 255); + blue = (int) (billboard.bCol * 255); color = ArgbUtils.getArgb(alpha, red, green, blue); } else { alpha = 255; @@ -87,7 +88,7 @@ public static void renderDebugInfo(MatrixStack matrices, Camera camera, float ti blue = 255; color = -1; } - *///?} + //?} } return new String[]{ diff --git a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java index 8f895b4..0002f09 100644 --- a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java +++ b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java @@ -1,49 +1,45 @@ package net.lopymine.pe.manager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.sugar.ref.LocalRef; import java.util.function.*; import net.lopymine.pe.capture.ParticleCaptures; import net.minecraft.client.particle.Particle; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.*; -import net.minecraft.potion.Potion; -import net.minecraft.registry.*; - -import net.minecraft.registry.entry.RegistryEntry.Reference; -import net.minecraft.util.Identifier; +import net.minecraft.core.*; +import net.minecraft.core.particles.*; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.effect.*; +import net.minecraft.world.item.alchemy.Potion; + +import net.minecraft.core.Holder.Reference; +import net.minecraft.resources.ResourceLocation; import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; import net.lopymine.pe.particle.*; import net.lopymine.pe.utils.*; import java.util.*; import java.util.stream.*; -import net.minecraft.world.World; +import net.minecraft.world.level.Level; //? >=1.21 -import net.minecraft.registry.entry.RegistryEntry; import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Unique; public class ParticleEffectsManager { - private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); - private static final Map> COLOR_TO_PARTICLES_MAP = new HashMap<>(); - private static final HashMap MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE = getMinecraftEffectWidthTexturedParticles(); + private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map> COLOR_TO_PARTICLES_MAP = new HashMap<>(); + private static final HashMap MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE = getMinecraftEffectWidthTexturedParticles(); @Nullable - public static List getParticleEffects(Integer i) { + public static List getParticleEffects(Integer i) { return COLOR_TO_PARTICLES_MAP.get(i); } - private static ParticleEffect registerParticleTypeForEffect(StatusEffect statusEffect, Identifier effectId) { + private static ParticleOptions registerParticleTypeForEffect(MobEffect statusEffect, ResourceLocation effectId) { // CREATE PARTICLE TYPE - ParticleEffect type = Registry.register( - Registries.PARTICLE_TYPE, + ParticleOptions type = Registry.register( + BuiltInRegistries.PARTICLE_TYPE, getModEffectId(statusEffect, effectId), // WE NEED IT TO AVOID ISSUE WITH VANILLA TEXTURED PARTICLES FabricParticleTypes.simple() ); @@ -53,7 +49,7 @@ private static ParticleEffect registerParticleTypeForEffect(StatusEffect statusE return type; } - private static Identifier getModEffectId(StatusEffect statusEffect, Identifier effectId) { + private static ResourceLocation getModEffectId(MobEffect statusEffect, ResourceLocation effectId) { boolean bl = MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE.containsValue(statusEffect); return ParticleEffects.id(effectId.getPath() + (bl ? "_new" : "")); } @@ -62,15 +58,15 @@ public static void onInitialize() { //-----------------------------------------------------// // SWAP OLD PARTICLE TYPE OF STATUS EFFECTS TO NEW ONE // //-----------------------------------------------------// - for (Reference reference : Registries.STATUS_EFFECT.streamEntries().toList()) { - StatusEffect statusEffect = reference.value(); - Identifier id = reference.registryKey().getValue(); + for (Reference reference : BuiltInRegistries.MOB_EFFECT.listElements().toList()) { + MobEffect statusEffect = reference.value(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } // REGISTER NEW PARTICLE TYPE (AND EFFECT) - ParticleEffect type = ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); + ParticleOptions type = ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); // SWAP PARTICLE TYPES StatusEffectUtils.swapParticle(statusEffect, type); @@ -80,14 +76,14 @@ public static void onInitialize() { // REGISTER EACH POTION COLOR TO LIST POTION EFFECTS // // POTION COLOR = MIXED COLORS OF EFFECTS // //---------------------------------------------------// - for (Reference reference : Registries.POTION.streamEntries().toList()) { + for (Reference reference : BuiltInRegistries.POTION.listElements().toList()) { Potion potion = reference.value(); - Identifier id = reference.registryKey().getValue(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } - List effects = potion.getEffects(); + List effects = potion.getEffects(); //? =1.20.1 { /*int color = ArgbUtils.getColorWithoutAlpha(StatusEffectUtils.getColor(effects)); @@ -105,20 +101,20 @@ public static void onInitialize() { .toList(); *///?} else { - OptionalInt optional = net.minecraft.component.type.PotionContentsComponent.mixColors(effects); + OptionalInt optional = net.minecraft.world.item.alchemy.PotionContents.getColorOptional(effects); if (optional.isEmpty()) { continue; } int color = ArgbUtils.getColorWithoutAlpha(optional.getAsInt()); - List particleEffects = effects.stream() - .map(StatusEffectInstance::getEffectType) - .map(RegistryEntry::value) + List particleEffects = effects.stream() + .map(MobEffectInstance::getEffect) + .map(Holder::value) .flatMap((effect) -> { - ParticleEffect particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); if (particleEffect == null) { - ParticleEffects.LOGGER.error("[DEV/Potion Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getName().getString()); + ParticleEffects.LOGGER.error("[DEV/Potion Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getDisplayName().getString()); return Stream.empty(); } return Stream.of(particleEffect); @@ -133,28 +129,28 @@ public static void onInitialize() { // NOT ALL EFFECTS CAN BE FOUND IN POTIONS, SO, WE ALSO // // NEED TO REGISTER EACH EFFECT COLOR TO THEIR EFFECT // //------------------------------------------------------// - for (Reference reference : Registries.STATUS_EFFECT.streamEntries().toList()) { - StatusEffect statusEffect = reference.value(); - Identifier id = reference.registryKey().getValue(); + for (Reference reference : BuiltInRegistries.MOB_EFFECT.listElements().toList()) { + MobEffect statusEffect = reference.value(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } int color = ArgbUtils.getColorWithoutAlpha(statusEffect.getColor()); - ParticleEffect particleEffect = ((PEStatusEffect) statusEffect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) statusEffect).particleEffects$getParticleEffect(); // WE SET PARTICLE EFFECT(AND TYPE) AT FIRST PHASE // WHEN WE REGISTERED NEW PARTICLE TYPE if (particleEffect == null) { - ParticleEffects.LOGGER.error("[DEV/Effect Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping its registration.", color, statusEffect.getName().getString()); + ParticleEffects.LOGGER.error("[DEV/Effect Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping its registration.", color, statusEffect.getDisplayName().getString()); continue; } - List effects = COLOR_TO_PARTICLES_MAP.get(color); + List effects = COLOR_TO_PARTICLES_MAP.get(color); if (effects != null) { if (ParticleEffects.getConfig().isDebugLogEnabled()) { - ParticleEffects.LOGGER.warn("[DEV/Effect Registration] Found registered effects for color {} from {} effect, skipping its registration. If you just mod user, ignore it.", color, statusEffect.getName().getString()); + ParticleEffects.LOGGER.warn("[DEV/Effect Registration] Found registered effects for color {} from {} effect, skipping its registration. If you just mod user, ignore it.", color, statusEffect.getDisplayName().getString()); } } else { COLOR_TO_PARTICLES_MAP.put(color, List.of(particleEffect)); @@ -163,40 +159,40 @@ public static void onInitialize() { } public static void onInitializeClient() { - for (ParticleEffect type : REGISTERED_PARTICLE_TYPES) { + for (ParticleOptions type : REGISTERED_PARTICLE_TYPES) { ParticleFactoryRegistry.getInstance().register((/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/) type, TexturedParticleFactory::new); } } - private static HashMap getMinecraftEffectWidthTexturedParticles() { + private static HashMap getMinecraftEffectWidthTexturedParticles() { //? =1.20.1 { /*return new HashMap<>(); *///?} else { - HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(); - map.put(ParticleTypes.ITEM_SLIME, StatusEffects.OOZING.value()); - map.put(ParticleTypes.ITEM_COBWEB, StatusEffects.WEAVING.value()); - map.put(ParticleTypes.INFESTED, StatusEffects.INFESTED.value()); - map.put(ParticleTypes.TRIAL_OMEN, StatusEffects.TRIAL_OMEN.value()); - map.put(ParticleTypes.RAID_OMEN, StatusEffects.RAID_OMEN.value()); - map.put(ParticleTypes.SMALL_GUST, StatusEffects.WIND_CHARGED.value()); + map.put(ParticleTypes.ITEM_SLIME, MobEffects.OOZING.value()); + map.put(ParticleTypes.ITEM_COBWEB, MobEffects.WEAVING.value()); + map.put(ParticleTypes.INFESTED, MobEffects.INFESTED.value()); + map.put(ParticleTypes.TRIAL_OMEN, MobEffects.TRIAL_OMEN.value()); + map.put(ParticleTypes.RAID_OMEN, MobEffects.RAID_OMEN.value()); + map.put(ParticleTypes.SMALL_GUST, MobEffects.WIND_CHARGED.value()); return map; //?} } - public static StatusEffect getVanillaStatusEffectByStatusEffect(ParticleEffect parameters) { + public static MobEffect getVanillaStatusEffectByStatusEffect(ParticleOptions parameters) { return MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE.get(parameters); } - public static void processSplashPotionStageOne(LocalRef> localParticleEffects, int color) { + public static void processSplashPotionStageOne(LocalRef> localParticleEffects, int color) { localParticleEffects.set(null); if (!ParticleEffects.getConfig().isModEnabled()) { return; } - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { return; } @@ -204,14 +200,14 @@ public static void processSplashPotionStageOne(LocalRef> lo localParticleEffects.set(list); } - public static Particle processSplashPotionStageTwo(@Nullable World world, ParticleEffect original, Function function, LocalRef> localParticleEffects, int color) { + public static Particle processSplashPotionStageTwo(@Nullable Level world, ParticleOptions original, Function function, LocalRef> localParticleEffects, int color) { Supplier particleSupplier = () -> function.apply(original); if (!ParticleEffects.getConfig().isModEnabled()) { return markDebugData(21, particleSupplier); } - List list = localParticleEffects.get(); + List list = localParticleEffects.get(); if (list == null) { return markDebugData(22, particleSupplier); } @@ -221,7 +217,7 @@ public static Particle processSplashPotionStageTwo(@Nullable World world, Partic if (world == null) { return markDebugData(24, particleSupplier); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, world.getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, world.getRandom()); if (particleEffect == null) { return markDebugData(25, particleSupplier); } @@ -234,7 +230,7 @@ public static Particle processSplashPotionStageTwo(@Nullable World world, Partic return apply; } - public static Particle swapParticle(World world, ParticleEffect original, Function function, Supplier originalCall/*? if =1.20.1 {*/, double x, double y, double z /*?}*/) { + public static Particle swapParticle(Level world, ParticleOptions original, Function function, Supplier originalCall/*? if =1.20.1 {*//*, double x, double y, double z *//*?}*/) { if (!ParticleEffects.getConfig().isModEnabled()) { return markDebugData(10, originalCall); } @@ -254,10 +250,10 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi *///?} else { int color; - if (original instanceof /*? if >=1.21.8 {*/ TintedParticleEffect /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER + if (original instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER color = effect.color; } else { - StatusEffect statusEffect = ParticleEffectsManager.getVanillaStatusEffectByStatusEffect(original); + MobEffect statusEffect = ParticleEffectsManager.getVanillaStatusEffectByStatusEffect(original); color = statusEffect == null ? 0 : ArgbUtils.getColorWithoutAlpha(statusEffect.getColor()); } @@ -266,7 +262,7 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi } //?} - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { return markDebugData(14, originalCall); } @@ -277,7 +273,7 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi return markDebugData(16, originalCall); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, world.getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, world.getRandom()); if (particleEffect == null) { return markDebugData(17, originalCall); } diff --git a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java index a21cf7d..0cc4b9d 100644 --- a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java @@ -1,25 +1,21 @@ package net.lopymine.pe.mixin; -import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.injector.wrapoperation.*; -import java.util.function.Supplier; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.client.particle.Particle; -import net.minecraft.entity.*; -import net.minecraft.particle.*; -import net.minecraft.world.World; +import net.minecraft.core.particles.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; import net.lopymine.pe.manager.ParticleEffectsManager; import net.lopymine.pe.utils.*; import java.util.List; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(AreaEffectCloudEntity.class) +@Mixin(AreaEffectCloud.class) public abstract class AreaEffectCloudEntityMixin extends Entity { @Unique @@ -30,14 +26,14 @@ public abstract class AreaEffectCloudEntityMixin extends Entity { //? =1.20.1 /*@Shadow public abstract int getColor();*/ - public AreaEffectCloudEntityMixin(EntityType type, World world) { + public AreaEffectCloudEntityMixin(EntityType type, Level world) { super(type, world); } // LINGERING POTION - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/AreaEffectCloudEntity;getParticleType()Lnet/minecraft/particle/ParticleEffect;"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) - private ParticleEffect swapParticleType(AreaEffectCloudEntity instance, Operation original) { - ParticleEffect originalParticle = original.call(instance); + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/AreaEffectCloud;getParticle()Lnet/minecraft/core/particles/ParticleOptions;"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) + private ParticleOptions swapParticleType(AreaEffectCloud instance, Operation original) { + ParticleOptions originalParticle = original.call(instance); if (!ParticleEffects.getConfig().isModEnabled()) { return this.markDebugData(31, originalParticle); @@ -46,13 +42,13 @@ private ParticleEffect swapParticleType(AreaEffectCloudEntity instance, Operatio //? =1.20.1 { /*int color = this.getColor(); *///?} else { - if (!(originalParticle instanceof /*? if >=1.21.8 {*/ TintedParticleEffect /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect)) { + if (!(originalParticle instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect)) { return this.markDebugData(32, originalParticle); } int color = effect.color; //?} - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { return this.markDebugData(33, originalParticle); } @@ -60,7 +56,7 @@ private ParticleEffect swapParticleType(AreaEffectCloudEntity instance, Operatio return this.markDebugData(34, originalParticle); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ /*getEntityWorld *//*?} else {*/ getWorld /*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ level /*?} else {*/ /*getWorld *//*?}*/().getRandom()); if (particleEffect == null) { return this.markDebugData(35, originalParticle); } @@ -85,7 +81,7 @@ private void resetParticle(CallbackInfo ci) { } @Unique - private ParticleEffect markDebugData(int data, ParticleEffect originalParticle) { + private ParticleOptions markDebugData(int data, ParticleOptions originalParticle) { ParticleCaptures.setDebugData(data); this.needResetDebugData = true; return originalParticle; diff --git a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java index 57aad6e..f8c0c1b 100644 --- a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java @@ -6,26 +6,25 @@ import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.manager.ParticleEffectsManager; import net.lopymine.pe.utils.*; -import net.minecraft.entity.*; -import net.minecraft.entity.projectile.ArrowEntity; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ArrowEntity.class) +@Mixin(Arrow.class) public abstract class ArrowEntityMixin extends Entity { - public ArrowEntityMixin(EntityType type, World world) { + public ArrowEntityMixin(EntityType type, Level world) { super(type, world); } - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/World;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "spawnParticles") - private void markParticleFromArrow(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Local(ordinal = 1) int color) { + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "makeParticle") + private void markParticleFromArrow(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Local(ordinal = 1) int color) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { this.markDebugData(41, originalCall); return; @@ -35,7 +34,7 @@ private void markParticleFromArrow(World instance, ParticleEffect parameters, do return; } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ /*getEntityWorld *//*?} else {*/ getWorld /*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ level /*?} else {*/ /*getWorld *//*?}*/().getRandom()); if (particleEffect == null) { this.markDebugData(44, originalCall); return; diff --git a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java index 4be5b81..780024c 100644 --- a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java @@ -2,25 +2,27 @@ //? if >=1.21.9 { -/*import net.lopymine.pe.debug.DebugParticleInfoRenderer; +import net.lopymine.pe.debug.DebugParticleInfoRenderer; +import net.minecraft.client.Camera; import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.state.ParticleGroupRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(BillboardParticleRenderer.class) -public abstract class BillboardParticleRendererMixin extends ParticleRenderer { +@Mixin(QuadParticleGroup.class) +public abstract class BillboardParticleRendererMixin extends ParticleGroup { - public BillboardParticleRendererMixin(ParticleManager particleManager) { + public BillboardParticleRendererMixin(ParticleEngine particleManager) { super(particleManager); } - @Inject(at = @At("HEAD"), method = "render") - private void renderDebugInfo(Frustum frustum, Camera camera, float tickProgress, CallbackInfoReturnable cir) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickProgress, this.particles); + @Inject(at = @At("HEAD"), method = "extractRenderState") + private void renderDebugInfo(Frustum frustum, Camera camera, float tickProgress, CallbackInfoReturnable cir) { + DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickProgress, this.particles); } } -*///?} +//?} diff --git a/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java b/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java index cf1fd71..71a12b7 100644 --- a/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java @@ -1,24 +1,24 @@ package net.lopymine.pe.mixin; //? if >=1.21.9 { -/*import com.llamalad7.mixinextras.injector.wrapoperation.*; +import com.llamalad7.mixinextras.injector.wrapoperation.*; import java.util.function.Function; import net.lopymine.pe.manager.ParticleEffectsManager; import net.minecraft.client.particle.*; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(ClientWorld.class) +@Mixin(ClientLevel.class) public class ClientWorldMixin { - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleManager;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "addParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)V") - private Particle swapParticle(ParticleManager instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { - Function function = (effect) -> original.call(instance, effect, x, y, z, velocityX, velocityY, velocityZ); - return ParticleEffectsManager.swapParticle(((World) (Object) this), parameters, function, () -> function.apply(parameters)); + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleEngine;createParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "doAddParticle(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)V") + private Particle swapParticle(ParticleEngine instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + Function function = (effect) -> original.call(instance, effect, x, y, z, velocityX, velocityY, velocityZ); + return ParticleEffectsManager.swapParticle(((Level) (Object) this), parameters, function, () -> function.apply(parameters)); } } -*///?} +//?} diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java index 287d541..8a1b242 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java @@ -1,29 +1,16 @@ package net.lopymine.pe.mixin; import com.llamalad7.mixinextras.injector.wrapoperation.*; -import com.llamalad7.mixinextras.sugar.Local; -import com.mojang.blaze3d.systems.RenderSystem; -import java.util.*; -import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.capture.ParticleCaptures; -import net.lopymine.pe.debug.DebugParticleInfoRenderer; import net.lopymine.pe.utils.*; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.font.TextRenderer.TextLayerType; import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.render.VertexConsumerProvider.Immediate; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.random.Random; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.util.RandomSource; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.At.Shift; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ParticleManager.class) +@Mixin(ParticleEngine.class) public class ParticleManagerMixin { //? if =1.20.1 { @@ -33,11 +20,11 @@ public class ParticleManagerMixin { *///?} //? if >=1.21.4 && <=1.21.8 { - @Inject(at = @At(value = "TAIL"), method = "renderParticles(Lnet/minecraft/client/render/Camera;FLnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/particle/ParticleTextureSheet;Ljava/util/Queue;)V") + /*@Inject(at = @At(value = "TAIL"), method = "renderParticles(Lnet/minecraft/client/render/Camera;FLnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/particle/ParticleTextureSheet;Ljava/util/Queue;)V") private static void renderDebugInfo(Camera camera, float tickProgress, Immediate vertexConsumers, ParticleTextureSheet sheet, Queue particles, CallbackInfo ci) { DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickProgress, particles); } - //?} elif >=1.21 && <=1.21.8 { + *///?} elif >=1.21 && <=1.21.8 { /*@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferRenderer;drawWithGlobalProgram(Lnet/minecraft/client/render/BuiltBuffer;)V", shift = Shift.AFTER), method = "renderParticles") private void renderDebugInfo(LightmapTextureManager lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local Queue particles) { DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickDelta, particles); @@ -52,14 +39,14 @@ private void renderDebugInfo(MatrixStack matrices, Immediate vertexConsumers, Li *///?} //? if >=1.21.9 { - /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/util/math/random/Random;)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") - private Particle markParticle(ParticleFactory instance, ParticleEffect t, ClientWorld clientWorld, double a, double b, double c, double d, double e, double v, Random random, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleProvider;createParticle(Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/util/RandomSource;)Lnet/minecraft/client/particle/Particle;"), method = "makeParticle") + private Particle markParticle(ParticleProvider instance, ParticleOptions t, ClientLevel clientWorld, double a, double b, double c, double d, double e, double v, RandomSource random, Operation original) { Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v, random); - *///?} else { - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") + //?} else { + /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") private Particle markParticle(ParticleFactory instance, ParticleEffect t, ClientWorld clientWorld, double a, double b, double c, double d, double e, double v, Operation original) { Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v); - //?} + *///?} Integer debugData = ParticleCaptures.getDebugData(); if (debugData != null && particle != null) { ((PEDebugParticle) particle).particleEffects$setDebugData(debugData); diff --git a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java index 4092ea8..6a6b08f 100644 --- a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java @@ -4,18 +4,18 @@ import com.llamalad7.mixinextras.injector.wrapoperation.*; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.entity.LivingEntity; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(LivingEntity.class) public class SecondLivingEntityMixin { - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/World;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" /*?} else {*/ - /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "tickStatusEffects") - private void markParticle(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ + /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "tickEffects") + private void markParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { ParticleCaptures.setParticle(parameters); original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); ParticleCaptures.setParticle(null); diff --git a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java index 0056b53..d6b1969 100644 --- a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java @@ -1,7 +1,7 @@ package net.lopymine.pe.mixin; import net.lopymine.pe.utils.*; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; import org.spongepowered.asm.mixin.*; @Mixin(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/.class) diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java index 2458995..83a4e59 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java @@ -1,23 +1,23 @@ package net.lopymine.pe.mixin; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.effect.MobEffect; import org.spongepowered.asm.mixin.*; import net.lopymine.pe.utils.PEStatusEffect; -@Mixin(StatusEffect.class) +@Mixin(MobEffect.class) public class StatusEffectMixin implements PEStatusEffect { @Unique - private ParticleEffect particleEffect; + private ParticleOptions particleEffect; @Override - public void particleEffects$setParticleEffect(ParticleEffect particleEffect) { + public void particleEffects$setParticleEffect(ParticleOptions particleEffect) { this.particleEffect = particleEffect; } - public ParticleEffect particleEffects$getParticleEffect() { + public ParticleOptions particleEffects$getParticleEffect() { return this.particleEffect; } } diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java index e1bae9b..d7b41ab 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java @@ -1,16 +1,16 @@ package net.lopymine.pe.mixin; import com.llamalad7.mixinextras.injector.wrapoperation.*; -import net.minecraft.entity.effect.*; +import net.minecraft.world.effect.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(StatusEffects.class) +@Mixin(MobEffects.class) public class StatusEffectsMixin { //? if >=1.21 { - @WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/entity/effect/StatusEffectCategory;I)Lnet/minecraft/entity/effect/SaturationStatusEffect;"), method = "") - private static SaturationStatusEffect fixColor(StatusEffectCategory statusEffectCategory, int i, Operation original) { + @WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/world/effect/MobEffectCategory;I)Lnet/minecraft/world/effect/SaturationMobEffect;"), method = "") + private static SaturationMobEffect fixColor(MobEffectCategory statusEffectCategory, int i, Operation original) { return original.call(statusEffectCategory, 16262180); } //?} else { diff --git a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java index 6213728..4c55d73 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java @@ -5,12 +5,11 @@ import com.llamalad7.mixinextras.injector.wrapoperation.*; import com.llamalad7.mixinextras.sugar.*; import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import java.util.function.Function; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.world.*; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.client.renderer.LevelEventHandler; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -20,32 +19,32 @@ import java.util.List; @Debug(export = true) -@Mixin(WorldEventHandler.class) +@Mixin(LevelEventHandler.class) public class WorldEventHandlerMixin { //? if >=1.21.9 { - /*@Shadow - @Final - private ClientWorld world; - *///?} else { @Shadow @Final + private ClientLevel level; + //?} else { + /*@Shadow + @Final private World world; - //?} + *///?} // SPLASH POTION - @Inject(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;")) - private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { + @Inject(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;atBottomCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;")) + private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { ParticleEffectsManager.processSplashPotionStageOne(localParticleEffects, data); } // SPLASH POTION //? if >=1.21.9 { - /*@WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V", ordinal = 4)) - private void swapParticles(ClientWorld instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + @WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V", ordinal = 4)) + private void swapParticles(ClientLevel instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { @SuppressWarnings("unused") Particle particle = ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> { original.call(instance, particleEffect, x, y, z, velocityX, velocityY, velocityZ); @@ -55,8 +54,8 @@ private void swapParticles(ClientWorld instance, ParticleEffect parameters, doub color ); } - *///?} else { - @WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) + //?} else { + /*@WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) private Particle swapParticles(net.minecraft.client.render.WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { return ParticleEffectsManager.processSplashPotionStageTwo( this.world, @@ -66,7 +65,7 @@ private Particle swapParticles(net.minecraft.client.render.WorldRenderer instanc color ); } - //?} + *///?} } //?} diff --git a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java index da6465d..083e2c0 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java @@ -1,7 +1,7 @@ package net.lopymine.pe.mixin; //? if <=1.21.8 { -import com.llamalad7.mixinextras.injector.wrapoperation.*; +/*import com.llamalad7.mixinextras.injector.wrapoperation.*; import com.llamalad7.mixinextras.sugar.*; import com.llamalad7.mixinextras.sugar.ref.LocalRef; @@ -27,7 +27,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //? =1.20.1 -/*import net.minecraft.util.math.ColorHelper.Argb;*/ +/^import net.minecraft.util.math.ColorHelper.Argb;^/ @Debug(export = true) @Mixin(WorldRenderer.class) @@ -38,7 +38,7 @@ public class WorldRendererMixin { private ClientWorld world; //? <=1.21.1 { - /*// SPLASH POTION + /^// SPLASH POTION @Inject(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;")) private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { ParticleEffectsManager.processSplashPotionStageOne(localParticleEffects, data); @@ -54,7 +54,7 @@ private Particle swapParticles(WorldRenderer instance, ParticleEffect parameters localParticleEffects, color); } - *///?} + ^///?} // ENTITY PARTICLES @@ -66,10 +66,10 @@ private Particle swapParticle(WorldRenderer instance, ParticleEffect parameters, parameters, function, () -> function.apply(parameters) - /*? if =1.20.1 {*/, velocityX, velocityY, velocityZ /*?}*/ + /^? if =1.20.1 {^//^, velocityX, velocityY, velocityZ ^//^?}^/ ); } } -//?} +*///?} diff --git a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java index 1fee7b3..b08eeb8 100644 --- a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java +++ b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java @@ -2,10 +2,10 @@ import com.google.common.collect.Sets; import net.minecraft.SharedConstants; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.*; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.util.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.*; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.Util; import net.lopymine.pe.client.ParticleEffectsClient; import net.lopymine.pe.utils.ModMenuUtils; @@ -24,13 +24,13 @@ private NoConfigLibraryScreen() { @Contract("_ -> new") public static @NotNull Screen createScreen(Screen parent) { - return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), ScreenTexts.YES, ScreenTexts.BACK); + return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), CommonComponents.GUI_YES, CommonComponents.GUI_BACK); } private static void onConfirm(boolean open, Screen parent) { if (open) { try { - String url = NoConfigLibraryScreen.YACL_MODRINTH_LINK + SharedConstants.getGameVersion()./*? if >=1.21.6 {*/ name() /*?} else {*//*getName()*//*?}*/; + String url = NoConfigLibraryScreen.YACL_MODRINTH_LINK + SharedConstants.getCurrentVersion()./*? if >=1.21.6 {*/ name() /*?} else {*//*getName()*//*?}*/; URI link = new URI(url); String string = link.getScheme(); if (string == null) { @@ -39,12 +39,12 @@ private static void onConfirm(boolean open, Screen parent) { if (!NoConfigLibraryScreen.ALLOWED_PROTOCOLS.contains(string.toLowerCase(Locale.ROOT))) { throw new URISyntaxException(url, "Unsupported protocol: " + string.toLowerCase(Locale.ROOT)); } - Util.getOperatingSystem().open(link); + Util.getPlatform().openUri(link); } catch (URISyntaxException e) { ParticleEffectsClient.LOGGER.error("Can't open YACL Modrinth page:", e); } } else { - MinecraftClient.getInstance().setScreen(parent); + Minecraft.getInstance().setScreen(parent); } } } diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java b/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java index b472db5..5b8d776 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java @@ -1,8 +1,8 @@ package net.lopymine.pe.modmenu.yacl; import dev.isxander.yacl3.api.ConfigCategory; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.client.ParticleEffectsClient; @@ -14,7 +14,7 @@ public class YACLConfigurationScreen { - private static final Function ENABLED_OR_DISABLE_FORMATTER = ModMenuUtils.getEnabledOrDisabledFormatter(); + private static final Function ENABLED_OR_DISABLE_FORMATTER = ModMenuUtils.getEnabledOrDisabledFormatter(); private YACLConfigurationScreen() { throw new IllegalStateException("Screen class"); diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java index 7994251..1e8c9fb 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java @@ -2,7 +2,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.ConfigCategory.Builder; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import net.lopymine.pe.utils.ModMenuUtils; @@ -12,7 +12,7 @@ public class SimpleCategoryBuilder { private SimpleCategoryBuilder(String categoryId) { String categoryKey = ModMenuUtils.getCategoryKey(categoryId); - Text categoryName = ModMenuUtils.getName(categoryKey); + Component categoryName = ModMenuUtils.getName(categoryKey); this.builder = ConfigCategory.createBuilder().name(categoryName); } diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java index 93e5c3d..e592112 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java @@ -2,7 +2,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.OptionGroup.Builder; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import net.lopymine.pe.utils.ModMenuUtils; @@ -12,8 +12,8 @@ public class SimpleGroupBuilder { public SimpleGroupBuilder(String groupId) { String groupKey = ModMenuUtils.getGroupKey(groupId); - Text groupName = ModMenuUtils.getName(groupKey); - Text description = ModMenuUtils.getDescription(groupKey); + Component groupName = ModMenuUtils.getName(groupKey); + Component description = ModMenuUtils.getDescription(groupKey); this.groupBuilder = OptionGroup.createBuilder() .name(groupName) diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java index 6dcc54b..1b110f6 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java @@ -3,7 +3,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.YetAnotherConfigLib.Builder; import dev.isxander.yacl3.gui.YACLScreen; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import net.lopymine.pe.utils.ModMenuUtils; diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java index 06a5476..cbd73f1 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java @@ -2,12 +2,12 @@ import lombok.*; import net.minecraft.client.particle.*; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; import net.lopymine.pe.utils.*; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; @Setter @Getter @@ -15,9 +15,9 @@ public class TexturedParticle extends SpellParticle { private int holderColor; - protected TexturedParticle(ClientWorld clientWorld, double d, double e, double f, double g, double h, double i, SpriteProvider spriteProvider, Random random) { + protected TexturedParticle(ClientLevel clientWorld, double d, double e, double f, double g, double h, double i, SpriteSet spriteProvider, RandomSource random) { super(clientWorld, d, e, f, g, h, i, spriteProvider); - super.setSprite(spriteProvider/*? if >=1.21.9 {*//*.getSprite(random) *//*?}*/); + super.setSprite(spriteProvider/*? if >=1.21.9 {*/.get(random) /*?}*/); } @Override @@ -26,11 +26,11 @@ public void setColor(float red, float green, float blue) { } //? if <=1.21.8 { - @Override + /*@Override public void setSpriteForAge(SpriteProvider spriteProvider) { } - //?} + *///?} @Override public void setAlpha(float alpha) { diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java index e97c584..4ac6628 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java @@ -1,23 +1,23 @@ package net.lopymine.pe.particle; import net.minecraft.client.particle.*; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; import net.lopymine.pe.utils.*; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; -public class TexturedParticleFactory implements ParticleFactory=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/> { +public class TexturedParticleFactory implements ParticleProvider=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/> { - private final SpriteProvider spriteProvider; + private final SpriteSet spriteProvider; - public TexturedParticleFactory(SpriteProvider spriteProvider) { + public TexturedParticleFactory(SpriteSet spriteProvider) { this.spriteProvider = spriteProvider; } @Override - public Particle createParticle(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/ effect, ClientWorld clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*//*, Random random *//*?}*/) { - TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*//*random *//*?} else {*/ Random.create() /*?}*/); + public Particle createParticle(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/ effect, ClientLevel clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*/, RandomSource random /*?}*/) { + TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*/random /*?} else {*/ /*Random.create() *//*?}*/); int color = ((PEType) effect).particleEffects$getColor(); texturedParticle.setAlpha((float) ArgbUtils.getAlpha(color) / 255F); texturedParticle.setHolderColor(color); diff --git a/src/main/java/net/lopymine/pe/utils/ListUtils.java b/src/main/java/net/lopymine/pe/utils/ListUtils.java index a1ec179..e752918 100644 --- a/src/main/java/net/lopymine/pe/utils/ListUtils.java +++ b/src/main/java/net/lopymine/pe/utils/ListUtils.java @@ -1,6 +1,6 @@ package net.lopymine.pe.utils; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; import java.util.List; import org.jetbrains.annotations.Nullable; @@ -8,10 +8,10 @@ public class ListUtils { @Nullable - public static T getRandomElement(List list, Random random) { + public static T getRandomElement(List list, RandomSource random) { if (list.isEmpty()) { return null; } - return list.get(random.nextBetween(0, list.size() - 1)); + return list.get(random.nextIntBetweenInclusive(0, list.size() - 1)); } } diff --git a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java index 3f529c8..63a6544 100644 --- a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java +++ b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java @@ -1,7 +1,7 @@ package net.lopymine.pe.utils; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.modmenu.yacl.simple.SimpleContent; @@ -26,27 +26,27 @@ public static String getGroupKey(String groupId) { return String.format("%s.modmenu.group.%s", ParticleEffects.MOD_ID, groupId); } - public static Text getName(String key) { - return Text.translatable(key + ".name"); + public static Component getName(String key) { + return Component.translatable(key + ".name"); } - public static Text getDescription(String key) { - return Text.translatable(key + ".description"); + public static Component getDescription(String key) { + return Component.translatable(key + ".description"); } - public static Identifier getContentId(SimpleContent content, String optionId) { + public static ResourceLocation getContentId(SimpleContent content, String optionId) { return ParticleEffects.id(String.format("textures/config/%s/%s.%s", content.getFolder(), optionId, content.getFileExtension())); } - public static Text getModTitle() { + public static Component getModTitle() { return ParticleEffects.text("modmenu.title"); } - public static Function getEnabledOrDisabledFormatter() { + public static Function getEnabledOrDisabledFormatter() { return state -> ParticleEffects.text("modmenu.formatter.enabled_or_disabled." + state); } - public static Text getNoConfigScreenMessage() { + public static Component getNoConfigScreenMessage() { return ParticleEffects.text("modmenu.no_config_library_screen.message"); } } diff --git a/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java b/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java index e45a4af..6c91f46 100644 --- a/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java +++ b/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java @@ -1,10 +1,10 @@ package net.lopymine.pe.utils; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; public interface PEStatusEffect { - void particleEffects$setParticleEffect(ParticleEffect particleEffect); + void particleEffects$setParticleEffect(ParticleOptions particleEffect); - ParticleEffect particleEffects$getParticleEffect(); + ParticleOptions particleEffects$getParticleEffect(); } diff --git a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java index 1cffee0..2175c7f 100644 --- a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java +++ b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java @@ -1,15 +1,12 @@ package net.lopymine.pe.utils; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; -import net.fabricmc.loader.api.FabricLoader; - -import java.util.Collection; +import net.minecraft.world.effect.MobEffect; public class StatusEffectUtils { - public static void swapParticle(StatusEffect statusEffect, ParticleEffect particleEffect) { + public static void swapParticle(MobEffect statusEffect, ParticleOptions particleEffect) { ((PEStatusEffect) statusEffect).particleEffects$setParticleEffect(particleEffect); } diff --git a/src/main/resources/aws/1.20.1.accesswidener b/src/main/resources/aws/1.20.1.accesswidener index 1d9c3bf..3fb39d8 100644 --- a/src/main/resources/aws/1.20.1.accesswidener +++ b/src/main/resources/aws/1.20.1.accesswidener @@ -1,8 +1,8 @@ accessWidener v2 named # 1.20.1 AW -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D diff --git a/src/main/resources/aws/1.21.1.accesswidener b/src/main/resources/aws/1.21.1.accesswidener index f74095a..af1d792 100644 --- a/src/main/resources/aws/1.21.1.accesswidener +++ b/src/main/resources/aws/1.21.1.accesswidener @@ -1,12 +1,12 @@ accessWidener v2 named # 1.21.1 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D diff --git a/src/main/resources/aws/1.21.2.accesswidener b/src/main/resources/aws/1.21.2.accesswidener index 71ffea9..2e2074a 100644 --- a/src/main/resources/aws/1.21.2.accesswidener +++ b/src/main/resources/aws/1.21.2.accesswidener @@ -1,12 +1,12 @@ accessWidener v2 named # 1.21.2 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D @@ -19,4 +19,4 @@ accessible field net/minecraft/client/particle/Particle prevPosZ D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.3.accesswidener b/src/main/resources/aws/1.21.3.accesswidener index ba9d5ae..2ca248c 100644 --- a/src/main/resources/aws/1.21.3.accesswidener +++ b/src/main/resources/aws/1.21.3.accesswidener @@ -1,12 +1,12 @@ accessWidener v2 named # 1.21.3 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D @@ -19,4 +19,4 @@ accessible field net/minecraft/client/particle/Particle prevPosZ D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.4.accesswidener b/src/main/resources/aws/1.21.4.accesswidener index ab51f67..0027c9c 100644 --- a/src/main/resources/aws/1.21.4.accesswidener +++ b/src/main/resources/aws/1.21.4.accesswidener @@ -1,12 +1,12 @@ accessWidener v2 named # 1.21.4 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D @@ -19,4 +19,4 @@ accessible field net/minecraft/client/particle/Particle prevPosZ D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.5.accesswidener b/src/main/resources/aws/1.21.5.accesswidener index 233738f..8641deb 100644 --- a/src/main/resources/aws/1.21.5.accesswidener +++ b/src/main/resources/aws/1.21.5.accesswidener @@ -1,22 +1,22 @@ accessWidener v2 named # 1.21.5 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.6.accesswidener b/src/main/resources/aws/1.21.6.accesswidener index cf07f4a..a30b222 100644 --- a/src/main/resources/aws/1.21.6.accesswidener +++ b/src/main/resources/aws/1.21.6.accesswidener @@ -1,22 +1,22 @@ accessWidener v2 named # 1.21.6 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.7.accesswidener b/src/main/resources/aws/1.21.7.accesswidener index 77253e8..af0b8d9 100644 --- a/src/main/resources/aws/1.21.7.accesswidener +++ b/src/main/resources/aws/1.21.7.accesswidener @@ -1,22 +1,22 @@ accessWidener v2 named # 1.21.7 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.8.accesswidener b/src/main/resources/aws/1.21.8.accesswidener index f9370c8..496a735 100644 --- a/src/main/resources/aws/1.21.8.accesswidener +++ b/src/main/resources/aws/1.21.8.accesswidener @@ -1,22 +1,22 @@ accessWidener v2 named # 1.21.8 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/TintedParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F accessible field net/minecraft/client/particle/Particle red F accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file +accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.9.accesswidener b/src/main/resources/aws/1.21.9.accesswidener index 7f854f3..87eeff3 100644 --- a/src/main/resources/aws/1.21.9.accesswidener +++ b/src/main/resources/aws/1.21.9.accesswidener @@ -1,25 +1,25 @@ accessWidener v2 named # 1.21.9 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/TintedParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D -accessible field net/minecraft/client/particle/BillboardParticle alpha F -accessible field net/minecraft/client/particle/BillboardParticle red F -accessible field net/minecraft/client/particle/BillboardParticle green F -accessible field net/minecraft/client/particle/BillboardParticle blue F +accessible field net/minecraft/client/particle/SingleQuadParticle alpha F +accessible field net/minecraft/client/particle/SingleQuadParticle rCol F +accessible field net/minecraft/client/particle/SingleQuadParticle gCol F +accessible field net/minecraft/client/particle/SingleQuadParticle bCol F -accessible field net/minecraft/client/render/WorldRenderer entityRenderDispatcher Lnet/minecraft/client/render/command/RenderDispatcher; -accessible field net/minecraft/client/render/WorldRenderer worldRenderState Lnet/minecraft/client/render/state/WorldRenderState; \ No newline at end of file +accessible field net/minecraft/client/renderer/LevelRenderer featureRenderDispatcher Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher; +accessible field net/minecraft/client/renderer/LevelRenderer levelRenderState Lnet/minecraft/client/renderer/state/LevelRenderState; diff --git a/src/main/resources/aws/1.21.accesswidener b/src/main/resources/aws/1.21.accesswidener index 4672c8f..a5a2667 100644 --- a/src/main/resources/aws/1.21.accesswidener +++ b/src/main/resources/aws/1.21.accesswidener @@ -1,12 +1,12 @@ accessWidener v2 named # 1.21 AW -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect +accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D diff --git a/src/main/resources/particle-effects.mixins.json5 b/src/main/resources/particle-effects.mixins.json5 index 9f70dbe..85eb4ce 100644 --- a/src/main/resources/particle-effects.mixins.json5 +++ b/src/main/resources/particle-effects.mixins.json5 @@ -13,11 +13,11 @@ /*? !1.20.1*/ "SecondLivingEntityMixin", /*? >=1.21.9*/ - /*"BillboardParticleRendererMixin",*/ + "BillboardParticleRendererMixin", /*? >=1.21.9*/ - /*"ClientWorldMixin",*/ + "ClientWorldMixin", /*? <=1.21.8*/ - "WorldRendererMixin", + /*"WorldRendererMixin",*/ "StatusEffectsMixin", "AreaEffectCloudEntityMixin", "StatusEffectMixin", diff --git a/stonecutter.gradle b/stonecutter.gradle index b6713a2..9f38b57 100644 --- a/stonecutter.gradle +++ b/stonecutter.gradle @@ -2,4 +2,4 @@ plugins { id "dev.kikugie.stonecutter" id "net.lopymine.mossy-plugin-stonecutter" } -stonecutter.active "1.21.8" /* [SC] DO NOT EDIT */ \ No newline at end of file +stonecutter.active "1.21.9" /* [SC] DO NOT EDIT */ \ No newline at end of file From 78a6b09e0ebff242c62076ce14ed3cb49a6eb6fe Mon Sep 17 00:00:00 2001 From: LopyMine Date: Sun, 23 Nov 2025 11:44:44 +0300 Subject: [PATCH 2/4] Mojmap migration --- LICENSE | 166 +----------------- gradle.properties | 2 +- .../java/net/lopymine/pe/ParticleEffects.java | 4 + .../pe/client/ParticleEffectsClient.java | 2 + .../pe/debug/DebugParticleInfoRenderer.java | 80 +++++---- .../pe/extension/RegistryExtension.java | 17 ++ .../pe/manager/ParticleEffectsManager.java | 24 +-- .../pe/mixin/AreaEffectCloudEntityMixin.java | 4 +- .../lopymine/pe/mixin/ArrowEntityMixin.java | 4 +- .../mixin/BillboardParticleRendererMixin.java | 4 +- .../lopymine/pe/mixin/LivingEntityMixin.java | 32 ++-- .../pe/mixin/ParticleManagerMixin.java | 39 ++-- .../pe/mixin/SecondLivingEntityMixin.java | 3 +- .../pe/mixin/SimpleParticleTypeMixin.java | 4 +- .../lopymine/pe/mixin/StatusEffectsMixin.java | 4 +- .../pe/mixin/WorldEventHandlerMixin.java | 11 +- .../lopymine/pe/mixin/WorldRendererMixin.java | 48 ++--- .../pe/particle/TexturedParticle.java | 7 +- .../pe/particle/TexturedParticleFactory.java | 8 +- .../lopymine/pe/utils/StatusEffectUtils.java | 36 ++-- src/main/resources/aws/1.20.1.accesswidener | 14 +- src/main/resources/aws/1.21.1.accesswidener | 14 +- src/main/resources/aws/1.21.10.accesswidener | 25 +++ src/main/resources/aws/1.21.2.accesswidener | 22 --- src/main/resources/aws/1.21.3.accesswidener | 22 --- src/main/resources/aws/1.21.4.accesswidener | 14 +- src/main/resources/aws/1.21.5.accesswidener | 8 +- src/main/resources/aws/1.21.6.accesswidener | 8 +- src/main/resources/aws/1.21.7.accesswidener | 8 +- src/main/resources/aws/1.21.8.accesswidener | 6 +- src/main/resources/aws/1.21.accesswidener | 14 +- stonecutter.gradle | 2 +- versions/1.21.10/gradle.properties | 13 ++ versions/1.21.2/gradle.properties | 11 -- versions/1.21.3/gradle.properties | 11 -- 35 files changed, 273 insertions(+), 418 deletions(-) create mode 100644 src/main/java/net/lopymine/pe/extension/RegistryExtension.java create mode 100644 src/main/resources/aws/1.21.10.accesswidener delete mode 100644 src/main/resources/aws/1.21.2.accesswidener delete mode 100644 src/main/resources/aws/1.21.3.accesswidener create mode 100644 versions/1.21.10/gradle.properties delete mode 100644 versions/1.21.2/gradle.properties delete mode 100644 versions/1.21.3/gradle.properties diff --git a/LICENSE b/LICENSE index 153d416..e0ca589 100644 --- a/LICENSE +++ b/LICENSE @@ -1,165 +1 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file +Particle Effects © 2025 by LopyMine & KlashRaick is licensed under CC-BY-ND 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nd/4.0/ \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0e31e62..765a785 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ org.gradle.parallel=true # Mod Properties data.mod_id = particle-effects data.mod_name = Particle Effects -data.mod_version = 1.0.8 +data.mod_version = 1.1.0 data.mod_group = net.lopymine.pe data.mod_maven_group = net.lopymine diff --git a/src/main/java/net/lopymine/pe/ParticleEffects.java b/src/main/java/net/lopymine/pe/ParticleEffects.java index f1e3ece..c033419 100644 --- a/src/main/java/net/lopymine/pe/ParticleEffects.java +++ b/src/main/java/net/lopymine/pe/ParticleEffects.java @@ -17,7 +17,11 @@ public class ParticleEffects implements ModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME); public static ResourceLocation id(String path) { + //? if >=1.21 { return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); + //?} else { + /*return ResourceLocation.tryBuild(MOD_ID, path); + *///?} } public static Component text(String path, Object... args) { diff --git a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java index b5b6f1c..ee411a2 100644 --- a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java +++ b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java @@ -1,5 +1,6 @@ package net.lopymine.pe.client; +import net.lopymine.pe.debug.DebugParticleInfoRenderer; import org.slf4j.*; import net.fabricmc.api.ClientModInitializer; @@ -15,6 +16,7 @@ public class ParticleEffectsClient implements ClientModInitializer { public void onInitializeClient() { LOGGER.info("{} Client Initialized", ParticleEffects.MOD_NAME); ParticleEffectsManager.onInitializeClient(); + DebugParticleInfoRenderer.register(); } } diff --git a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java index da43998..ec04af8 100644 --- a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java +++ b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java @@ -1,10 +1,12 @@ package net.lopymine.pe.debug; +import java.util.Queue; import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.particle.TexturedParticle; import net.lopymine.pe.utils.*; import net.minecraft.client.*; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.Font.DisplayMode; import net.minecraft.client.particle.*; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.renderer.LightTexture; @@ -13,45 +15,59 @@ import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; +//? if =1.20.1 { +/* +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +*/ +//?} + public class DebugParticleInfoRenderer { - public static void renderDebugInfo(PoseStack matrices, Camera camera, float tickProgress, Iterable particles) { + public static void register() { + //? if =1.20.1 { + /*WorldRenderEvents.AFTER_ENTITIES.register((context) -> { + for (Queue value : Minecraft.getInstance().particleEngine.particles.values()) { + for (Particle particle : value) { + DebugParticleInfoRenderer.renderDebugInfo(context.matrixStack(), context.camera(), context.tickDelta(), particle); + } + } + }); + *///?} + } + + public static void renderDebugInfo(PoseStack matrices, Camera camera, float tickProgress, Particle particle) { if (!ParticleEffects.getConfig().isDebugLogEnabled()) { return; } - for (Particle particle : particles) { - Vec3 vec3d = camera.getPosition(); - float x = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ xo /*?} else {*/ /*prevPosX *//*?}*/, particle.x) - vec3d.x()); - float y = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ yo /*?} else {*/ /*prevPosY *//*?}*/, particle.y) - vec3d.y()); - float z = (float) (Mth.lerp(tickProgress, particle./*? if >=1.21.5 {*/ zo /*?} else {*/ /*prevPosZ *//*?}*/, particle.z) - vec3d.z()); - Font textRenderer = Minecraft.getInstance().font; - - matrices.pushPose(); - matrices.translate(x, y + 0.5D, z); - //? if <=1.21.8 { - /*matrices.multiply(camera.getRotation()); - matrices.scale(/^? if =1.20.1 {^//^ - ^//^?}^/0.015F, -0.015F, 0.015F); - int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - *///?} + Vec3 vec3d = camera.getPosition(); + float x = (float) (Mth.lerp(tickProgress, particle.xo, particle.x) - vec3d.x()); + float y = (float) (Mth.lerp(tickProgress, particle.yo, particle.y) - vec3d.y()); + float z = (float) (Mth.lerp(tickProgress, particle.zo, particle.z) - vec3d.z()); + Font textRenderer = Minecraft.getInstance().font; - String[] text = getDebugInfo(particle); + matrices.pushPose(); + matrices.translate(x, y + 0.5D, z); + //? if <=1.21.8 { + /*matrices.mulPose(camera.rotation()); + matrices.scale(/^? if =1.20.1 {^/ /^- ^//^?}^/0.015F, -0.015F, 0.015F); + int opacity = (int) (Minecraft.getInstance().options.getBackgroundOpacity(0.25F) * 255.0F) << 24; + *///?} - int yOffset = 0; - for (String line : text) { - //? if <=1.21.8 { - /*float f = (float) (-textRenderer.getWidth(line)) / 2.0F; - *///?} - //? if >=1.21.9 { - Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), true, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); - //?} else { - /*textRenderer.draw(line, f, (float) -yOffset, -1, false, matrices.peek().getPositionMatrix(), MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(), net.minecraft.client.font.TextRenderer.TextLayerType.NORMAL, opacity, LightmapTextureManager.MAX_LIGHT_COORDINATE); - *///?} - yOffset += textRenderer.lineHeight + 1; - } + String[] text = getDebugInfo(particle); - matrices.popPose(); + int yOffset = 0; + for (String line : text) { + //? if >=1.21.9 { + Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), true, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); + //?} else { + /*float f = (float) (-textRenderer.width(line)) / 2.0F; + textRenderer.drawInBatch(line, f, (float) -yOffset, -1, false, matrices.last().pose(), Minecraft.getInstance().renderBuffers().bufferSource(), DisplayMode.NORMAL, opacity, LightTexture.FULL_BRIGHT); + *///?} + yOffset += textRenderer.lineHeight + 1; } + + matrices.popPose(); } private static String @NotNull [] getDebugInfo(Particle particle) { @@ -70,9 +86,9 @@ public static void renderDebugInfo(PoseStack matrices, Camera camera, float tick } else { //? if <=1.21.8 { /*alpha = (int) (particle.alpha * 255); - red = (int) (particle.red * 255); - green = (int) (particle.green * 255); - blue = (int) (particle.blue * 255); + red = (int) (particle.rCol * 255); + green = (int) (particle.gCol * 255); + blue = (int) (particle.bCol * 255); color = ArgbUtils.getArgb(alpha, red, green, blue); *///?} else { if (particle instanceof SingleQuadParticle billboard) { diff --git a/src/main/java/net/lopymine/pe/extension/RegistryExtension.java b/src/main/java/net/lopymine/pe/extension/RegistryExtension.java new file mode 100644 index 0000000..91b901f --- /dev/null +++ b/src/main/java/net/lopymine/pe/extension/RegistryExtension.java @@ -0,0 +1,17 @@ +package net.lopymine.pe.extension; + +import java.util.List; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.Registry; + +public class RegistryExtension { + + public static List> references(Registry registry) { + //? if >=1.21.4 { + return registry.listElements().toList(); + //?} else { + /*return registry.holders().toList(); + *///?} + } + +} diff --git a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java index 0002f09..3af98b5 100644 --- a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java +++ b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java @@ -2,7 +2,10 @@ import com.llamalad7.mixinextras.sugar.ref.LocalRef; import java.util.function.*; +import lombok.experimental.ExtensionMethod; import net.lopymine.pe.capture.ParticleCaptures; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.extension.RegistryExtension; import net.minecraft.client.particle.Particle; import net.minecraft.core.*; import net.minecraft.core.particles.*; @@ -21,10 +24,9 @@ import java.util.stream.*; import net.minecraft.world.level.Level; -//? >=1.21 - import org.jetbrains.annotations.Nullable; +@ExtensionMethod(RegistryExtension.class) public class ParticleEffectsManager { private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); @@ -58,7 +60,7 @@ public static void onInitialize() { //-----------------------------------------------------// // SWAP OLD PARTICLE TYPE OF STATUS EFFECTS TO NEW ONE // //-----------------------------------------------------// - for (Reference reference : BuiltInRegistries.MOB_EFFECT.listElements().toList()) { + for (Reference reference : BuiltInRegistries.MOB_EFFECT.references()) { MobEffect statusEffect = reference.value(); ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { @@ -76,7 +78,7 @@ public static void onInitialize() { // REGISTER EACH POTION COLOR TO LIST POTION EFFECTS // // POTION COLOR = MIXED COLORS OF EFFECTS // //---------------------------------------------------// - for (Reference reference : BuiltInRegistries.POTION.listElements().toList()) { + for (Reference reference : BuiltInRegistries.POTION.references()) { Potion potion = reference.value(); ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { @@ -88,12 +90,12 @@ public static void onInitialize() { //? =1.20.1 { /*int color = ArgbUtils.getColorWithoutAlpha(StatusEffectUtils.getColor(effects)); - List particleEffects = effects.stream() - .map(StatusEffectInstance::getEffectType) + List particleEffects = effects.stream() + .map(MobEffectInstance::getEffect) .flatMap((effect) -> { - ParticleEffect particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); if (particleEffect == null) { - ParticleEffectsClient.LOGGER.error("[DEV/Potion Registration] Looks like {} effect (from potion with color {}) doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getName().getString()); + ParticleEffectsClient.LOGGER.error("[DEV/Potion Registration] Looks like {} effect (from potion with color {}) doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getDisplayName().getString()); return Stream.empty(); } return Stream.of(particleEffect); @@ -129,7 +131,7 @@ public static void onInitialize() { // NOT ALL EFFECTS CAN BE FOUND IN POTIONS, SO, WE ALSO // // NEED TO REGISTER EACH EFFECT COLOR TO THEIR EFFECT // //------------------------------------------------------// - for (Reference reference : BuiltInRegistries.MOB_EFFECT.listElements().toList()) { + for (Reference reference : BuiltInRegistries.MOB_EFFECT.references()) { MobEffect statusEffect = reference.value(); ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { @@ -160,7 +162,7 @@ public static void onInitialize() { public static void onInitializeClient() { for (ParticleOptions type : REGISTERED_PARTICLE_TYPES) { - ParticleFactoryRegistry.getInstance().register((/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/) type, TexturedParticleFactory::new); + ParticleFactoryRegistry.getInstance().register((SimpleParticleType) type, TexturedParticleFactory::new); } } @@ -250,7 +252,7 @@ public static Particle swapParticle(Level world, ParticleOptions original, Funct *///?} else { int color; - if (original instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER + if (original instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*ColorParticleOption *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER color = effect.color; } else { MobEffect statusEffect = ParticleEffectsManager.getVanillaStatusEffectByStatusEffect(original); diff --git a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java index 0cc4b9d..d504db2 100644 --- a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java @@ -42,7 +42,7 @@ private ParticleOptions swapParticleType(AreaEffectCloud instance, Operation=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect)) { + if (!(originalParticle instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*ColorParticleOption *//*?}*/ effect)) { return this.markDebugData(32, originalParticle); } int color = effect.color; @@ -56,7 +56,7 @@ private ParticleOptions swapParticleType(AreaEffectCloud instance, Operation=1.21.9 {*/ level /*?} else {*/ /*getWorld *//*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { return this.markDebugData(35, originalParticle); } diff --git a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java index f8c0c1b..cefd5e7 100644 --- a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java @@ -20,7 +20,7 @@ public ArrowEntityMixin(EntityType type, Level world) { super(type, world); } - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "makeParticle") + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" *//*?}*/), method = "makeParticle") private void markParticleFromArrow(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Local(ordinal = 1) int color) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); @@ -34,7 +34,7 @@ private void markParticleFromArrow(Level instance, ParticleOptions parameters, d return; } - ParticleOptions particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ level /*?} else {*/ /*getWorld *//*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { this.markDebugData(44, originalCall); return; diff --git a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java index 780024c..a20c7aa 100644 --- a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java @@ -21,7 +21,9 @@ public BillboardParticleRendererMixin(ParticleEngine particleManager) { @Inject(at = @At("HEAD"), method = "extractRenderState") private void renderDebugInfo(Frustum frustum, Camera camera, float tickProgress, CallbackInfoReturnable cir) { - DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickProgress, this.particles); + for (SingleQuadParticle particle : this.particles) { + DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickProgress, particle); + } } } diff --git a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java index c2e0904..cc7c941 100644 --- a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java @@ -2,47 +2,47 @@ //? =1.20.1 { /*import com.llamalad7.mixinextras.injector.wrapoperation.*; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.ColorHelper.Argb; -import net.minecraft.util.math.random.Random; -import net.minecraft.world.World; +import net.lopymine.pe.utils.*; +import net.minecraft.core.Holder; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.util.RandomSource; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.utils.ListUtils; import java.util.*; @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { - @Shadow public abstract Map getActiveStatusEffects(); + @Shadow public abstract Map getActiveEffectsMap(); - @Shadow public abstract Random getRandom(); + @Shadow public abstract RandomSource getRandom(); - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V"), method = "tickStatusEffects") - private void swapParticle(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V"), method = "tickEffects") + private void swapParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); if (!ParticleEffects.getConfig().isModEnabled()) { this.markDebugData(51, originalCall); return; } - Set effects = this.getActiveStatusEffects().keySet(); + Set effects = this.getActiveEffectsMap().keySet(); if (!effects.isEmpty()) { - StatusEffect statusEffect = ListUtils.getRandomElement(effects.stream().toList(), this.getRandom()); + MobEffect statusEffect = ListUtils.getRandomElement(effects.stream().toList(), this.getRandom()); if (statusEffect == null) { this.markDebugData(52, originalCall); return; } int color = statusEffect.getColor(); - double red = Argb.getRed(color) / 255.0; - double green = Argb.getGreen(color) / 255.0; - double blue = Argb.getBlue(color) / 255.0; + double red = ArgbUtils.getRed(color) / 255.0; + double green = ArgbUtils.getGreen(color) / 255.0; + double blue = ArgbUtils.getBlue(color) / 255.0; ParticleCaptures.setParticle(parameters); original.call(instance, parameters, x, y, z, red, green, blue); diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java index 8a1b242..cf8f172 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java @@ -1,14 +1,24 @@ package net.lopymine.pe.mixin; import com.llamalad7.mixinextras.injector.wrapoperation.*; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import java.util.*; import net.lopymine.pe.capture.ParticleCaptures; +import net.lopymine.pe.debug.DebugParticleInfoRenderer; import net.lopymine.pe.utils.*; +import net.minecraft.client.Camera; import net.minecraft.client.particle.*; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.util.RandomSource; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ParticleEngine.class) public class ParticleManagerMixin { @@ -16,24 +26,21 @@ public class ParticleManagerMixin { //? if =1.20.1 { /*@Shadow @Final - private Map> particles; + private Map> particles; *///?} //? if >=1.21.4 && <=1.21.8 { - /*@Inject(at = @At(value = "TAIL"), method = "renderParticles(Lnet/minecraft/client/render/Camera;FLnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/particle/ParticleTextureSheet;Ljava/util/Queue;)V") - private static void renderDebugInfo(Camera camera, float tickProgress, Immediate vertexConsumers, ParticleTextureSheet sheet, Queue particles, CallbackInfo ci) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickProgress, particles); + /*@Inject(at = @At(value = "TAIL"), method = "renderParticleType") + private static void renderDebugInfo(Camera camera, float f, BufferSource bufferSource, ParticleRenderType particleRenderType, Queue queue, CallbackInfo ci) { + for (Particle particle : queue) { + DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, f, particle); + } } *///?} elif >=1.21 && <=1.21.8 { - /*@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferRenderer;drawWithGlobalProgram(Lnet/minecraft/client/render/BuiltBuffer;)V", shift = Shift.AFTER), method = "renderParticles") - private void renderDebugInfo(LightmapTextureManager lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local Queue particles) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickDelta, particles); - } - *///?} elif <=1.21.8 { - /*@Inject(at = @At(value = "TAIL"), method = "renderParticles") - private void renderDebugInfo(MatrixStack matrices, Immediate vertexConsumers, LightmapTextureManager lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local(ordinal = 1) MatrixStack stack) { - for (Queue value : this.particles.values()) { - DebugParticleInfoRenderer.renderDebugInfo(matrices, camera, tickDelta, value); + /*@Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/BufferUploader;drawWithShader(Lcom/mojang/blaze3d/vertex/MeshData;)V", shift = Shift.AFTER), method = "render") + private void renderDebugInfo(LightTexture lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local Queue queue) { + for (Particle particle : queue) { + DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickDelta, particle); } } *///?} @@ -43,9 +50,9 @@ private void renderDebugInfo(MatrixStack matrices, Immediate vertexConsumers, Li private Particle markParticle(ParticleProvider instance, ParticleOptions t, ClientLevel clientWorld, double a, double b, double c, double d, double e, double v, RandomSource random, Operation original) { Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v, random); //?} else { - /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") - private Particle markParticle(ParticleFactory instance, ParticleEffect t, ClientWorld clientWorld, double a, double b, double c, double d, double e, double v, Operation original) { - Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v); + /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleProvider;createParticle(Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "makeParticle") + private Particle markParticle(ParticleProvider instance, ParticleOptions particleOptions, ClientLevel clientLevel, double a, double b, double c, double d, double e, double v, Operation original) { + Particle particle = original.call(instance, particleOptions, clientLevel, a, b, c, d, e, v); *///?} Integer debugData = ParticleCaptures.getDebugData(); if (debugData != null && particle != null) { diff --git a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java index 6a6b08f..b0e55c9 100644 --- a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java @@ -13,8 +13,7 @@ @Mixin(LivingEntity.class) public class SecondLivingEntityMixin { - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ - /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "tickEffects") + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" *//*?}*/), method = "tickEffects") private void markParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { ParticleCaptures.setParticle(parameters); original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); diff --git a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java index d6b1969..134455d 100644 --- a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java @@ -1,10 +1,10 @@ package net.lopymine.pe.mixin; import net.lopymine.pe.utils.*; -import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.core.particles.SimpleParticleType; import org.spongepowered.asm.mixin.*; -@Mixin(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/.class) +@Mixin(SimpleParticleType.class) public class SimpleParticleTypeMixin implements PEType { @Unique diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java index d7b41ab..bf41c85 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java @@ -14,8 +14,8 @@ private static SaturationMobEffect fixColor(MobEffectCategory statusEffectCatego return original.call(statusEffectCategory, 16262180); } //?} else { - /*@WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/entity/effect/StatusEffectCategory;I)Lnet/minecraft/entity/effect/InstantStatusEffect;"), method = "") - private static InstantStatusEffect fixColor(StatusEffectCategory statusEffectCategory, int i, Operation original) { + /*@WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/world/effect/MobEffectCategory;I)Lnet/minecraft/world/effect/InstantenousMobEffect;", ordinal = 2), method = "") + private static InstantenousMobEffect fixColor(MobEffectCategory statusEffectCategory, int i, Operation original) { return original.call(statusEffectCategory, 16262180); } *///?} diff --git a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java index 4c55d73..72acb6c 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java @@ -7,9 +7,10 @@ import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.renderer.LevelEventHandler; +import net.minecraft.client.renderer.*; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -29,7 +30,7 @@ public class WorldEventHandlerMixin { //?} else { /*@Shadow @Final - private World world; + private Level level; *///?} // SPLASH POTION @@ -55,10 +56,10 @@ private void swapParticles(ClientLevel instance, ParticleOptions parameters, dou ); } //?} else { - /*@WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) - private Particle swapParticles(net.minecraft.client.render.WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + /*@WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) + private Particle swapParticles(LevelRenderer instance, ParticleOptions parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { return ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> original.call(instance, particleEffect, alwaysSpawn, x, y, z, velocityX, velocityY, velocityZ), localParticleEffects, diff --git a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java index 083e2c0..c0eb017 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java @@ -5,50 +5,40 @@ import com.llamalad7.mixinextras.sugar.*; import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import java.util.List; import java.util.function.*; -import net.lopymine.pe.capture.ParticleCaptures; -import net.lopymine.pe.client.ParticleEffectsClient; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.*; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.manager.ParticleEffectsManager; -import net.lopymine.pe.utils.*; -import java.util.List; import org.jetbrains.annotations.Nullable; - -//? >=1.21 -import net.minecraft.entity.effect.StatusEffect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//? =1.20.1 -/^import net.minecraft.util.math.ColorHelper.Argb;^/ - @Debug(export = true) -@Mixin(WorldRenderer.class) +@Mixin(LevelRenderer.class) public class WorldRendererMixin { @Shadow @Nullable - private ClientWorld world; + private ClientLevel level; //? <=1.21.1 { /^// SPLASH POTION - @Inject(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;")) - private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { + @Inject(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;atBottomCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;")) + private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { ParticleEffectsManager.processSplashPotionStageOne(localParticleEffects, data); } // SPLASH POTION - @WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) - private Particle swapParticles(WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + @WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) + private Particle swapParticles(LevelRenderer instance, ParticleOptions parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { return ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> original.call(instance, particleEffect, alwaysSpawn, x, y, z, velocityX, velocityY, velocityZ), localParticleEffects, @@ -58,15 +48,15 @@ private Particle swapParticles(WorldRenderer instance, ParticleEffect parameters // ENTITY PARTICLES - @WrapOperation(method = "addParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)Lnet/minecraft/client/particle/Particle;")) - private Particle swapParticle(WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, boolean canSpawnOnMinimal, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { - Function function = (effect) -> original.call(instance, effect, alwaysSpawn, canSpawnOnMinimal, x, y, z, velocityX, velocityY, velocityZ); + @WrapOperation(method = "addParticle(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)Lnet/minecraft/client/particle/Particle;")) + private Particle swapParticle(LevelRenderer instance, ParticleOptions particleOptions, boolean alwaysSpawn, boolean canSpawnOnMinimal, double x, double y, double z, double vx, double vy, double vz, Operation original) { + Function function = (effect) -> original.call(instance, effect, alwaysSpawn, canSpawnOnMinimal, x, y, z, vx, vy, vz); return ParticleEffectsManager.swapParticle( - this.world, - parameters, + this.level, + particleOptions, function, - () -> function.apply(parameters) - /^? if =1.20.1 {^//^, velocityX, velocityY, velocityZ ^//^?}^/ + () -> function.apply(particleOptions) + /^? if =1.20.1 {^//^, vx, vy, vz ^//^?}^/ ); } diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java index cbd73f1..087d1c0 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java @@ -2,11 +2,8 @@ import lombok.*; import net.minecraft.client.particle.*; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; -import net.lopymine.pe.utils.*; import net.minecraft.util.RandomSource; @Setter @@ -17,7 +14,7 @@ public class TexturedParticle extends SpellParticle { protected TexturedParticle(ClientLevel clientWorld, double d, double e, double f, double g, double h, double i, SpriteSet spriteProvider, RandomSource random) { super(clientWorld, d, e, f, g, h, i, spriteProvider); - super.setSprite(spriteProvider/*? if >=1.21.9 {*/.get(random) /*?}*/); + super.setSprite(spriteProvider.get(random)); } @Override @@ -27,7 +24,7 @@ public void setColor(float red, float green, float blue) { //? if <=1.21.8 { /*@Override - public void setSpriteForAge(SpriteProvider spriteProvider) { + public void setSpriteFromAge(SpriteSet spriteSet) { } *///?} diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java index 4ac6628..8e8aa55 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java @@ -2,12 +2,12 @@ import net.minecraft.client.particle.*; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.particles./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.core.particles.SimpleParticleType; import net.lopymine.pe.utils.*; import net.minecraft.util.RandomSource; -public class TexturedParticleFactory implements ParticleProvider=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/> { +public class TexturedParticleFactory implements ParticleProvider { private final SpriteSet spriteProvider; @@ -16,8 +16,8 @@ public TexturedParticleFactory(SpriteSet spriteProvider) { } @Override - public Particle createParticle(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/ effect, ClientLevel clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*/, RandomSource random /*?}*/) { - TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*/random /*?} else {*/ /*Random.create() *//*?}*/); + public Particle createParticle(SimpleParticleType effect, ClientLevel clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*/, RandomSource random /*?}*/) { + TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*/random /*?} else {*/ /*RandomSource.create() *//*?}*/); int color = ((PEType) effect).particleEffects$getColor(); texturedParticle.setAlpha((float) ArgbUtils.getAlpha(color) / 255F); texturedParticle.setHolderColor(color); diff --git a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java index 2175c7f..090eee8 100644 --- a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java +++ b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java @@ -1,8 +1,15 @@ package net.lopymine.pe.utils; import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.effect.*; -import net.minecraft.world.effect.MobEffect; +//? if =1.20.1 { +/* +import net.minecraft.world.item.alchemy.PotionUtils; +import java.util.Collection; +import net.fabricmc.loader.api.FabricLoader; +*/ +//?} public class StatusEffectUtils { @@ -11,14 +18,15 @@ public static void swapParticle(MobEffect statusEffect, ParticleOptions particle } //? if =1.20.1 { + /*// Yeah, I literally copied this thing from the original PotionUtils class to make this mod compatible with Alex Caves // IDK why, for what, just did - public static int getColor(Collection effects) { + public static int getColor(Collection collection) { if (!FabricLoader.getInstance().isModLoaded("alexscaves")) { - return net.minecraft.potion.PotionUtil.getColor(effects); + return PotionUtils.getColor(collection); } - if (effects.isEmpty()) { + if (collection.isEmpty()) { return 3694022; } else { float f = 0.0F; @@ -26,13 +34,13 @@ public static int getColor(Collection effects) { float h = 0.0F; int j = 0; - for (StatusEffectInstance statusEffectInstance : effects) { - if (statusEffectInstance.shouldShowParticles()) { - int k = statusEffectInstance.getEffectType().getColor(); - int l = statusEffectInstance.getAmplifier() + 1; - f += (float) (l * (k >> 16 & 255)) / 255.0F; - g += (float) (l * (k >> 8 & 255)) / 255.0F; - h += (float) (l * (k & 255)) / 255.0F; + for (MobEffectInstance mobEffectInstance : collection) { + if (mobEffectInstance.isVisible()) { + int k = mobEffectInstance.getEffect().getColor(); + int l = mobEffectInstance.getAmplifier() + 1; + f += l * (k >> 16 & 0xFF) / 255.0F; + g += l * (k >> 8 & 0xFF) / 255.0F; + h += l * (k & 0xFF) / 255.0F; j += l; } } @@ -40,9 +48,9 @@ public static int getColor(Collection effects) { if (j == 0) { return 0; } else { - f = f / (float) j * 255.0F; - g = g / (float) j * 255.0F; - h = h / (float) j * 255.0F; + f = f / j * 255.0F; + g = g / j * 255.0F; + h = h / j * 255.0F; return (int) f << 16 | (int) g << 8 | (int) h; } } diff --git a/src/main/resources/aws/1.20.1.accesswidener b/src/main/resources/aws/1.20.1.accesswidener index 3fb39d8..2e723de 100644 --- a/src/main/resources/aws/1.20.1.accesswidener +++ b/src/main/resources/aws/1.20.1.accesswidener @@ -8,11 +8,13 @@ accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F + +accessible field net/minecraft/client/particle/ParticleEngine particles Ljava/util/Map; diff --git a/src/main/resources/aws/1.21.1.accesswidener b/src/main/resources/aws/1.21.1.accesswidener index af1d792..d2e3736 100644 --- a/src/main/resources/aws/1.21.1.accesswidener +++ b/src/main/resources/aws/1.21.1.accesswidener @@ -5,18 +5,18 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.10.accesswidener b/src/main/resources/aws/1.21.10.accesswidener new file mode 100644 index 0000000..c2ef41f --- /dev/null +++ b/src/main/resources/aws/1.21.10.accesswidener @@ -0,0 +1,25 @@ +accessWidener v2 named +# 1.21.10 AW + +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/SingleQuadParticle alpha F +accessible field net/minecraft/client/particle/SingleQuadParticle rCol F +accessible field net/minecraft/client/particle/SingleQuadParticle gCol F +accessible field net/minecraft/client/particle/SingleQuadParticle bCol F + +accessible field net/minecraft/client/renderer/LevelRenderer featureRenderDispatcher Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher; +accessible field net/minecraft/client/renderer/LevelRenderer levelRenderState Lnet/minecraft/client/renderer/state/LevelRenderState; diff --git a/src/main/resources/aws/1.21.2.accesswidener b/src/main/resources/aws/1.21.2.accesswidener deleted file mode 100644 index 2e2074a..0000000 --- a/src/main/resources/aws/1.21.2.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.2 AW - -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/world/effect/SaturationMobEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.3.accesswidener b/src/main/resources/aws/1.21.3.accesswidener deleted file mode 100644 index 2ca248c..0000000 --- a/src/main/resources/aws/1.21.3.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.3 AW - -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/world/effect/SaturationMobEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.4.accesswidener b/src/main/resources/aws/1.21.4.accesswidener index 0027c9c..eafc3b3 100644 --- a/src/main/resources/aws/1.21.4.accesswidener +++ b/src/main/resources/aws/1.21.4.accesswidener @@ -5,18 +5,18 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.5.accesswidener b/src/main/resources/aws/1.21.5.accesswidener index 8641deb..fbac418 100644 --- a/src/main/resources/aws/1.21.5.accesswidener +++ b/src/main/resources/aws/1.21.5.accesswidener @@ -5,7 +5,7 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D @@ -17,6 +17,6 @@ accessible field net/minecraft/client/particle/Particle yo D accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.6.accesswidener b/src/main/resources/aws/1.21.6.accesswidener index a30b222..ff12e0c 100644 --- a/src/main/resources/aws/1.21.6.accesswidener +++ b/src/main/resources/aws/1.21.6.accesswidener @@ -5,7 +5,7 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D @@ -17,6 +17,6 @@ accessible field net/minecraft/client/particle/Particle yo D accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.7.accesswidener b/src/main/resources/aws/1.21.7.accesswidener index af0b8d9..8694c4d 100644 --- a/src/main/resources/aws/1.21.7.accesswidener +++ b/src/main/resources/aws/1.21.7.accesswidener @@ -5,7 +5,7 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D @@ -17,6 +17,6 @@ accessible field net/minecraft/client/particle/Particle yo D accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.8.accesswidener b/src/main/resources/aws/1.21.8.accesswidener index 496a735..01d084c 100644 --- a/src/main/resources/aws/1.21.8.accesswidener +++ b/src/main/resources/aws/1.21.8.accesswidener @@ -17,6 +17,6 @@ accessible field net/minecraft/client/particle/Particle yo D accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/1.21.accesswidener b/src/main/resources/aws/1.21.accesswidener index a5a2667..58da2ab 100644 --- a/src/main/resources/aws/1.21.accesswidener +++ b/src/main/resources/aws/1.21.accesswidener @@ -5,18 +5,18 @@ accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I +accessible field net/minecraft/core/particles/ColorParticleOption color I accessible class net/minecraft/world/effect/SaturationMobEffect accessible field net/minecraft/client/particle/Particle x D accessible field net/minecraft/client/particle/Particle y D accessible field net/minecraft/client/particle/Particle z D -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/stonecutter.gradle b/stonecutter.gradle index 9f38b57..b0fcb7d 100644 --- a/stonecutter.gradle +++ b/stonecutter.gradle @@ -2,4 +2,4 @@ plugins { id "dev.kikugie.stonecutter" id "net.lopymine.mossy-plugin-stonecutter" } -stonecutter.active "1.21.9" /* [SC] DO NOT EDIT */ \ No newline at end of file +stonecutter.active "1.21.10" /* [SC] DO NOT EDIT */ \ No newline at end of file diff --git a/versions/1.21.10/gradle.properties b/versions/1.21.10/gradle.properties new file mode 100644 index 0000000..6fe6ae8 --- /dev/null +++ b/versions/1.21.10/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.10+build.2 +build.fabric_api=0.138.3+1.21.10 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.10&l=fabric +dep.modmenu=16.0.0-rc.1 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.10&l=fabric +dep.yacl=3.8.0+1.21.9-fabric diff --git a/versions/1.21.2/gradle.properties b/versions/1.21.2/gradle.properties deleted file mode 100644 index 2768958..0000000 --- a/versions/1.21.2/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.2+build.1 -build.fabric_api=0.106.1+1.21.2 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.2 -dep.modmenu=12.0.0-beta.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.2 -dep.yacl=3.6.1+1.21.2-fabric diff --git a/versions/1.21.3/gradle.properties b/versions/1.21.3/gradle.properties deleted file mode 100644 index e414f1a..0000000 --- a/versions/1.21.3/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.3+build.2 -build.fabric_api=0.107.0+1.21.3 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.3 -dep.modmenu=12.0.0-beta.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.3 -dep.yacl=3.6.1+1.21.2-fabric From 5ecd8c3ad2e3a6f8a9025c10c09de8e04994aca0 Mon Sep 17 00:00:00 2001 From: LopyMine Date: Sun, 30 Nov 2025 05:01:38 +0300 Subject: [PATCH 3/4] (Neo)Forge Support (completed) --- CHANGELOG.md | 24 +- build.gradle | 30 +- buildSettings/build.gradle | 52 --- buildSettings/gradle.properties | 13 - .../mossy/settings/MossySettingsPlugin.java | 86 ----- .../settings/api/FabricDependenciesAPI.java | 18 - .../mossy/settings/api/JsonHelper.java | 21 -- .../settings/api/ModrinthDependenciesAPI.java | 37 --- .../manager/AccessWidenerManager.java | 59 ---- .../settings/manager/StonecutterManager.java | 18 - .../VersionedGradlePropertiesManager.java | 186 ----------- buildSrc/build.gradle | 58 ---- buildSrc/gradle.properties | 17 - .../java/net/lopymine/mossy/MossyLogger.java | 23 -- .../java/net/lopymine/mossy/MossyPlugin.java | 312 ------------------ .../mossy/MossyPluginStonecutter.java | 115 ------- .../MossyAdditionalDependencies.java | 24 -- .../extension/MossyDependenciesExtension.java | 31 -- .../MossyProcessResourcesExtension.java | 16 - .../manager/MossyDependenciesManager.java | 121 ------- .../mossy/manager/MossyJ52JManager.java | 18 - .../mossy/manager/MossyJavaManager.java | 29 -- .../mossy/manager/MossyLoomManager.java | 94 ------ .../mossy/manager/MossyModPublishManager.java | 148 --------- .../manager/MossyProcessResourcesManager.java | 67 ---- .../manager/MossyStonecutterManager.java | 40 --- .../lopymine/mossy/multi/MultiVersion.java | 45 --- .../tasks/GeneratePersonalPropertiesTask.java | 55 --- ...atePublishWorkflowsForEachVersionTask.java | 64 ---- gradle.properties | 61 +++- settings.gradle | 21 +- .../java/net/lopymine/pe/ParticleEffects.java | 15 +- .../pe/client/ParticleEffectsClient.java | 11 +- .../pe/config/ParticleEffectsConfig.java | 5 +- .../pe/debug/DebugParticleInfoRenderer.java | 44 ++- .../MossyNeoForgeClientEntrypoint.java | 24 ++ .../entrypoint/MossyNeoForgeEntrypoint.java | 23 ++ .../entrypoint/PEFabricClientEntrypoint.java | 21 ++ .../pe/entrypoint/PEFabricEntrypoint.java | 17 + .../entrypoint/PEForgeClientEntrypoint.java | 23 ++ .../pe/entrypoint/PEForgeEntrypoint.java | 31 ++ .../net/lopymine/pe/loader/MossyLoader.java | 66 ++++ .../pe/manager/ParticleEffectsManager.java | 138 +++++++- .../pe/mixin/AreaEffectCloudEntityMixin.java | 28 +- .../lopymine/pe/mixin/ArrowEntityMixin.java | 8 +- .../mixin/BillboardParticleRendererMixin.java | 30 -- .../lopymine/pe/mixin/LivingEntityMixin.java | 7 +- .../pe/mixin/ParticleEngineMixin.java | 19 ++ .../pe/mixin/ParticleManagerMixin.java | 24 +- .../net/lopymine/pe/mixin/ParticleMixin.java | 6 +- .../pe/mixin/SimpleParticleTypeMixin.java | 8 +- .../lopymine/pe/mixin/StatusEffectMixin.java | 6 +- .../WorldRendererDebugParticlesMixin.java | 64 ++++ .../modmenu/AbstractModMenuIntegration.java | 110 ++++++ .../pe/modmenu/ModMenuIntegration.java | 18 - .../pe/modmenu/NoConfigLibraryScreen.java | 23 +- .../pe/modmenu/PEModMenuIntegration.java | 19 ++ .../net/lopymine/pe/utils/ModMenuUtils.java | 6 +- .../lopymine/pe/utils/StatusEffectUtils.java | 12 +- src/main/resources/META-INF/mods.toml | 28 ++ .../resources/META-INF/neoforge.mods.toml | 31 ++ .../assets/particle-effects/lang/en_us.json | 15 - .../assets/particle-effects/lang/ru_ru.json | 15 - .../assets/particle-effects/lang/tt_ru.json | 13 - .../assets/particle-effects/lang/uk_ua.json | 15 - .../assets/particle-effects/lang/zh_cn.json | 13 - .../particles/absorption.json | 6 - .../particle-effects/particles/bad_omen.json | 6 - .../particle-effects/particles/blindness.json | 6 - .../particles/conduit_power.json | 6 - .../particle-effects/particles/darkness.json | 6 - .../particles/dolphins_grace.json | 6 - .../particles/fire_resistance.json | 6 - .../particle-effects/particles/glowing.json | 6 - .../particle-effects/particles/haste.json | 6 - .../particles/health_boost.json | 6 - .../particles/hero_of_the_village.json | 6 - .../particle-effects/particles/hunger.json | 6 - .../particles/infested_new.json | 6 - .../particles/instant_damage.json | 6 - .../particles/instant_health.json | 6 - .../particles/invisibility.json | 6 - .../particles/jump_boost.json | 6 - .../particles/levitation.json | 6 - .../particle-effects/particles/luck.json | 6 - .../particles/mining_fatigue.json | 6 - .../particle-effects/particles/nausea.json | 6 - .../particles/night_vision.json | 6 - .../particles/oozing_new.json | 6 - .../particle-effects/particles/poison.json | 6 - .../particles/raid_omen_new.json | 6 - .../particles/regeneration.json | 6 - .../particles/resistance.json | 6 - .../particles/saturation.json | 6 - .../particles/slow_falling.json | 6 - .../particle-effects/particles/slowness.json | 6 - .../particle-effects/particles/speed.json | 6 - .../particle-effects/particles/strength.json | 6 - .../particles/trial_omen_new.json | 6 - .../particle-effects/particles/unluck.json | 6 - .../particles/water_breathing.json | 6 - .../particle-effects/particles/weakness.json | 6 - .../particles/weaving_new.json | 6 - .../particles/wind_charged_new.json | 6 - .../particle-effects/particles/wither.json | 6 - .../assets/particle_effects/lang/en_us.json | 15 + .../assets/particle_effects/lang/ru_ru.json | 15 + .../assets/particle_effects/lang/tt_ru.json | 13 + .../assets/particle_effects/lang/uk_ua.json | 15 + .../assets/particle_effects/lang/zh_cn.json | 13 + .../particles/absorption.json | 6 + .../particle_effects/particles/bad_omen.json | 6 + .../particle_effects/particles/blindness.json | 6 + .../particles/conduit_power.json | 6 + .../particle_effects/particles/darkness.json | 6 + .../particles/dolphins_grace.json | 6 + .../particles/fire_resistance.json | 6 + .../particle_effects/particles/glowing.json | 6 + .../particle_effects/particles/haste.json | 6 + .../particles/health_boost.json | 6 + .../particles/hero_of_the_village.json | 6 + .../particle_effects/particles/hunger.json | 6 + .../particles/infested_new.json | 6 + .../particles/instant_damage.json | 6 + .../particles/instant_health.json | 6 + .../particles/invisibility.json | 6 + .../particles/jump_boost.json | 6 + .../particles/levitation.json | 6 + .../particle_effects/particles/luck.json | 6 + .../particles/mining_fatigue.json | 6 + .../particle_effects/particles/nausea.json | 6 + .../particles/night_vision.json | 6 + .../particles/oozing_new.json | 6 + .../particle_effects/particles/poison.json | 6 + .../particles/raid_omen_new.json | 6 + .../particles/regeneration.json | 6 + .../particles/resistance.json | 6 + .../particles/saturation.json | 6 + .../particles/slow_falling.json | 6 + .../particle_effects/particles/slowness.json | 6 + .../particle_effects/particles/speed.json | 6 + .../particle_effects/particles/strength.json | 6 + .../particles/trial_omen_new.json | 6 + .../particle_effects/particles/unluck.json | 6 + .../particles/water_breathing.json | 6 + .../particle_effects/particles/weakness.json | 6 + .../particles/weaving_new.json | 6 + .../particles/wind_charged_new.json | 6 + .../particle_effects/particles/wither.json | 6 + .../textures/particle/absorption/1.png | Bin .../textures/particle/absorption/2.png | Bin .../textures/particle/bad_omen/1.png | Bin .../textures/particle/bad_omen/2.png | Bin .../textures/particle/blindness/1.png | Bin .../textures/particle/blindness/2.png | Bin .../textures/particle/conduit_power/1.png | Bin .../textures/particle/conduit_power/2.png | Bin .../textures/particle/darkness/1.png | Bin .../textures/particle/darkness/2.png | Bin .../textures/particle/dolphins_grace/1.png | Bin .../textures/particle/dolphins_grace/2.png | Bin .../textures/particle/fire_resistance/1.png | Bin .../textures/particle/fire_resistance/2.png | Bin .../textures/particle/glowing/1.png | Bin .../textures/particle/glowing/2.png | Bin .../textures/particle/haste/1.png | Bin .../textures/particle/haste/2.png | Bin .../textures/particle/health_boost/1.png | Bin .../textures/particle/health_boost/2.png | Bin .../particle/hero_of_the_village/1.png | Bin .../particle/hero_of_the_village/2.png | Bin .../textures/particle/hunger/1.png | Bin .../textures/particle/hunger/2.png | Bin .../textures/particle/infested/1.png | Bin .../textures/particle/infested/2.png | Bin .../textures/particle/instant_damage/1.png | Bin .../textures/particle/instant_damage/2.png | Bin .../textures/particle/instant_health/1.png | Bin .../textures/particle/instant_health/2.png | Bin .../textures/particle/invisibility/1.png | Bin .../textures/particle/invisibility/2.png | Bin .../textures/particle/jump_boost/1.png | Bin .../textures/particle/jump_boost/2.png | Bin .../textures/particle/levitation/1.png | Bin .../textures/particle/levitation/2.png | Bin .../textures/particle/luck/1.png | Bin .../textures/particle/luck/2.png | Bin .../textures/particle/mining_fatigue/1.png | Bin .../textures/particle/mining_fatigue/2.png | Bin .../textures/particle/nausea/1.png | Bin .../textures/particle/nausea/2.png | Bin .../textures/particle/night_vision/1.png | Bin .../textures/particle/night_vision/2.png | Bin .../textures/particle/oozing/1.png | Bin .../textures/particle/oozing/2.png | Bin .../textures/particle/poison/1.png | Bin .../textures/particle/poison/2.png | Bin .../textures/particle/raid_omen/1.png | Bin .../textures/particle/raid_omen/2.png | Bin .../textures/particle/regeneration/1.png | Bin .../textures/particle/regeneration/2.png | Bin .../textures/particle/resistance/1.png | Bin .../textures/particle/resistance/2.png | Bin .../textures/particle/saturation/1.png | Bin .../textures/particle/saturation/2.png | Bin .../textures/particle/slow_falling/1.png | Bin .../textures/particle/slow_falling/2.png | Bin .../textures/particle/slowness/1.png | Bin .../textures/particle/slowness/2.png | Bin .../textures/particle/speed/1.png | Bin .../textures/particle/speed/2.png | Bin .../textures/particle/strength/1.png | Bin .../textures/particle/strength/2.png | Bin .../textures/particle/trial_omen/1.png | Bin .../textures/particle/trial_omen/2.png | Bin .../textures/particle/unluck/1.png | Bin .../textures/particle/unluck/2.png | Bin .../textures/particle/water_breathing/1.png | Bin .../textures/particle/water_breathing/2.png | Bin .../textures/particle/weakness/1.png | Bin .../textures/particle/weakness/2.png | Bin .../textures/particle/weaving/1.png | Bin .../textures/particle/weaving/2.png | Bin .../textures/particle/wind_charged/1.png | Bin .../textures/particle/wind_charged/2.png | Bin .../textures/particle/wither/1.png | Bin .../textures/particle/wither/2.png | Bin ...esswidener => fabric-1.20.1.accesswidener} | 0 ...esswidener => fabric-1.21.1.accesswidener} | 2 - ...sswidener => fabric-1.21.10.accesswidener} | 2 - ...esswidener => fabric-1.21.4.accesswidener} | 2 - ...esswidener => fabric-1.21.5.accesswidener} | 2 - ...esswidener => fabric-1.21.6.accesswidener} | 0 ...esswidener => fabric-1.21.7.accesswidener} | 2 - ...esswidener => fabric-1.21.8.accesswidener} | 2 - ...esswidener => fabric-1.21.9.accesswidener} | 2 - ...ccesswidener => fabric-1.21.accesswidener} | 2 - src/main/resources/aws/forge-1.20.1.cfg | 14 + src/main/resources/aws/neoforge-1.21.1.cfg | 15 + src/main/resources/aws/neoforge-1.21.10.cfg | 18 + src/main/resources/fabric.mod.json | 14 +- src/main/resources/pack.mcmeta | 6 + ...ns.json5 => particle_effects.mixins.json5} | 6 +- stonecutter.gradle | 4 +- versions/1.20.1/gradle.properties | 14 - versions/1.21.1/gradle.properties | 11 - versions/1.21.4/gradle.properties | 11 - versions/1.21/gradle.properties | 11 - versions/fabric-1.20.1/gradle.properties | 13 + versions/fabric-1.21.1/gradle.properties | 13 + .../gradle.properties | 2 +- versions/fabric-1.21.4/gradle.properties | 13 + .../gradle.properties | 6 +- .../gradle.properties | 6 +- .../gradle.properties | 6 +- .../gradle.properties | 2 +- .../gradle.properties | 6 +- versions/fabric-1.21/gradle.properties | 13 + versions/forge-1.20.1/gradle.properties | 13 + versions/neoforge-1.21.1/gradle.properties | 13 + versions/neoforge-1.21.10/gradle.properties | 13 + 261 files changed, 1253 insertions(+), 2384 deletions(-) delete mode 100644 buildSettings/build.gradle delete mode 100644 buildSettings/gradle.properties delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java delete mode 100644 buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java delete mode 100644 buildSrc/build.gradle delete mode 100644 buildSrc/gradle.properties delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java delete mode 100644 buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java create mode 100644 src/main/java/net/lopymine/pe/loader/MossyLoader.java delete mode 100644 src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java create mode 100644 src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java create mode 100644 src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java create mode 100644 src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java delete mode 100644 src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java create mode 100644 src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/META-INF/neoforge.mods.toml delete mode 100644 src/main/resources/assets/particle-effects/lang/en_us.json delete mode 100644 src/main/resources/assets/particle-effects/lang/ru_ru.json delete mode 100644 src/main/resources/assets/particle-effects/lang/tt_ru.json delete mode 100644 src/main/resources/assets/particle-effects/lang/uk_ua.json delete mode 100644 src/main/resources/assets/particle-effects/lang/zh_cn.json delete mode 100644 src/main/resources/assets/particle-effects/particles/absorption.json delete mode 100644 src/main/resources/assets/particle-effects/particles/bad_omen.json delete mode 100644 src/main/resources/assets/particle-effects/particles/blindness.json delete mode 100644 src/main/resources/assets/particle-effects/particles/conduit_power.json delete mode 100644 src/main/resources/assets/particle-effects/particles/darkness.json delete mode 100644 src/main/resources/assets/particle-effects/particles/dolphins_grace.json delete mode 100644 src/main/resources/assets/particle-effects/particles/fire_resistance.json delete mode 100644 src/main/resources/assets/particle-effects/particles/glowing.json delete mode 100644 src/main/resources/assets/particle-effects/particles/haste.json delete mode 100644 src/main/resources/assets/particle-effects/particles/health_boost.json delete mode 100644 src/main/resources/assets/particle-effects/particles/hero_of_the_village.json delete mode 100644 src/main/resources/assets/particle-effects/particles/hunger.json delete mode 100644 src/main/resources/assets/particle-effects/particles/infested_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/instant_damage.json delete mode 100644 src/main/resources/assets/particle-effects/particles/instant_health.json delete mode 100644 src/main/resources/assets/particle-effects/particles/invisibility.json delete mode 100644 src/main/resources/assets/particle-effects/particles/jump_boost.json delete mode 100644 src/main/resources/assets/particle-effects/particles/levitation.json delete mode 100644 src/main/resources/assets/particle-effects/particles/luck.json delete mode 100644 src/main/resources/assets/particle-effects/particles/mining_fatigue.json delete mode 100644 src/main/resources/assets/particle-effects/particles/nausea.json delete mode 100644 src/main/resources/assets/particle-effects/particles/night_vision.json delete mode 100644 src/main/resources/assets/particle-effects/particles/oozing_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/poison.json delete mode 100644 src/main/resources/assets/particle-effects/particles/raid_omen_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/regeneration.json delete mode 100644 src/main/resources/assets/particle-effects/particles/resistance.json delete mode 100644 src/main/resources/assets/particle-effects/particles/saturation.json delete mode 100644 src/main/resources/assets/particle-effects/particles/slow_falling.json delete mode 100644 src/main/resources/assets/particle-effects/particles/slowness.json delete mode 100644 src/main/resources/assets/particle-effects/particles/speed.json delete mode 100644 src/main/resources/assets/particle-effects/particles/strength.json delete mode 100644 src/main/resources/assets/particle-effects/particles/trial_omen_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/unluck.json delete mode 100644 src/main/resources/assets/particle-effects/particles/water_breathing.json delete mode 100644 src/main/resources/assets/particle-effects/particles/weakness.json delete mode 100644 src/main/resources/assets/particle-effects/particles/weaving_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/wind_charged_new.json delete mode 100644 src/main/resources/assets/particle-effects/particles/wither.json create mode 100644 src/main/resources/assets/particle_effects/lang/en_us.json create mode 100644 src/main/resources/assets/particle_effects/lang/ru_ru.json create mode 100644 src/main/resources/assets/particle_effects/lang/tt_ru.json create mode 100644 src/main/resources/assets/particle_effects/lang/uk_ua.json create mode 100644 src/main/resources/assets/particle_effects/lang/zh_cn.json create mode 100644 src/main/resources/assets/particle_effects/particles/absorption.json create mode 100644 src/main/resources/assets/particle_effects/particles/bad_omen.json create mode 100644 src/main/resources/assets/particle_effects/particles/blindness.json create mode 100644 src/main/resources/assets/particle_effects/particles/conduit_power.json create mode 100644 src/main/resources/assets/particle_effects/particles/darkness.json create mode 100644 src/main/resources/assets/particle_effects/particles/dolphins_grace.json create mode 100644 src/main/resources/assets/particle_effects/particles/fire_resistance.json create mode 100644 src/main/resources/assets/particle_effects/particles/glowing.json create mode 100644 src/main/resources/assets/particle_effects/particles/haste.json create mode 100644 src/main/resources/assets/particle_effects/particles/health_boost.json create mode 100644 src/main/resources/assets/particle_effects/particles/hero_of_the_village.json create mode 100644 src/main/resources/assets/particle_effects/particles/hunger.json create mode 100644 src/main/resources/assets/particle_effects/particles/infested_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/instant_damage.json create mode 100644 src/main/resources/assets/particle_effects/particles/instant_health.json create mode 100644 src/main/resources/assets/particle_effects/particles/invisibility.json create mode 100644 src/main/resources/assets/particle_effects/particles/jump_boost.json create mode 100644 src/main/resources/assets/particle_effects/particles/levitation.json create mode 100644 src/main/resources/assets/particle_effects/particles/luck.json create mode 100644 src/main/resources/assets/particle_effects/particles/mining_fatigue.json create mode 100644 src/main/resources/assets/particle_effects/particles/nausea.json create mode 100644 src/main/resources/assets/particle_effects/particles/night_vision.json create mode 100644 src/main/resources/assets/particle_effects/particles/oozing_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/poison.json create mode 100644 src/main/resources/assets/particle_effects/particles/raid_omen_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/regeneration.json create mode 100644 src/main/resources/assets/particle_effects/particles/resistance.json create mode 100644 src/main/resources/assets/particle_effects/particles/saturation.json create mode 100644 src/main/resources/assets/particle_effects/particles/slow_falling.json create mode 100644 src/main/resources/assets/particle_effects/particles/slowness.json create mode 100644 src/main/resources/assets/particle_effects/particles/speed.json create mode 100644 src/main/resources/assets/particle_effects/particles/strength.json create mode 100644 src/main/resources/assets/particle_effects/particles/trial_omen_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/unluck.json create mode 100644 src/main/resources/assets/particle_effects/particles/water_breathing.json create mode 100644 src/main/resources/assets/particle_effects/particles/weakness.json create mode 100644 src/main/resources/assets/particle_effects/particles/weaving_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/wind_charged_new.json create mode 100644 src/main/resources/assets/particle_effects/particles/wither.json rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/absorption/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/absorption/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/bad_omen/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/bad_omen/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/blindness/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/blindness/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/conduit_power/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/conduit_power/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/darkness/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/darkness/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/dolphins_grace/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/dolphins_grace/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/fire_resistance/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/fire_resistance/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/glowing/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/glowing/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/haste/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/haste/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/health_boost/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/health_boost/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/hero_of_the_village/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/hero_of_the_village/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/hunger/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/hunger/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/infested/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/infested/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/instant_damage/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/instant_damage/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/instant_health/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/instant_health/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/invisibility/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/invisibility/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/jump_boost/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/jump_boost/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/levitation/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/levitation/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/luck/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/luck/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/mining_fatigue/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/mining_fatigue/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/nausea/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/nausea/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/night_vision/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/night_vision/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/oozing/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/oozing/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/poison/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/poison/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/raid_omen/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/raid_omen/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/regeneration/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/regeneration/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/resistance/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/resistance/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/saturation/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/saturation/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/slow_falling/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/slow_falling/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/slowness/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/slowness/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/speed/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/speed/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/strength/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/strength/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/trial_omen/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/trial_omen/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/unluck/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/unluck/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/water_breathing/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/water_breathing/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/weakness/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/weakness/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/weaving/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/weaving/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/wind_charged/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/wind_charged/2.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/wither/1.png (100%) rename src/main/resources/assets/{particle-effects => particle_effects}/textures/particle/wither/2.png (100%) rename src/main/resources/aws/{1.20.1.accesswidener => fabric-1.20.1.accesswidener} (100%) rename src/main/resources/aws/{1.21.1.accesswidener => fabric-1.21.1.accesswidener} (84%) rename src/main/resources/aws/{1.21.10.accesswidener => fabric-1.21.10.accesswidener} (87%) rename src/main/resources/aws/{1.21.4.accesswidener => fabric-1.21.4.accesswidener} (84%) rename src/main/resources/aws/{1.21.5.accesswidener => fabric-1.21.5.accesswidener} (84%) rename src/main/resources/aws/{1.21.6.accesswidener => fabric-1.21.6.accesswidener} (100%) rename src/main/resources/aws/{1.21.7.accesswidener => fabric-1.21.7.accesswidener} (84%) rename src/main/resources/aws/{1.21.8.accesswidener => fabric-1.21.8.accesswidener} (84%) rename src/main/resources/aws/{1.21.9.accesswidener => fabric-1.21.9.accesswidener} (87%) rename src/main/resources/aws/{1.21.accesswidener => fabric-1.21.accesswidener} (84%) create mode 100644 src/main/resources/aws/forge-1.20.1.cfg create mode 100644 src/main/resources/aws/neoforge-1.21.1.cfg create mode 100644 src/main/resources/aws/neoforge-1.21.10.cfg create mode 100644 src/main/resources/pack.mcmeta rename src/main/resources/{particle-effects.mixins.json5 => particle_effects.mixins.json5} (87%) delete mode 100644 versions/1.20.1/gradle.properties delete mode 100644 versions/1.21.1/gradle.properties delete mode 100644 versions/1.21.4/gradle.properties delete mode 100644 versions/1.21/gradle.properties create mode 100644 versions/fabric-1.20.1/gradle.properties create mode 100644 versions/fabric-1.21.1/gradle.properties rename versions/{1.21.10 => fabric-1.21.10}/gradle.properties (94%) create mode 100644 versions/fabric-1.21.4/gradle.properties rename versions/{1.21.5 => fabric-1.21.5}/gradle.properties (82%) rename versions/{1.21.6 => fabric-1.21.6}/gradle.properties (81%) rename versions/{1.21.7 => fabric-1.21.7}/gradle.properties (82%) rename versions/{1.21.8 => fabric-1.21.8}/gradle.properties (93%) rename versions/{1.21.9 => fabric-1.21.9}/gradle.properties (82%) create mode 100644 versions/fabric-1.21/gradle.properties create mode 100644 versions/forge-1.20.1/gradle.properties create mode 100644 versions/neoforge-1.21.1/gradle.properties create mode 100644 versions/neoforge-1.21.10/gradle.properties diff --git a/CHANGELOG.md b/CHANGELOG.md index 179df3f..493a5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ -- Updated to 1.21.9 -- Little code refactoring -- Added uk_ua.json by StarmanMine142 \ No newline at end of file +# (Neo)Forge Support +Particle Effects (and my other cool mods) will now support (Neo)Forge mod loader! + +## Why? +All my mods were released exclusively for Fabric, as my projects always used Yarn mappings. + +After the recent news about the end of support for Yarn mappings, it made sense to switch to the official Mojmap. + +Since mappings are no longer an issue, it's fairly easy for me to add Neo(Forge) support. + +## Which versions will be supported? +Only the main ones, the ones most played. + +Currently, I plan to support: +- Forge: 1.20.1 +- NeoForge: 1.20.1 1.21.1 1.21.10 + +If there are many requests to add another popular version to support, I (maybe) will add support for it. + +## Does this affect Fabric users? +Not really, it's the same for you; the highest priority is still given to Fabric support. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 93552d2..c24d418 100644 --- a/build.gradle +++ b/build.gradle @@ -1,38 +1,26 @@ plugins { - id("net.lopymine.mossy-plugin") + id "net.lopymine.mossy-plugin-core" version "$mossy_plugin_version" + id "maven-publish" } mossyDependencies { minecraft = stonecutter.current.version.toString() - mappings = prop("build.yarn") + mappings = "official" lombok = prop("base.lombok_version") + fabricApi = prop("build.fabric_api") fabricLoader = prop("build.fabric_loader") - additional { - // - By default, every additional project dependency ("dep.modId" from gradle.properties) will use - // - Modrinth Maven and "modImplementation" configuration name - // - If you want to override mod configuration name, you can do this: - - override("modCompileOnly", "modmenu") + forge = prop("build.forge") - // - It will do this: - // - modImplementation("maven.modrinth:modId:version") -> modCompileOnly("maven.modrinth:modId:version") + neoForge = prop("build.neoforge") + parchment = prop("build.parchment") - // - Or if you want to disable it and handle by yourself, just disable it auto handling: - - //disable("just_mod_id") + additional { + //override("modCompileOnly", "yacl") } } -dependencies { - mappings loom.officialMojangMappings() -} - -mossyResources { - //expandFiles = ["custom", "file", "patterns", "here"] -} - String prop(String key) { return findProperty(key).toString() } \ No newline at end of file diff --git a/buildSettings/build.gradle b/buildSettings/build.gradle deleted file mode 100644 index b703c9c..0000000 --- a/buildSettings/build.gradle +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - id 'java' - id 'java-gradle-plugin' -} - -def mainModuleId = property("main_module_id").toString() -def pluginMavenPackage = property("plugin_maven_package").toString() -def pluginPackage = property("plugin_package").toString() -def pluginClass = property("plugin_class").toString() -def pluginVersion = property("plugin_version").toString() - -group = pluginPackage -version = pluginVersion - -repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - maven { - name "Fabric" - url "https://maven.fabricmc.net/" - } - maven { - name "Kiku Snapshots" - url "https://maven.kikugie.dev/snapshots" - } - maven { - name "Kiku Releases" - url "https://maven.kikugie.dev/releases" - } -} - -dependencies { - compileOnly "org.projectlombok:lombok:${property("lombok_version")}" - annotationProcessor "org.projectlombok:lombok:${property("lombok_version")}" - - implementation "com.google.code.gson:gson:${property("gson_version")}" - - implementation "dev.kikugie.stonecutter:dev.kikugie.stonecutter.gradle.plugin:${property("stonecutter_version")}" -} - -test { - useJUnitPlatform() -} -gradlePlugin { - plugins { - create(mainModuleId) { - id = "${pluginMavenPackage}.${mainModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}" - } - } -} diff --git a/buildSettings/gradle.properties b/buildSettings/gradle.properties deleted file mode 100644 index 64c72f5..0000000 --- a/buildSettings/gradle.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Gradle Plugin properties - -# Plugin Properties -main_module_id = mossy-settings-plugin -plugin_maven_package = net.lopymine -plugin_package = net.lopymine.mossy.settings -plugin_class = MossySettingsPlugin -plugin_version = 1.0.0 - -# Dependencies -lombok_version = 1.18.32 -gson_version = 2.13.1 -stonecutter_version = 0.7.1 \ No newline at end of file diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java deleted file mode 100644 index a4cb657..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.lopymine.mossy.settings; - -import java.io.*; -import java.util.*; -import lombok.Getter; -import net.lopymine.mossy.settings.manager.*; -import org.gradle.api.*; - -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -@Getter -public class MossySettingsPlugin implements Plugin { - - @Override - public void apply(@NotNull Settings settings) { - Properties gradleProperties = getGradleProperties(settings.getRootDir()); - - settings.getRootProject().setName(getProperty(gradleProperties, "data.mod_name")); - - List additionalDependencies = getAdditionalDependencies(gradleProperties); - if (additionalDependencies.isEmpty()) { - System.out.println("No additional dependencies!"); - } else { - System.out.println("Found additional dependencies: [%s]".formatted(String.join(", ", additionalDependencies))); - } - - List multiVersions = getMultiVersions(gradleProperties); - - System.out.println("Found MC versions: [%s]".formatted(String.join(", ", multiVersions))); - - StonecutterManager.apply(settings, multiVersions); - AccessWidenerManager.apply(settings, multiVersions); - VersionedGradlePropertiesManager.apply(settings, gradleProperties, multiVersions, additionalDependencies); - } - - public List getAdditionalDependencies(Properties properties) { - List additionalDepends = new ArrayList<>(); - - for (Map.Entry entry : properties.entrySet()) { - String key = entry.getKey().toString(); - if (key.startsWith("dep.")) { - int i = key.indexOf(".") + 1; - String modId = key.substring(i); - additionalDepends.add(modId); - } - } - - return additionalDepends; - } - - public static List getMultiVersions(Properties gradleProperties) { - String multiVersions = getProperty(gradleProperties, "multi_versions"); - - List versions = new ArrayList<>(); - - for (String s : multiVersions.split(" ")) { - int index = s.indexOf("["); - if (index == -1) { - versions.add(s); - } else { - versions.add(s.substring(0, index)); - } - } - - return versions; - } - - public static String getProperty(Properties gradleProperties, String id) { - if (!gradleProperties.containsKey(id)) { - throw new IllegalArgumentException("Missing important property with id \"%s\" !".formatted(id)); - } - return gradleProperties.get(id).toString(); - } - - public static @NotNull Properties getGradleProperties(File project) { - Properties properties = new Properties(); - try (FileReader reader = new FileReader(project.toPath().resolve("gradle.properties").toFile())) { - properties.load(reader); - } catch (Exception e) { - throw new RuntimeException(e); - } - return properties; - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java deleted file mode 100644 index 66cf72c..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.settings.api; - -public class FabricDependenciesAPI { - - public static String getYarnVersion(String minecraftVersion) { - try { - return JsonHelper.get("https://meta.fabricmc.net/v2/versions/yarn/%s?limit=1".formatted(minecraftVersion)) - .getAsJsonArray() - .get(0) - .getAsJsonObject() - .get("version") - .getAsString(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java deleted file mode 100644 index 2291f5f..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.lopymine.mossy.settings.api; - -import com.google.gson.*; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import java.io.*; -import java.net.*; -import java.nio.charset.StandardCharsets; - - -public class JsonHelper { - - public static JsonElement get(String url) throws Exception { - URI uri = URI.create(url); - HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection(); - connection.setRequestMethod("GET"); - JsonReader jsonReader = new JsonReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); - return new Gson().fromJson(jsonReader, TypeToken.get(JsonElement.class)); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java deleted file mode 100644 index 3e61dc3..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.lopymine.mossy.settings.api; - -import com.google.gson.*; -import java.io.*; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import org.jetbrains.annotations.NotNull; - -public class ModrinthDependenciesAPI { - - @NotNull - public static String getVersion(String modId, String minecraftVersion, String loader) { - String encodedLoader = URLEncoder.encode("[\"%s\"]".formatted(loader), StandardCharsets.UTF_8); - String encodedMinecraftVersion = URLEncoder.encode("[\"%s\"]".formatted(minecraftVersion), StandardCharsets.UTF_8); - String url = "https://api.modrinth.com/v2/project/%s/version?loaders=%s&game_versions=%s".formatted(modId, encodedLoader, encodedMinecraftVersion); - JsonElement element; - try { - element = JsonHelper.get(url); - } catch (FileNotFoundException e) { - System.out.printf("\nFailed to find Modrinth project with id \"%s\"%n", modId); - e.printStackTrace(System.out); - return "unknown"; - } catch (Exception e) { - e.printStackTrace(System.out); - return "unknown"; - } - JsonArray array = element.getAsJsonArray(); - if (array.isEmpty()) { - return "unknown"; - } - JsonElement jsonElement = array.get(0); - JsonObject jsonObject = jsonElement.getAsJsonObject(); - - return jsonObject.get("version_number").getAsString(); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java deleted file mode 100644 index 8aa33bb..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import java.io.*; -import java.nio.file.Path; -import java.util.List; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.*; - -public class AccessWidenerManager { - - public static void apply(@NotNull Settings settings, List multiVersions) { - Path path = settings.getRootDir().toPath(); - for (String version : multiVersions) { - createExampleAccessWidener(path, version); - } - } - - public static void createExampleAccessWidener(Path rootProject, String version) { - File awFile = createAWFile(rootProject, version); - if (awFile == null) { - return; - } - - try (FileWriter writer = new FileWriter(awFile)) { - writer.write("accessWidener v2 named\n"); - writer.write("# " + version + " AW\n"); - } catch (Exception e) { - throw new RuntimeException(e); - } - - System.out.println("Successfully created AW for " + version); - } - - @Nullable - private static File createAWFile(Path rootProject, String version) { - Path awsFolder = rootProject.resolve("src/main/resources/aws/"); - File awsFolderFile = awsFolder.toFile(); - if (!awsFolderFile.exists() && !awsFolderFile.mkdirs()) { - System.out.println("Failed to get or create AW folder for " + version); - return null; - } - - File versionedAWFile = awsFolder.resolve(version + ".accesswidener").toFile(); - if (versionedAWFile.exists()) { - return null; - } - - try { - if (!versionedAWFile.createNewFile()) { - System.out.println("Failed to create AW file for " + version); - return null; - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - return versionedAWFile; - } -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java deleted file mode 100644 index 8277af3..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import dev.kikugie.stonecutter.settings.StonecutterSettingsExtension; -import java.util.List; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -public class StonecutterManager { - - public static void apply(@NotNull Settings settings, List versions) { - StonecutterSettingsExtension stonecutter = settings.getExtensions().getByType(StonecutterSettingsExtension.class); - stonecutter.create(settings.getRootProject(), (builder) -> { - builder.versions(versions); - builder.getVcsVersion().set(versions.get(versions.size() - 1)); - }); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java deleted file mode 100644 index c3e46f0..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java +++ /dev/null @@ -1,186 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.nio.file.*; -import java.util.*; -import java.util.function.*; -import net.lopymine.mossy.settings.api.*; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -public class VersionedGradlePropertiesManager { - - public static void apply(@NotNull Settings settings, Properties gradleProperties, List multiVersions, List additionalDependencies) { - Path path = settings.getRootDir().toPath(); - - for (String version : multiVersions) { - try { - createGradleProperties( - path, - version, - additionalDependencies, - gradleProperties, - (modId, ver) -> ModrinthDependenciesAPI.getVersion(modId, version, "fabric"), - FabricDependenciesAPI::getYarnVersion - ); - } catch (Exception e) { - throw new RuntimeException("Failed to create versioned gradle properties for " + version + ", reason: " + e.getMessage(), e); - } - } - } - - public static void createGradleProperties(Path rootPath, String version, List additionalDependencies, Properties rootGradleProperties, BiFunction dependResolver, Function yarnResolver) throws IOException { - File file = getOrCreateGradlePropertiesFile(rootPath, version); - if (file == null) { - return; - } - - Properties gradleProperties = new Properties(); - try (InputStream in = new FileInputStream(file)) { - gradleProperties.load(in); - } - - String fileText = Files.readString(file.toPath(), StandardCharsets.UTF_8); - boolean isEmpty = fileText.isBlank(); - - List missingDependencies = new ArrayList<>(); - for (String id : additionalDependencies) { - String key = "dep." + id; - String markerVal = rootGradleProperties.getProperty(key); - if (!"[VERSIONED]".equals(markerVal)) { - continue; - } - if (!gradleProperties.containsKey(key)) { - missingDependencies.add(id); - } - } - - List oldDependencies = new ArrayList<>(); - for (String key : gradleProperties.stringPropertyNames()) { - if (!key.startsWith("dep.")) { - continue; - } - String markerVal = rootGradleProperties.getProperty(key); - if (markerVal != null && !"[VERSIONED]".equals(markerVal)) { - oldDependencies.add(key); - continue; - } - String shortId = substringSince(key, "."); - if (!additionalDependencies.contains(shortId)) { - oldDependencies.add(key); - } - } - - boolean update = fileText.replace(" ", "").contains("=[UPDATE]"); - - if (!isEmpty && !update && missingDependencies.isEmpty() && oldDependencies.isEmpty()) { - return; - } - - if (isEmpty) { - StringBuilder builder = new StringBuilder(); - builder.append("# Versioned Properties\n"); - builder.append("# Tip: You can set any dependency value to \"[UPDATE]\"\n"); - builder.append("# and reload Gradle to update only it's value.\n\n"); - builder.append("# Fabric Properties, check https://fabricmc.net/develop/\n"); - builder.append("build.yarn=").append(yarnResolver.apply(version)).append("\n"); - builder.append("build.fabric_api=").append(dependResolver.apply("fabric-api", version)); - if (!additionalDependencies.isEmpty()) { - builder.append("\n\n"); - builder.append("# Additional Dependencies Properties\n"); - for (String depend : additionalDependencies) { - builder.append("# ").append(depend).append(", check https://modrinth.com/mod/").append(depend).append("/versions?g=").append(version).append("&l=fabric\n"); - builder.append("dep.").append(depend).append("=").append(dependResolver.apply(depend, version)).append("\n"); - } - } - Files.writeString(file.toPath(), builder.toString(), StandardCharsets.UTF_8); - System.out.println("Successfully created gradle.properties for " + version); - return; - } - - if (update) { - String text = fileText.replace(" ", "ㅤ").trim(); - for (String key : gradleProperties.stringPropertyNames()) { - String value = gradleProperties.getProperty(key); - if (!"[UPDATE]".equals(value)) { - continue; - } - String oldLine = key + "=[UPDATE]"; - String updatedLine = null; - if (key.startsWith("dep.")) { - String depId = substringSince(key, "."); - updatedLine = key + "=" + dependResolver.apply(depId, version); - } else if (key.startsWith("build.")) { - String buildProp = substringSince(key, "."); - if ("yarn".equals(buildProp)) { - updatedLine = key + "=" + yarnResolver.apply(version); - } else if ("fabric_api".equals(buildProp)) { - updatedLine = key + "=" + dependResolver.apply("fabric-api", version); - } - } - if (updatedLine == null) { - continue; - } - text = text.replace(oldLine, updatedLine); - } - String finalText = text.replace("ㅤ", " "); - Files.writeString(file.toPath(), finalText, StandardCharsets.UTF_8); - System.out.println("Successfully updated gradle.properties for " + version); - } - - if (!missingDependencies.isEmpty()) { - String text = Files.readString(file.toPath(), StandardCharsets.UTF_8); - if (!text.endsWith("\n")) text = text + "\n"; - StringBuilder builder = new StringBuilder(text); - for (String depend : missingDependencies) { - builder.append("# ").append(depend).append(", check https://modrinth.com/mod/").append(depend).append("/versions?g=").append(version).append("&l=fabric\n"); - builder.append("dep.").append(depend).append("=").append(dependResolver.apply(depend, version)).append("\n"); - } - Files.writeString(file.toPath(), builder.toString(), StandardCharsets.UTF_8); - System.out.println("Successfully added new depends " + missingDependencies + " to gradle.properties for " + version); - } - - if (!oldDependencies.isEmpty()) { - String text = Files.readString(file.toPath(), StandardCharsets.UTF_8); - List removed = new ArrayList<>(); - for (String fullKey : oldDependencies) { - String dep = substringSince(fullKey, "."); - String propValue = gradleProperties.getProperty(fullKey); - String block = "# " + dep + ", check https://modrinth.com/mod/" + dep + "/versions?g=" + version + "&l=fabric\n" + "dep." + dep + "=" + propValue + "\n"; - text = text.replace(block, ""); - removed.add(dep); - } - Files.writeString(file.toPath(), text, StandardCharsets.UTF_8); - System.out.println("Successfully removed old depends " + removed + " from gradle.properties for " + version); - } - } - - private static File getOrCreateGradlePropertiesFile(Path path, String version) { - try { - Path folder = path.resolve("versions/" + version); - File folderFile = folder.toFile(); - if (!folderFile.exists() && !folderFile.mkdirs()) { - System.out.println("Failed to get or create folder for " + version); - return null; - } - File gradlePropertiesFile = folder.resolve("gradle.properties").toFile(); - if (!gradlePropertiesFile.exists() && !gradlePropertiesFile.createNewFile()) { - System.out.println("Failed to get or create gradle.properties for " + version); - return null; - } - return gradlePropertiesFile; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @SuppressWarnings("all") - private static String substringSince(String text, String since) { - int index = text.indexOf(since); - if (index == -1) { - return text; - } - return text.substring(index + 1); - } -} diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index ece3d83..0000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -plugins { - id 'java' - id 'java-gradle-plugin' -} - -def mainModuleId = property("main_module_id").toString() -def stonecutterModuleId = property("stonecutter_module_id").toString() -def pluginMavenPackage = property("plugin_maven_package").toString() -def pluginPackage = property("plugin_package").toString() -def pluginClass = property("plugin_class").toString() -def pluginVersion = property("plugin_version").toString() - -group = pluginPackage -version = pluginVersion - -repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - maven { - name "Fabric" - url "https://maven.fabricmc.net/" - } - maven { - name "Kiku Snapshots" - url "https://maven.kikugie.dev/snapshots" - } - maven { - name "Kiku Releases" - url "https://maven.kikugie.dev/releases" - } -} - -dependencies { - compileOnly "org.projectlombok:lombok:${property("lombok_version")}" - annotationProcessor "org.projectlombok:lombok:${property("lombok_version")}" - - implementation "me.modmuss50.mod-publish-plugin:me.modmuss50.mod-publish-plugin.gradle.plugin:${property("mod_publish_plugin_version")}" - implementation "dev.kikugie.stonecutter:dev.kikugie.stonecutter.gradle.plugin:${property("stonecutter_version")}" - implementation "dev.kikugie.fletching-table:dev.kikugie.fletching-table.gradle.plugin:${property("fletching_table_version")}" - implementation "fabric-loom:fabric-loom.gradle.plugin:${property("fabric_loom_version")}" -} - -test { - useJUnitPlatform() -} -gradlePlugin { - plugins { - create(mainModuleId) { - id = "${pluginMavenPackage}.${mainModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}" - } - create(stonecutterModuleId) { - id = "${pluginMavenPackage}.${stonecutterModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}Stonecutter" - } - } -} diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties deleted file mode 100644 index 8a24066..0000000 --- a/buildSrc/gradle.properties +++ /dev/null @@ -1,17 +0,0 @@ -# Gradle Plugin properties - -# Plugin Properties -main_module_id = mossy-plugin -stonecutter_module_id = mossy-plugin-stonecutter -plugin_maven_package = net.lopymine -plugin_package = net.lopymine.mossy -plugin_class = MossyPlugin - -plugin_version = 1.0.0 - -# Dependencies -lombok_version = 1.18.32 -mod_publish_plugin_version = 0.7.4 -stonecutter_version = 0.7.1 -fabric_loom_version = 1.11-SNAPSHOT -fletching_table_version = 0.1.0-alpha.17 \ No newline at end of file diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java deleted file mode 100644 index 32dd311..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.lopymine.mossy; - -import org.gradle.api.Project; - -public class MossyLogger { - - private Project project; - - public void setup(Project project) { - this.project = project; - } - - @SuppressWarnings("all") - public void log(String text, Object... objects) { - System.out.println("[Mossy/%s] %s".formatted(this.project.getName(), text.formatted(objects))); - } - - @SuppressWarnings("all") - public void logModule(String module, String text, Object... objects) { - System.out.println("[Mossy/%s/%s] %s".formatted(this.project.getName(), module, text.formatted(objects))); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java deleted file mode 100644 index 52fd189..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java +++ /dev/null @@ -1,312 +0,0 @@ -package net.lopymine.mossy; - -import dev.kikugie.stonecutter.build.StonecutterBuildExtension; -import lombok.Getter; -import me.modmuss50.mpp.ModPublishExtension; -import org.gradle.api.*; -import org.gradle.api.plugins.*; -import org.gradle.api.tasks.*; -import org.gradle.jvm.tasks.Jar; - -import net.fabricmc.loom.api.LoomGradleExtensionAPI; -import net.fabricmc.loom.task.RemapJarTask; - -import net.lopymine.mossy.manager.*; -import net.lopymine.mossy.multi.MultiVersion; -import net.lopymine.mossy.tasks.*; - -import java.io.*; -import java.nio.file.Files; -import java.util.*; -import java.util.Map.Entry; -import org.jetbrains.annotations.NotNull; - -@Getter -public class MossyPlugin implements Plugin { - - public static final MossyLogger LOGGER = new MossyLogger(); - - private MultiVersion projectMultiVersion; - private int javaVersionIndex; - private JavaVersion javaVersion; - - @Override - public void apply(@NotNull Project project) { - LOGGER.setup(project); - - // - - PluginContainer plugins = project.getPlugins(); - plugins.apply("dev.kikugie.stonecutter"); - plugins.apply("fabric-loom"); - plugins.apply("me.modmuss50.mod-publish-plugin"); - plugins.apply("dev.kikugie.fletching-table"); - - // - - this.projectMultiVersion = MossyPlugin.getProjectMultiVersion(project); - this.javaVersionIndex = MossyPlugin.getJavaVersion(project); - this.javaVersion = JavaVersion.toVersion(this.javaVersionIndex); - - // - - MossyPlugin.configureProject(project, this); - - MossyJavaManager.apply(project,this); - MossyJ52JManager.apply(project); - MossyProcessResourcesManager.apply(project, this); - - MossyDependenciesManager.apply(project); - MossyStonecutterManager.apply(project, this); - - // - - MossyPlugin.configureExtensions(project, this); - MossyPlugin.configureTasks(project, this); - - LOGGER.log("Project Version: %s", project.getVersion()); - LOGGER.log("Java Version: %s", this.javaVersionIndex); - } - - private static void configureExtensions(@NotNull Project project, MossyPlugin plugin) { - project.getExtensions().configure(LoomGradleExtensionAPI.class, (loom) -> { - MossyLoomManager.apply(project, plugin, loom); - }); - - project.getExtensions().configure(ModPublishExtension.class, (mpe) -> { - MossyModPublishManager.apply(project, plugin, mpe); - }); - } - - private static void configureTasks(@NotNull Project project, MossyPlugin plugin) { - project.getTasks().register("generatePublishWorkflowsForEachVersion", GeneratePublishWorkflowsForEachVersionTask.class, (task) -> { - task.setGroup("mossy"); - }); - project.getTasks().register("generatePersonalProperties", GeneratePersonalPropertiesTask.class, (task) -> { - task.setGroup("mossy"); - }); - project.getTasks().register("regenerateRunConfigurations", Delete.class, (task) -> { - task.setGroup("mossy"); - String version = plugin.getProjectMultiVersion().projectVersion(); - task.delete(getRootFile(project, ".idea/runConfigurations/Minecraft_Client___%s__%s.xml".formatted(version.replace(".", "_"), version))); - task.delete(getRootFile(project, ".idea/runConfigurations/Minecraft_Server___%s__%s.xml".formatted(version.replace(".", "_"), version))); - task.finalizedBy("ideaSyncTask"); - }); - project.getTasks().register("rebuildLibs", Delete.class, task -> { - task.setGroup("build"); - String modName = getProperty(project, "data.mod_name").replace(" ", ""); - String version = project.getVersion().toString(); - - String jarFileName = "libs/%s-%s.jar".formatted(modName, version); - String sourcesJarFileName = "libs/%s-%s-sources.jar".formatted(modName, version); - - task.delete(getRootFile(project, jarFileName)); - task.delete(project.getLayout().getBuildDirectory().file(jarFileName)); - task.delete(project.getLayout().getBuildDirectory().file(sourcesJarFileName)); - }); - project.getTasks().named("build", task -> { - task.mustRunAfter("rebuildLibs"); - }); - project.getTasks().register("buildAndCollect", Copy.class, task -> { - task.setGroup("build"); - task.dependsOn("rebuildLibs", "build"); - task.from(((RemapJarTask) project.getTasks().getByName("remapJar")).getArchiveFile().get()); - task.into(getRootFile(project, "libs/")); - }); - for (String publishTask : List.of("publishModrinth", "publishCurseforge")) { - project.getTasks().named(publishTask).configure((task) -> { - task.doLast((t) -> { - try { - Thread.sleep(1000L); - } catch (Exception e) { - MossyPlugin.LOGGER.log("Failed to wait before publishing!"); - e.printStackTrace(); - } - }); - }); - } - } - - private static void configureProject(@NotNull Project project, MossyPlugin plugin) { - String projectVersion = plugin.getMossyProjectVersion(project); - String mavenGroup = getProperty(project, "data.mod_maven_group"); - project.setVersion(projectVersion); - project.setGroup(mavenGroup); - - BasePluginExtension base = project.getExtensions().getByType(BasePluginExtension.class); - base.getArchivesName().set(getProperty(project, "data.mod_name").replace(" ", "")); - - Jar jar = (Jar) project.getTasks().getByName("jar"); - jar.getArchiveBaseName().set(base.getArchivesName().get()); - jar.from(getRootFile(project, "LICENSE"), (spec) -> { - spec.rename(s -> "%s_%s".formatted(s, base.getArchivesName().get())); - }); - } - - public static int getJavaVersion(Project project) { - String currentMCVersion = getCurrentMCVersion(project); - StonecutterBuildExtension stonecutter = getStonecutter(project); - return stonecutter.compare("1.20.5", currentMCVersion) == 1 ? - stonecutter.compare("1.18", currentMCVersion) == 1 ? - stonecutter.compare("1.16.5", currentMCVersion) == 1 ? - 8 - : - 16 - : - 17 - : - 21; - } - - - public static MultiVersion getProjectMultiVersion(@NotNull Project currentProject) { - String currentMCVersion = getCurrentMCVersion(currentProject); - - String[] versions = getProperty(currentProject, "versions_specifications").split(" "); - for (String version : versions) { - String[] split = version.substring(0, version.length()-1).split("\\["); - String project = split[0]; - if (Objects.equals(project, currentMCVersion)) { - String supportedVersionsString = split[1]; - if (supportedVersionsString.contains("-")) { - String[] supportedVersions = supportedVersionsString.split("-"); - return new MultiVersion(currentMCVersion, supportedVersions[0], supportedVersions[1]); - } else if (supportedVersionsString.contains(".")) { - return new MultiVersion(currentMCVersion, currentMCVersion, supportedVersionsString); - } else { - int a = project.indexOf("."); - int i = project.lastIndexOf("."); - if (a == i) { - i = project.length(); - } - String p = project.substring(0, i); - String supportedMaxVersion = "%s.%s".formatted(p, supportedVersionsString); - return new MultiVersion(currentMCVersion, currentMCVersion, supportedMaxVersion); - } - } - } - return new MultiVersion(currentMCVersion, currentMCVersion, currentMCVersion); - } - - public static Properties getPersonalProperties(@NotNull Project project) { - File file = project.getRootProject().file("personal/personal.properties"); - Properties personalProperties = new Properties(); - - if (!file.exists()) { - return personalProperties; - } - - try (InputStream stream = new FileInputStream(file)) { - personalProperties.load(stream); - } catch (IOException e) { - LOGGER.log("Something went wrong when parsing personal properties:"); - LOGGER.log(e.getMessage()); - } - - try { - String mixinPath = "absolute_path_to_sponge_mixin"; - - for (String line : Files.readAllLines(file.toPath())) { - if (!line.startsWith(mixinPath)) { - continue; - } - personalProperties.setProperty(mixinPath, line.substring(mixinPath.length() + 1)); - } - } catch (Exception e) { - LOGGER.log("Something went wrong when parsing personal properties mixin path:"); - LOGGER.log(e.getMessage()); - } - - return personalProperties; - } - - public static Map getMossyProperties(Project project, String prefix) { - HashMap dependencies = new HashMap<>(); - - Map properties = project.getProperties(); - for (Entry entry : properties.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - if (!key.startsWith(prefix + ".")) { - continue; - } - dependencies.put(substringSince(key, "."), value.toString()); - } - - return dependencies; - } - - public static String getCurrentMCVersion(@NotNull Project project) { - return getStonecutter(project).getCurrent().getProject(); - } - - public static @NotNull StonecutterBuildExtension getStonecutter(@NotNull Project project) { - return (StonecutterBuildExtension) project.getExtensions().getByName("stonecutter"); - } - - public static String getProperty(@NotNull Project project, String id) { - Map properties = project.getProperties(); - if (!properties.containsKey(id)) { - throw new IllegalArgumentException("Missing important property with id \"%s\" !".formatted(id)); - } - return properties.get(id).toString(); - } - - public static String[] getMultiVersions(@NotNull Project project) { - return getProperty(project, "multi_versions").split(" "); - } - - public static List getVersionsSpecifications(@NotNull Project project) { - return Arrays.stream(getProperty(project, "versions_specifications") - .split(" ")) - .map((version) -> substringBefore(version, "[")) - .toList(); - } - - @SuppressWarnings("unused") - public static String substringBeforeLast(String value, String since) { - int i = value.lastIndexOf(since); - if (i == -1) { - return value; - } - return value.substring(0, i); - } - - @SuppressWarnings("unused") - public static String substringSinceLast(String value, String since) { - int i = value.lastIndexOf(since); - if (i == -1) { - return value; - } - return value.substring(i + 1); - } - - @SuppressWarnings("unused") - public static String substringBefore(String value, String since) { - int i = value.indexOf(since); - if (i == -1) { - return value; - } - return value.substring(0, i); - } - - @SuppressWarnings("unused") - public static String substringSince(String value, String since) { - int i = value.indexOf(since); - if (i == -1) { - return value; - } - return value.substring(i + 1); - } - - public String getMossyProjectVersion(Project project) { - String modVersion = getProperty(project, "data.mod_version"); - MultiVersion multiVersion = this.getProjectMultiVersion(); - return "%s+%s".formatted(modVersion, multiVersion.projectVersion()); - } - - public static File getRootFile(@NotNull Project project, String path) { - return project.getRootProject().file(path); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java deleted file mode 100644 index fd6b6fc..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java +++ /dev/null @@ -1,115 +0,0 @@ -package net.lopymine.mossy; - -import dev.kikugie.stonecutter.controller.StonecutterControllerExtension; -import dev.kikugie.stonecutter.data.StonecutterProject; -import lombok.experimental.ExtensionMethod; -import org.gradle.*; -import org.gradle.api.*; -import org.gradle.api.initialization.Settings; -import org.gradle.api.invocation.Gradle; -import org.gradle.api.tasks.*; - -import java.util.List; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyPluginStonecutter implements Plugin { - - @Override - public void apply(@NotNull Project project) { - TaskContainer tasks = project.getTasks(); - StonecutterControllerExtension controller = project.getExtensions().getByType(StonecutterControllerExtension.class); - - for (StonecutterProject version : controller.getVersions()) { - tasks.register("buildAndCollect+%s".formatted(version.getProject()), (task) -> { - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - task.setGroup("mossy-build"); - }); - } - - for (StonecutterProject version : controller.getVersions()) { - tasks.register("publish+%s".formatted(version.getProject()), (task) -> { - task.dependsOn(":%s:publishMods".formatted(version.getProject())); - task.setGroup("mossy-publish"); - }); - } - - tasks.register("buildAndCollect+All", (task) -> { - controller.getVersions().forEach((version) -> { - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - }); - task.setGroup("mossy-build"); - }); - - tasks.register("buildAndCollect+Specified", (task) -> { - List versionsSpecifications = project.getVersionsSpecifications(); - controller.getVersions().forEach((version) -> { - if (!versionsSpecifications.contains(version.getProject())) { - return; - } - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - }); - task.setGroup("mossy-build"); - }); - - tasks.register("publish+All", (task) -> { - List versions = controller.getVersions() - .stream() - .sorted((a, b) -> controller.compare(a.getProject(), b.getProject())) - .toList(); - - for (String publishTask : List.of("publishModrinth", "publishCurseforge")) { - for (int i = 1; i < versions.size(); i++) { - StonecutterProject first = versions.get(i - 1); - StonecutterProject second = versions.get(i); - - TaskProvider firstTask = project.getChildProjects().get(first.getProject()).getTasks().named(publishTask); - TaskProvider secondTask = project.getChildProjects().get(second.getProject()).getTasks().named(publishTask); - task.dependsOn(firstTask, secondTask); - - secondTask.configure((t) -> t.setMustRunAfter(List.of(firstTask))); - } - } - - task.setGroup("mossy-publish"); - }); - - tasks.register("publish+Specified", (task) -> { - List versionsSpecifications = project.getVersionsSpecifications(); - controller.getVersions().forEach((version) -> { - if (!versionsSpecifications.contains(version.getProject())) { - return; - } - task.dependsOn(":%s:publishMods".formatted(version.getProject())); - }); - task.setGroup("mossy-publish"); - }); - - project.getGradle().addBuildListener(new BuildListener() { - @Override - public void settingsEvaluated(@NotNull Settings settings) { - - } - - @Override - public void projectsLoaded(@NotNull Gradle gradle) { - - } - - @Override - public void projectsEvaluated(@NotNull Gradle gradle) { - for (Task task : tasks) { - if (!"stonecutter".equals(task.getGroup())) { - continue; - } - task.setGroup("mossy-stonecutter"); - } - } - - @Override - public void buildFinished(@NotNull BuildResult result) { - - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java deleted file mode 100644 index 1bbd41b..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; - -import java.util.*; - -@Getter -public class MossyAdditionalDependencies { - - private final Map overrides = new HashMap<>(); - private final Set disabled = new HashSet<>(); - - public void override(String configurationName, String modId) { - this.overrides.put(modId, new AdditionalDependencyOverride(modId, configurationName)); - } - - public void disable(String modId) { - this.disabled.add(modId); - } - - public record AdditionalDependencyOverride(String modId, String configurationName) { - - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java deleted file mode 100644 index 2622f70..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; -import org.gradle.api.Action; -import org.gradle.api.tasks.*; - -@Getter -public class MossyDependenciesExtension { - - @Input - String minecraft; - - @Input - String mappings; - - @Input - String fabricApi; - - @Input - String fabricLoader; - - @Input - String lombok; - - @Nested - MossyAdditionalDependencies additional = new MossyAdditionalDependencies(); - - public void additional(Action action) { - action.execute(this.additional); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java deleted file mode 100644 index 51a1b19..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; -import org.gradle.api.tasks.Input; - -import java.util.List; -import org.jetbrains.annotations.Nullable; - -@Getter -public class MossyProcessResourcesExtension { - - @Input - @Nullable - List expandFiles; - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java deleted file mode 100644 index 928d52d..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java +++ /dev/null @@ -1,121 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.artifacts.dsl.DependencyHandler; -import org.gradle.api.artifacts.repositories.MavenArtifactRepository; - -import net.lopymine.mossy.*; -import net.lopymine.mossy.extension.*; -import net.lopymine.mossy.extension.MossyAdditionalDependencies.AdditionalDependencyOverride; - -import java.util.*; -import java.util.function.Consumer; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyDependenciesManager { - - private static void addDependencies(MossyDependenciesExtension extension, Project project) { - String minecraft = extension.getMinecraft(); - String mappings = extension.getMappings(); - String fabricApi = extension.getFabricApi(); - String fabricLoader = extension.getFabricLoader(); - String lombok = extension.getLombok(); - - DependencyHandler dependencies = project.getDependencies(); - dependencies.add("minecraft", "com.mojang:minecraft:%s".formatted(minecraft)); - //dependencies.add("mappings", "net.fabricmc:yarn:%s:v2".formatted(mappings)); - dependencies.add("modImplementation", "net.fabricmc.fabric-api:fabric-api:%s".formatted(fabricApi)); - dependencies.add("modImplementation", "net.fabricmc:fabric-loader:%s".formatted(fabricLoader)); - dependencies.add("compileOnly", "org.projectlombok:lombok:%s".formatted(lombok)); - dependencies.add("annotationProcessor", "org.projectlombok:lombok:%s".formatted(lombok)); - - Map properties = project.getMossyProperties("dep"); - MossyAdditionalDependencies additional = extension.getAdditional(); - additional.disable("yacl"); - - Map overrides = additional.getOverrides(); - Set disabled = additional.getDisabled(); - properties.forEach((modId, version) -> { - if (disabled.contains(modId)) { - //System.out.println("Disabling auto-dependency for %s !".formatted(modId)); - return; - } - - if (version.equals("unknown")) { - return; - } - - AdditionalDependencyOverride override = overrides.get(modId); - String configurationName = override != null ? override.configurationName() : "modImplementation"; - dependencies.add(configurationName, "maven.modrinth:%s:%s".formatted(modId, version)); - }); - - project.getConfigurations().forEach((configuration) -> { - configuration.resolutionStrategy((strategy) -> { - strategy.force("com.twelvemonkeys.common:common-io:3.10.0"); - strategy.force("com.twelvemonkeys.common:common-lang:3.10.0"); - strategy.force("com.twelvemonkeys.common:common-image:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-metadata:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-webp:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-core:3.10.0"); - }); - }); - - String yaclVersion = properties.get("yacl"); - if (yaclVersion != null && !yaclVersion.equals("unknown")) { - Set oldMavenVersions = Set.of("1.19.4", "1.20", "1.20.2", "1.20.3"); - if (oldMavenVersions.contains(minecraft)) { - dependencies.add("modImplementation", "dev.isxander.yacl:yet-another-config-lib-fabric:%s".formatted(MossyPlugin.substringBeforeLast(yaclVersion, "-"))); - } else { - dependencies.add("modImplementation", "dev.isxander:yet-another-config-lib:%s".formatted(yaclVersion)); - } - } - } - - private static void addRepositories(Project project) { - project.getRepositories().mavenCentral(); - addRepository(project, "Quilt", "https://maven.quiltmc.org/repository/release/"); - addRepository(project, "Sonatype", "https://oss.sonatype.org/content/repositories/snapshots/"); - addRepository(project, "Terraformers", "https://maven.terraformersmc.com/"); - addRepository(project, "YACL", "https://maven.isxander.dev/releases"); - addRepository(project, "Nucleoid", "https://maven.nucleoid.xyz/"); - addRepository(project, "Modrinth", "https://api.modrinth.com/maven", (repository) -> { - repository.content((descriptor) -> { - descriptor.includeGroup("maven.modrinth"); - }); - }); - - } - - private static void addRepository(Project project, String name, String url) { - addRepository(project, name, url, (repository) -> {}); - } - - private static void addRepository(Project project, String name, String url, Consumer consumer) { - project.getRepositories().maven((repository) -> { - repository.setName(name); - repository.setUrl(url); - consumer.accept(repository); - }); - } - - public static void apply(@NotNull Project project) { - project.getExtensions().create("mossyDependencies", MossyDependenciesExtension.class); - - addRepositories(project); - project.getGradle().addProjectEvaluationListener(new ProjectEvaluationListener() { - @Override - public void beforeEvaluate(@NotNull Project project) { - } - - @Override - public void afterEvaluate(@NotNull Project project, @NotNull ProjectState state) { - MossyDependenciesExtension extension = project.getExtensions().getByType(MossyDependenciesExtension.class); - MossyDependenciesManager.addDependencies(extension, project); - project.getGradle().removeProjectEvaluationListener(this); - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java deleted file mode 100644 index e77e652..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.manager; - -import dev.kikugie.fletching_table.extension.FletchingTableExtension; -import lombok.experimental.ExtensionMethod; -import net.lopymine.mossy.MossyPlugin; -import org.gradle.api.Project; - -@ExtensionMethod(MossyPlugin.class) -public class MossyJ52JManager { - - public static void apply(Project project) { - project.getExtensions().configure(FletchingTableExtension.class, (extension) -> { - var main = extension.getJ52j().register("main"); - main.configure((container) -> container.extension("json", "**/*.json5")); - }); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java deleted file mode 100644 index da89d8a..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.plugins.*; -import org.gradle.api.tasks.TaskCollection; -import org.gradle.api.tasks.compile.JavaCompile; - -import net.lopymine.mossy.MossyPlugin; - -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyJavaManager { - - public static void apply(@NotNull Project project, MossyPlugin mossyPlugin) { - int javaVersionIndex = mossyPlugin.getJavaVersionIndex(); - JavaVersion javaVersion = mossyPlugin.getJavaVersion(); - - TaskCollection collection = project.getTasks().withType(JavaCompile.class); - for (JavaCompile javaCompile : collection) { - javaCompile.getOptions().getRelease().set(javaVersionIndex); - } - - JavaPluginExtension javaExtension = project.getExtensions().getByType(JavaPluginExtension.class); - javaExtension.setSourceCompatibility(javaVersion); - javaExtension.setTargetCompatibility(javaVersion); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java deleted file mode 100644 index 4f63a65..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; - -import net.fabricmc.loom.api.LoomGradleExtensionAPI; -import net.fabricmc.loom.configuration.ide.RunConfigSettings; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.File; -import java.util.*; -import java.util.regex.Pattern; -import org.jetbrains.annotations.*; - -@ExtensionMethod(MossyPlugin.class) -public class MossyLoomManager { - - private static final Pattern PLAYER_NICKNAME_PATTERN = Pattern.compile("[a-zA-Z0-9_]{2,16}$"); - - @SuppressWarnings("UnstableApiUsage") - public static void apply(@NotNull Project project, MossyPlugin plugin, LoomGradleExtensionAPI loom) { - String modId = project.getProperty("data.mod_id"); - String currentVersion = plugin.getProjectMultiVersion().projectVersion(); - File file = project.getRootFile("src/main/resources/aws/%s.accesswidener".formatted(currentVersion)); - - // Mixins and AWs - - loom.getMixin().getDefaultRefmapName().set("%s.refmap.json".formatted(modId)); - loom.getAccessWidenerPath().set(file); - - // Run Configs - - Properties personalProperties = project.getPersonalProperties(); - - String playerNickname = getPlayerNickname(personalProperties); - UUID playerUuid = getPlayerUuid(personalProperties); - Object quickPlayWorld = personalProperties.get("quick_play_world"); - Object pathToSpongeMixin = personalProperties.get("absolute_path_to_sponge_mixin"); - - for (RunConfigSettings runConfig : loom.getRunConfigs()) { - runConfig.setIdeConfigGenerated(true); - runConfig.setRunDir("../../runs/" + runConfig.getEnvironment()); - - if (runConfig.getEnvironment().equals("client")) { - addProgramArg(runConfig, "--username", playerNickname); - addProgramArg(runConfig, "--uuid", playerUuid); - addProgramArg(runConfig, "--quickPlaySingleplayer", quickPlayWorld); - addVMArg(runConfig, "-javaagent", pathToSpongeMixin); - } - } - } - - private static String getPlayerNickname(Properties personalProperties) { - Object o = personalProperties.get("player_nickname"); - if (o == null) { - return "Player"; - } - String playerNickname = o.toString(); - if (!PLAYER_NICKNAME_PATTERN.matcher(playerNickname).matches()) { - return "Player"; - } - return playerNickname; - } - - private static @Nullable UUID getPlayerUuid(Properties personalProperties) { - try { - Object o = personalProperties.get("player_uuid"); - if (o == null) { - return null; - } - return UUID.fromString(o.toString()); - } catch (Exception e) { - return null; - } - } - - @SuppressWarnings("all") - private static void addVMArg(RunConfigSettings settings, String propertyKey, @Nullable Object propertyValue) { - if (propertyValue == null || propertyValue.toString().equals("none")) { - return; - } - settings.getVmArgs().add("%s:%s".formatted(propertyKey, propertyValue.toString())); - } - - private static void addProgramArg(RunConfigSettings settings, String propertyKey, @Nullable Object propertyValue) { - if (propertyValue == null || propertyValue.toString().equals("none")) { - return; - } - List programArgs = settings.getProgramArgs(); - programArgs.add(propertyKey); - programArgs.add(propertyValue.toString()); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java deleted file mode 100644 index 7210153..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java +++ /dev/null @@ -1,148 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import me.modmuss50.mpp.*; -import org.codehaus.groovy.runtime.ResourceGroovyMethods; -import org.gradle.api.*; -import org.gradle.api.file.RegularFile; -import org.gradle.api.provider.Provider; - -import net.fabricmc.loom.task.RemapJarTask; - -import net.lopymine.mossy.MossyPlugin; -import net.lopymine.mossy.multi.MultiVersion; - -import java.io.*; -import java.util.Arrays; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyModPublishManager { - - public static void apply(@NotNull Project project, MossyPlugin mossyPlugin, ModPublishExtension mpe) { - MultiVersion projectMultiVersion = mossyPlugin.getProjectMultiVersion(); - String name = "[%s] %s v%s".formatted(projectMultiVersion.toVersionRange(), project.getProperty("data.mod_name"), project.getProperty("data.mod_version")); - - String[] loaders = project.getProperty("loaders").split(" "); - String modrinthId = project.getProperty("modrinth_id"); - String curseForgeId = project.getProperty("curseforge_id"); - String[] dependsEmbeds = project.getProperty("depends_embeds").split(" "); - String[] dependsRequires = project.getProperty("depends_requires").split(" "); - String[] dependsOptional = project.getProperty("depends_optional").split(" "); - String[] dependsIncompatible = project.getProperty("depends_incompatible").split(" "); - String versionType = project.getProperty("version_type"); - int maxJavaVersion = Integer.parseInt(project.getProperty("max_java_version")); - Boolean isForClient = Boolean.parseBoolean(project.getProperty("is_for_client")); - Boolean isForServer = Boolean.parseBoolean(project.getProperty("is_for_server")); - boolean testPublish = Boolean.parseBoolean(project.getProperty("test_publish")); - - String curseForgeApiKey = project.getProviders().environmentVariable("CURSEFORGE_API_KEY").getOrNull(); - String modrinthApiKey = project.getProviders().environmentVariable("MODRINTH_API_KEY").getOrNull(); - - boolean cannotUpload = testPublish || ((curseForgeApiKey == null && !curseForgeId.equals("none")) || (modrinthApiKey == null && !modrinthId.equals("none"))); - - mpe.getDisplayName().set(name); - mpe.getFile().set(getModFile(project)); - mpe.getChangelog().set(getChangeLog(project)); - mpe.getType().set(getType(versionType)); - mpe.getModLoaders().set(Arrays.asList(loaders)); - mpe.getDryRun().set(cannotUpload); - - if (!curseForgeId.equals("none")) { - mpe.curseforge((curseforge) -> { - curseforge.getProjectId().set(curseForgeId); - curseforge.getAccessToken().set(curseForgeApiKey); - - for (int i = 17; i < maxJavaVersion + 1; i++) { - curseforge.getJavaVersions().add(JavaVersion.values()[i]); - } - - curseforge.getClientRequired().set(isForClient); - curseforge.getServerRequired().set(isForServer); - - if (projectMultiVersion.minIsMax()) { - curseforge.getMinecraftVersions().add(projectMultiVersion.maxVersion()); - } else { - curseforge.minecraftVersionRange((options) -> { - options.getStart().set(projectMultiVersion.minVersion()); - options.getEnd().set(projectMultiVersion.maxVersion()); - }); - } - - if (!dependsEmbeds[0].equals("none")) { - curseforge.embeds(dependsEmbeds); - } - if (!dependsRequires[0].equals("none")) { - curseforge.requires(dependsRequires); - } - if (!dependsOptional[0].equals("none")) { - curseforge.optional(dependsOptional); - } - if (!dependsIncompatible[0].equals("none")) { - curseforge.incompatible(dependsIncompatible); - } - }); - } - - if (!modrinthId.equals("none")) { - mpe.modrinth((modrinth) -> { - modrinth.getProjectId().set(modrinthId); - modrinth.getAccessToken().set(modrinthApiKey); - - if (projectMultiVersion.minIsMax()) { - modrinth.getMinecraftVersions().add(projectMultiVersion.maxVersion()); - } else { - modrinth.minecraftVersionRange((options) -> { - options.getStart().set(projectMultiVersion.minVersion()); - options.getEnd().set(projectMultiVersion.maxVersion()); - }); - } - - if (!dependsEmbeds[0].equals("none")) { - modrinth.embeds(dependsEmbeds); - } - if (!dependsRequires[0].equals("none")) { - modrinth.requires(dependsRequires); - } - if (!dependsOptional[0].equals("none")) { - modrinth.optional(dependsOptional); - } - if (!dependsIncompatible[0].equals("none")) { - modrinth.incompatible(dependsIncompatible); - } - }); - } - - MossyPlugin.LOGGER.logModule("MPP","Configuring \"%s\"", mpe.getDisplayName().get()); - MossyPlugin.LOGGER.logModule("MPP","Dry Run: %s", mpe.getDryRun().get()); - } - - private static Provider getModFile(@NotNull Project project) { - return ((RemapJarTask) project.getTasks().getByName("remapJar")).getArchiveFile(); - } - - private static ReleaseType getType(String versionType) { - return switch (versionType) { - case "RELEASE" -> ReleaseType.STABLE; - case "BETA" -> ReleaseType.BETA; - case "ALPHA" -> ReleaseType.ALPHA; - default -> throw new IllegalArgumentException("Unknown version type!"); - }; - } - - private static String getChangeLog(@NotNull Project project) { - try { - File file = project.getRootFile("CHANGELOG.md"); - if (file.exists()) { - String text = ResourceGroovyMethods.getText(file); - if (!text.isBlank()) { - return text; - } - } - } catch (IOException e) { - throw new RuntimeException("Failed to read changelog:", e); - } - return "No changelog specified."; - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java deleted file mode 100644 index 14a54f4..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.internal.TaskInputsInternal; -import org.gradle.language.jvm.tasks.ProcessResources; - -import net.lopymine.mossy.MossyPlugin; -import net.lopymine.mossy.extension.*; - -import java.util.*; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyProcessResourcesManager { - - public static void apply(@NotNull Project project, MossyPlugin plugin) { - project.getExtensions().create("mossyResources", MossyProcessResourcesExtension.class); - - project.getGradle().addProjectEvaluationListener(new ProjectEvaluationListener() { - @Override - public void beforeEvaluate(@NotNull Project project) { - } - - @Override - public void afterEvaluate(@NotNull Project project, @NotNull ProjectState state) { - MossyProcessResourcesExtension extension = project.getExtensions().getByType(MossyProcessResourcesExtension.class); - MossyProcessResourcesManager.processResources(project, plugin, extension); - project.getGradle().removeProjectEvaluationListener(this); - } - }); - } - - private static void processResources(Project project, MossyPlugin plugin, MossyProcessResourcesExtension extension) { - ProcessResources processResources = (ProcessResources) project.getTasks().getByName("processResources"); - TaskInputsInternal inputs = processResources.getInputs(); - - String mcVersion = plugin.getProjectMultiVersion().projectVersion(); - String modId = project.getProperty("data.mod_id"); - - Map properties = project.getMossyProperties("data"); - properties.putAll(project.getMossyProperties("build")); - properties.putAll(project.getMossyProperties("dep")); - properties.put("java", String.valueOf(plugin.getJavaVersionIndex())); - properties.put("minecraft", mcVersion); - properties.put("fabric_api_id", project.getStonecutter().compare("1.19.1", mcVersion) >= 0 ? "fabric" : "fabric-api"); - properties.put("mod_version", project.getVersion().toString()); - - properties.forEach(inputs::property); - - List patterns = new ArrayList<>(List.of("*.json5", "*.json", "assets/%s/lang/*.json".formatted(modId))); - List expandFiles = extension.getExpandFiles(); - if (expandFiles != null) { - patterns.addAll(expandFiles); - } - - processResources.filesMatching(patterns, (details) -> { - details.expand(properties); - }); - - processResources.filesMatching("aws/*.accesswidener", (details) -> { - if (!details.getName().startsWith(mcVersion)) { - details.exclude(); - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java deleted file mode 100644 index c9d2a41..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.lopymine.mossy.manager; - -import dev.kikugie.stonecutter.build.StonecutterBuildExtension; -import lombok.experimental.ExtensionMethod; -import org.gradle.api.Project; - -import net.lopymine.mossy.MossyPlugin; - -import java.util.Map; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyStonecutterManager { - - public static void apply(@NotNull Project project, MossyPlugin plugin) { - StonecutterBuildExtension stonecutter = project.getStonecutter(); - - String mcVersion = plugin.getProjectMultiVersion().projectVersion(); - Map properties = project.getMossyProperties("data"); - properties.putAll(project.getMossyProperties("build")); - Map dependencies = project.getMossyProperties("dep"); - properties.putAll(dependencies); - properties.put("java", String.valueOf(plugin.getJavaVersionIndex())); - properties.put("minecraft", mcVersion); - properties.put("fabric_api_id", project.getStonecutter().compare("1.19.1", mcVersion) >= 0 ? "fabric" : "fabric-api"); - properties.put("mod_version", project.getVersion().toString()); - - properties.forEach((key, value) -> { - stonecutter.getSwaps().put(key, getFormatted(value)); - }); - - dependencies.forEach((modId, version) -> { - stonecutter.getConstants().put(modId, !version.equals("unknown")); - }); - } - - private static @NotNull String getFormatted(String modVersion) { - return "\"%s\";".formatted(modVersion); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java b/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java deleted file mode 100644 index 334a809..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.lopymine.mossy.multi; - -import java.util.Objects; - -public record MultiVersion(String projectVersion, String minVersion, String maxVersion) { - - @Override - public String toString() { - if (!this.minVersion().equals(this.maxVersion())) { - return "%s[%s-%s]".formatted(this.projectVersion(), this.minVersion(), this.maxVersion()); - } - return "%s[%s]".formatted(this.projectVersion(), this.maxVersion()); - } - - public String toVersionRange() { - if (Objects.equals(this.minVersion(), this.maxVersion())) { - return this.maxVersion(); - } - - int aMin = this.minVersion().indexOf("."); - int bMin = this.minVersion().lastIndexOf("."); - if (aMin == bMin) { - bMin = this.minVersion().length(); - } - String minMain = this.minVersion().substring(0, bMin); - - int aMax = this.maxVersion().indexOf("."); - int bMax = this.maxVersion().lastIndexOf("."); - if (aMax == bMax) { - bMax = this.maxVersion().length(); - } - - String maxMain = this.maxVersion().substring(0, bMax); - String maxMinor = this.maxVersion().substring(bMax+1); - if (minMain.equals(maxMain)) { - return "%s-%s".formatted(this.minVersion(), maxMinor); - } - return "%s-%s".formatted(this.minVersion(), this.maxVersion()); - } - - public boolean minIsMax() { - return this.minVersion().equals(this.maxVersion()); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java b/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java deleted file mode 100644 index c8fdce4..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.lopymine.mossy.tasks; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.tasks.TaskAction; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.*; -import java.nio.file.Files; - -@ExtensionMethod(MossyPlugin.class) -public class GeneratePersonalPropertiesTask extends DefaultTask { - - @TaskAction - public void generate() { - Project project = this.getProject(); - File file = project.getRootFile("personal/"); - if (!file.exists() && !file.mkdirs()) { - return; - } - try { - File personalPropertiesFile = file.toPath().resolve("personal.properties").toFile(); - if (personalPropertiesFile.exists()) { - return; - } - if (!personalPropertiesFile.createNewFile()) { - return; - } - - String strip = """ - # # # # # # # # # # # # # # - # Personal Properties # - # # # # # # # # # # # # # # - - # If you don't want to set up any property, just set it to "none". - # Remember to run "regenerateRunConfigurations" task after changing this file! - - # Player properties - player_nickname=Steve - player_uuid=8667ba71-b85a-4004-af54-457a9734eed7 - - # Hot Swapping - absolute_path_to_sponge_mixin=none - - # Quick Play - quick_play_world=none - """.stripIndent().strip(); - - Files.write(personalPropertiesFile.toPath(), strip.getBytes()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java b/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java deleted file mode 100644 index 9358ece..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.lopymine.mossy.tasks; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.tasks.TaskAction; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.*; -import java.nio.file.Files; - -@ExtensionMethod(MossyPlugin.class) -public class GeneratePublishWorkflowsForEachVersionTask extends DefaultTask { - - @TaskAction - public void generate() { - Project project = this.getProject(); - File file = project.getRootFile(".github/workflows/"); - if (!file.exists() && !file.mkdirs()) { - return; - } - String[] multiVersions = project.getMultiVersions(); - for (String multiVersion : multiVersions) { - try { - File workflowFile = file.toPath().resolve("publish_%s.yml".formatted(multiVersion)).toFile(); - if (workflowFile.exists()) { - continue; - } - if (!workflowFile.createNewFile()) { - continue; - } - String strip = """ - # Generated workflow by task - - name: Publish MULTI_VERSION_ID Version - on: [workflow_dispatch] # Manual trigger - - permissions: - contents: write - - jobs: - build: - runs-on: ubuntu-22.04 - container: - image: mcr.microsoft.com/openjdk/jdk:21-ubuntu - options: --user root - steps: - - uses: actions/checkout@v4 - - name: make gradle wrapper executable - run: chmod +x ./gradlew - - name: Publish MULTI_VERSION_ID Mod Version - run: ./gradlew chiseledBuildAndCollect+MULTI_VERSION_ID chiseledPublish+MULTI_VERSION_ID - env: - CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }} - MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }} - """.replaceAll("MULTI_VERSION_ID", multiVersion).stripIndent().strip(); - Files.write(workflowFile.toPath(), strip.getBytes()); - } catch (Exception ignored) { - } - - } - } - -} diff --git a/gradle.properties b/gradle.properties index 765a785..82e20bb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,34 +2,48 @@ # Gradle Properties # # # # # # # # # # # # # # # -current_mossy_build_version = 1.0.0 - # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx16G +org.gradle.jvmargs=-Xmx24G org.gradle.parallel=true +# Mossy Plugin +mossy_plugin_version = 1.1.88-beta + +# Stonecutter +dev.kikugie.stonecutter.hard_mode=true + # Mod Properties -data.mod_id = particle-effects +data.mod_id = particle_effects data.mod_name = Particle Effects data.mod_version = 1.1.0 data.mod_group = net.lopymine.pe data.mod_maven_group = net.lopymine +data.mixin_configs = none data.mod_description = Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft! data.mod_authors = LopyMine, KlashRaick -data.mod_license = LGPL-3.0 +data.mod_license = CC-BY-ND 4.0 # Main Dependencies -base.lombok_version = 1.18.32 +base.lombok_version = 1.18.42 +base.mixinextras_version = 0.4.1 +base.mixin_version = 0.8.5 # Multi-Versions Properties # Verified version: 1.20 1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.20.6 1.21 1.21.1 1.21.2 1.21.3 -multi_versions = 1.20.1 1.21 1.21.1 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 +fabric.multi_versions = 1.20.1 1.21 1.21.1 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 +neoforge.multi_versions = 1.21.1 1.21.10 +forge.multi_versions = 1.20.1 + +# Mod Loaders +mod_loaders = fabric neoforge forge -# Build Dependencies -build.yarn = [VERSIONED] +# Mod Loader Dependencies Dependencies build.fabric_loader = 0.17.2 build.fabric_api = [VERSIONED] +build.neoforge = [VERSIONED] +build.parchment = [VERSIONED] +build.forge = [VERSIONED] # Additional Dependencies, "dep." is important dep.yacl = [VERSIONED] @@ -39,10 +53,11 @@ dep.modmenu = [VERSIONED] # Publication Properties # # # # # # # # # # # # # # # -# Mod Loaders -loaders = fabric # Versions Specifications -versions_specifications = 1.20.1 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 +fabric.versions_specifications = 1.21.10 +neoforge.versions_specifications = 1.21.10 +forge.versions_specifications = 1.21.10 + # Version Type [RELEASE, BETA, ALPHA] version_type = RELEASE @@ -58,8 +73,20 @@ is_for_client = true is_for_server = false max_java_version = 21 -# Mod Depends -depends_requires = fabric-api -depends_optional = modmenu yacl -depends_incompatible = none -depends_embeds = none +# Fabric Mod Depends +fabric.depends_requires = fabric-api +fabric.depends_optional = modmenu yacl +fabric.depends_incompatible = none +fabric.depends_embeds = none + +# NeoForge Mod Depends +neoforge.depends_requires = none +neoforge.depends_optional = yacl +neoforge.depends_incompatible = none +neoforge.depends_embeds = none + +# Forge Mod Depends +forge.depends_requires = none +forge.depends_optional = yacl +forge.depends_incompatible = none +forge.depends_embeds = none diff --git a/settings.gradle b/settings.gradle index d42fb72..9942978 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,5 @@ pluginManagement { repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() maven { name "Fabric" url "https://maven.fabricmc.net/" @@ -15,11 +12,25 @@ pluginManagement { name "Kiku Releases" url "https://maven.kikugie.dev/releases" } + maven { + name "Mossy Projects Releases" + url "https://maven.lopymine.net/releases" + } + maven { + name "Mossy Projects Snapshots" + url "https://maven.lopymine.net/snapshots" + } + maven { + name "NeoForge Releases" + url "https://maven.neoforged.net/releases" + } + mavenCentral() + gradlePluginPortal() + mavenLocal() } - includeBuild("buildSettings") } plugins { id "dev.kikugie.stonecutter" version "0.7.1" - id "net.lopymine.mossy-settings-plugin" + id "net.lopymine.mossy-plugin-settings" version "$mossy_plugin_version" } \ No newline at end of file diff --git a/src/main/java/net/lopymine/pe/ParticleEffects.java b/src/main/java/net/lopymine/pe/ParticleEffects.java index c033419..29fd8e7 100644 --- a/src/main/java/net/lopymine/pe/ParticleEffects.java +++ b/src/main/java/net/lopymine/pe/ParticleEffects.java @@ -1,19 +1,18 @@ package net.lopymine.pe; import lombok.*; -import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.*; import net.minecraft.resources.ResourceLocation; import org.slf4j.*; -import net.fabricmc.api.ModInitializer; - import net.lopymine.pe.config.ParticleEffectsConfig; import net.lopymine.pe.manager.ParticleEffectsManager; -public class ParticleEffects implements ModInitializer { +public class ParticleEffects { public static final String MOD_NAME = /*$ mod_name*/ "Particle Effects"; - public static final String MOD_ID = /*$ mod_id*/ "particle-effects"; + public static final String MOD_ID = /*$ mod_id*/ "particle_effects"; + public static final String YACL_DEPEND_VERSION = /*$ yacl*/ "3.8.0+1.21.9-fabric"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME); public static ResourceLocation id(String path) { @@ -24,7 +23,7 @@ public static ResourceLocation id(String path) { *///?} } - public static Component text(String path, Object... args) { + public static MutableComponent text(String path, Object... args) { return Component.translatable(String.format("%s.%s", MOD_ID, path), args); } @@ -32,10 +31,8 @@ public static Component text(String path, Object... args) { @Getter private static ParticleEffectsConfig config; - @Override - public void onInitialize() { + public static void onInitialize() { LOGGER.info("{} Initialized", MOD_NAME); ParticleEffects.config = ParticleEffectsConfig.getInstance(); - ParticleEffectsManager.onInitialize(); } } \ No newline at end of file diff --git a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java index ee411a2..d34e12b 100644 --- a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java +++ b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java @@ -1,22 +1,15 @@ package net.lopymine.pe.client; -import net.lopymine.pe.debug.DebugParticleInfoRenderer; import org.slf4j.*; -import net.fabricmc.api.ClientModInitializer; - import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.manager.ParticleEffectsManager; -public class ParticleEffectsClient implements ClientModInitializer { +public class ParticleEffectsClient { public static Logger LOGGER = LoggerFactory.getLogger(ParticleEffects.MOD_NAME + "/Client"); - @Override - public void onInitializeClient() { + public static void onInitializeClient() { LOGGER.info("{} Client Initialized", ParticleEffects.MOD_NAME); - ParticleEffectsManager.onInitializeClient(); - DebugParticleInfoRenderer.register(); } } diff --git a/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java b/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java index 6ca6dd7..dd969a5 100644 --- a/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java +++ b/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java @@ -2,14 +2,13 @@ import com.google.gson.*; import lombok.*; +import net.lopymine.pe.loader.MossyLoader; import org.slf4j.*; import com.mojang.serialization.*; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.fabricmc.loader.api.FabricLoader; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; import java.io.*; import java.nio.charset.StandardCharsets; @@ -26,7 +25,7 @@ public class ParticleEffectsConfig { Codec.BOOL.optionalFieldOf("debug_log", false).forGetter(ParticleEffectsConfig::isDebugLogEnabled) ).apply(instance, ParticleEffectsConfig::new)); - private static final File CONFIG_FILE = FabricLoader.getInstance().getConfigDir().resolve(ParticleEffects.MOD_ID + ".json5").toFile(); + private static final File CONFIG_FILE = MossyLoader.getConfigDir().resolve(ParticleEffects.MOD_ID + ".json5").toFile(); private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); private static final Logger LOGGER = LoggerFactory.getLogger(ParticleEffects.MOD_NAME + "/Config"); private boolean modEnabled; diff --git a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java index ec04af8..96f543b 100644 --- a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java +++ b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java @@ -2,6 +2,7 @@ import java.util.Queue; import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.mixin.ParticleEngineMixin; import net.lopymine.pe.particle.TexturedParticle; import net.lopymine.pe.utils.*; import net.minecraft.client.*; @@ -14,44 +15,41 @@ import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; - -//? if =1.20.1 { -/* -import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; -*/ -//?} +import org.joml.Quaternionf; public class DebugParticleInfoRenderer { - public static void register() { - //? if =1.20.1 { - /*WorldRenderEvents.AFTER_ENTITIES.register((context) -> { - for (Queue value : Minecraft.getInstance().particleEngine.particles.values()) { - for (Particle particle : value) { - DebugParticleInfoRenderer.renderDebugInfo(context.matrixStack(), context.camera(), context.tickDelta(), particle); - } + public static void renderAll(PoseStack matrices, Vec3 camera, Quaternionf cameraRotation, float tickProgress) { + //? if >=1.21.9 { + for (ParticleGroup value : ((ParticleEngineMixin) Minecraft.getInstance().particleEngine).getParticles().values()) { + for (Particle particle : value.getAll()) { + renderDebugInfo(matrices, camera, cameraRotation, tickProgress, particle); + } + } + //?} else { + /*for (Queue value : ((ParticleEngineMixin) Minecraft.getInstance().particleEngine).getParticles().values()) { + for (Particle particle : value) { + renderDebugInfo(matrices, camera, cameraRotation, tickProgress, particle); } - }); + } *///?} } - public static void renderDebugInfo(PoseStack matrices, Camera camera, float tickProgress, Particle particle) { + public static void renderDebugInfo(PoseStack matrices, Vec3 camera, Quaternionf cameraRotation, float tickProgress, Particle particle) { if (!ParticleEffects.getConfig().isDebugLogEnabled()) { return; } - Vec3 vec3d = camera.getPosition(); - float x = (float) (Mth.lerp(tickProgress, particle.xo, particle.x) - vec3d.x()); - float y = (float) (Mth.lerp(tickProgress, particle.yo, particle.y) - vec3d.y()); - float z = (float) (Mth.lerp(tickProgress, particle.zo, particle.z) - vec3d.z()); + float x = (float) (Mth.lerp(tickProgress, particle.xo, particle.x) - camera.x()); + float y = (float) (Mth.lerp(tickProgress, particle.yo, particle.y) - camera.y()); + float z = (float) (Mth.lerp(tickProgress, particle.zo, particle.z) - camera.z()); Font textRenderer = Minecraft.getInstance().font; matrices.pushPose(); matrices.translate(x, y + 0.5D, z); //? if <=1.21.8 { - /*matrices.mulPose(camera.rotation()); + /*matrices.mulPose(cameraRotation); matrices.scale(/^? if =1.20.1 {^/ /^- ^//^?}^/0.015F, -0.015F, 0.015F); - int opacity = (int) (Minecraft.getInstance().options.getBackgroundOpacity(0.25F) * 255.0F) << 24; *///?} String[] text = getDebugInfo(particle); @@ -59,10 +57,10 @@ public static void renderDebugInfo(PoseStack matrices, Camera camera, float tick int yOffset = 0; for (String line : text) { //? if >=1.21.9 { - Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), true, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); + Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), false, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); //?} else { /*float f = (float) (-textRenderer.width(line)) / 2.0F; - textRenderer.drawInBatch(line, f, (float) -yOffset, -1, false, matrices.last().pose(), Minecraft.getInstance().renderBuffers().bufferSource(), DisplayMode.NORMAL, opacity, LightTexture.FULL_BRIGHT); + textRenderer.drawInBatch(line, f, (float) -yOffset, -1, false, matrices.last().pose(), Minecraft.getInstance().renderBuffers().bufferSource(), DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); *///?} yOffset += textRenderer.lineHeight + 1; } diff --git a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java new file mode 100644 index 0000000..a9885c1 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java @@ -0,0 +1,24 @@ +package net.lopymine.pe.entrypoint; + +//? if neoforge { +/*import net.lopymine.pe.ParticleEffects; + +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.modmenu.*; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.*; +import net.neoforged.fml.common.Mod; + +@Mod(value = ParticleEffects.MOD_ID, dist = Dist.CLIENT) +public class MossyNeoForgeClientEntrypoint { + + public MossyNeoForgeClientEntrypoint(ModContainer container) { + ParticleEffectsClient.onInitializeClient(); + PEModMenuIntegration integration = new PEModMenuIntegration(); + integration.register(container); + } + +} + +*///?} + diff --git a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java new file mode 100644 index 0000000..bdbf63f --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java @@ -0,0 +1,23 @@ +package net.lopymine.pe.entrypoint; + +//? if neoforge { +/*import net.lopymine.pe.ParticleEffects; + +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.common.Mod; + +@Mod(ParticleEffects.MOD_ID) +public class MossyNeoForgeEntrypoint { + + public MossyNeoForgeEntrypoint(IEventBus eventBus) { + ParticleEffectsManager.PARTICLES_REGISTER.register(eventBus); + eventBus.addListener(ParticleEffectsManager::onCommonSetup); + eventBus.addListener(ParticleEffectsManager::registerParticleFactories); + ParticleEffects.onInitialize(); + ParticleEffectsManager.registerParticleTypes(); + } + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java new file mode 100644 index 0000000..3eec0dd --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java @@ -0,0 +1,21 @@ +package net.lopymine.pe.entrypoint; + +//? if fabric { + +import net.fabricmc.api.ClientModInitializer; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.manager.ParticleEffectsManager; + +public class PEFabricClientEntrypoint implements ClientModInitializer { + + @Override + public void onInitializeClient() { + ParticleEffectsClient.onInitializeClient(); + ParticleEffectsManager.registerParticleTypes(); + ParticleEffectsManager.swapParticleTypes(); + ParticleEffectsManager.registerParticleColorsForTypes(); + ParticleEffectsManager.registerParticleFactories(); + } +} + +//?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java new file mode 100644 index 0000000..6295c65 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java @@ -0,0 +1,17 @@ +package net.lopymine.pe.entrypoint; + +//? if fabric { + +import net.lopymine.pe.ParticleEffects; + +import net.fabricmc.api.ModInitializer; + +public class PEFabricEntrypoint implements ModInitializer { + + @Override + public void onInitialize() { + ParticleEffects.onInitialize(); + } +} + +//?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java new file mode 100644 index 0000000..2fb0105 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java @@ -0,0 +1,23 @@ +package net.lopymine.pe.entrypoint; + +//? if forge { + +/*import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.lopymine.pe.modmenu.PEModMenuIntegration; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.ModLoadingContext; + +public class PEForgeClientEntrypoint { + + public static void onInitializeClient(IEventBus eventBus) { + ParticleEffectsClient.onInitializeClient(); + eventBus.addListener(ParticleEffectsManager::onRegisterParticleProviders); + PEModMenuIntegration integration = new PEModMenuIntegration(); + integration.register(ModLoadingContext.get().getActiveContainer()); + } + +} + +*///?} + diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java new file mode 100644 index 0000000..80d5c44 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java @@ -0,0 +1,31 @@ +package net.lopymine.pe.entrypoint; + +//? if forge { +/*import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLEnvironment; + +@Mod(ParticleEffects.MOD_ID) +public class PEForgeEntrypoint { + + public PEForgeEntrypoint() { + ParticleEffects.onInitialize(); + IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); + ParticleEffectsManager.PARTICLES_REGISTER.register(eventBus); + eventBus.addListener(ParticleEffectsManager::onCommonSetup); + + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + PEForgeClientEntrypoint.onInitializeClient(eventBus); + }); + + ParticleEffectsManager.registerParticleTypes(); + } + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/loader/MossyLoader.java b/src/main/java/net/lopymine/pe/loader/MossyLoader.java new file mode 100644 index 0000000..723518e --- /dev/null +++ b/src/main/java/net/lopymine/pe/loader/MossyLoader.java @@ -0,0 +1,66 @@ +package net.lopymine.pe.loader; + +//? if fabric { + +import net.fabricmc.loader.api.FabricLoader; +import java.nio.file.Path; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + return FabricLoader.getInstance().isModLoaded(modid); + } + + public static Path getConfigDir() { + return FabricLoader.getInstance().getConfigDir(); + } +} +//?} elif neoforge { + +/*import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLLoader; +import net.neoforged.fml.loading.*; +import java.nio.file.Path; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + if (loadingPhase) { + //? if >=1.21.10 { + /^return FMLLoader.getCurrent().getLoadingModList().getModFileById(modid) != null; + ^///?} else { + return FMLLoader.getLoadingModList().getModFileById(modid) != null; + //?} + } else { + return ModList.get().isLoaded(modid); + } + } + + public static Path getConfigDir() { + return FMLPaths.CONFIGDIR.get(); + } +} +*///?} elif forge { + +/*import java.nio.file.Path; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.FMLLoader; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + if (loadingPhase) { + return FMLLoader.getLoadingModList().getModFileById(modid) != null; + } else { + return ModList.get().isLoaded(modid); + } + } + + public static Path getConfigDir() { + return net.minecraftforge.fml.loading.FMLPaths.CONFIGDIR.get(); + } +} +*///?} diff --git a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java index 3af98b5..d477b45 100644 --- a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java +++ b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java @@ -1,24 +1,23 @@ package net.lopymine.pe.manager; import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import java.util.Map.Entry; import java.util.function.*; import lombok.experimental.ExtensionMethod; import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.client.ParticleEffectsClient; import net.lopymine.pe.extension.RegistryExtension; +import net.lopymine.pe.particle.TexturedParticleFactory; import net.minecraft.client.particle.Particle; import net.minecraft.core.*; import net.minecraft.core.particles.*; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.*; import net.minecraft.world.effect.*; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.core.Holder.Reference; import net.minecraft.resources.ResourceLocation; -import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; -import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.particle.*; import net.lopymine.pe.utils.*; import java.util.*; import java.util.stream.*; @@ -26,10 +25,50 @@ import org.jetbrains.annotations.Nullable; +//? if fabric { + +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; +import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; + +//?} + +//? if neoforge { + +/*import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.client.event.*; +import net.neoforged.neoforge.registries.*; + +*///?} + +//? if forge { +/*import net.minecraftforge.client.event.RegisterParticleProvidersEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.registries.*; +*///?} + @ExtensionMethod(RegistryExtension.class) public class ParticleEffectsManager { + //? if fabric { private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map EFFECT_TO_PARTICLE = new HashMap<>(); + //?} + + //? if neoforge { + /*public static final DeferredRegister> PARTICLES_REGISTER = DeferredRegister.create(Registries.PARTICLE_TYPE, ParticleEffects.MOD_ID); + private static final List, SimpleParticleType>> REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map, SimpleParticleType>> EFFECT_TO_PARTICLE = new HashMap<>(); + *///?} + + //? if forge { + /*public static final DeferredRegister> PARTICLES_REGISTER = DeferredRegister.create(Registries.PARTICLE_TYPE, ParticleEffects.MOD_ID); + + private static final List> REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map> EFFECT_TO_PARTICLE = new HashMap<>(); + *///?} + private static final Map> COLOR_TO_PARTICLES_MAP = new HashMap<>(); private static final HashMap MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE = getMinecraftEffectWidthTexturedParticles(); @@ -38,17 +77,36 @@ public static List getParticleEffects(Integer i) { return COLOR_TO_PARTICLES_MAP.get(i); } - private static ParticleOptions registerParticleTypeForEffect(MobEffect statusEffect, ResourceLocation effectId) { + private static void registerParticleTypeForEffect(MobEffect statusEffect, ResourceLocation effectId) { + ResourceLocation modEffectId = getModEffectId(statusEffect, effectId); + + //? if fabric { // CREATE PARTICLE TYPE ParticleOptions type = Registry.register( BuiltInRegistries.PARTICLE_TYPE, - getModEffectId(statusEffect, effectId), // WE NEED IT TO AVOID ISSUE WITH VANILLA TEXTURED PARTICLES + modEffectId, // WE NEED IT TO AVOID ISSUE WITH VANILLA TEXTURED PARTICLES FabricParticleTypes.simple() ); // ADD TO REGISTERED PARTICLES TO REGISTER THEIR FACTORY AT CLIENT LAYER REGISTERED_PARTICLE_TYPES.add(type); - return type; + EFFECT_TO_PARTICLE.put(statusEffect, type); + //?} + + //? if neoforge { + /*String registryName = modEffectId.getPath(); + DeferredHolder, SimpleParticleType> holder = PARTICLES_REGISTER.register(registryName, () -> new SimpleParticleType(false)); + REGISTERED_PARTICLE_TYPES.add(holder); + EFFECT_TO_PARTICLE.put(statusEffect, holder); + *///?} + + //? if forge { + /*String registryName = modEffectId.getPath(); + RegistryObject holder = PARTICLES_REGISTER.register(registryName, () -> new SimpleParticleType(false)); + REGISTERED_PARTICLE_TYPES.add(holder); + EFFECT_TO_PARTICLE.put(statusEffect, holder); + *///?} + } private static ResourceLocation getModEffectId(MobEffect statusEffect, ResourceLocation effectId) { @@ -56,7 +114,7 @@ private static ResourceLocation getModEffectId(MobEffect statusEffect, ResourceL return ParticleEffects.id(effectId.getPath() + (bl ? "_new" : "")); } - public static void onInitialize() { + public static void registerParticleTypes() { //-----------------------------------------------------// // SWAP OLD PARTICLE TYPE OF STATUS EFFECTS TO NEW ONE // //-----------------------------------------------------// @@ -67,13 +125,31 @@ public static void onInitialize() { continue; } - // REGISTER NEW PARTICLE TYPE (AND EFFECT) - ParticleOptions type = ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); + ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); + } + } + + public static void swapParticleTypes() { + //? if fabric { + for (Entry entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue()); + } + //?} + + //? if neoforge { + /*for (Entry, SimpleParticleType>> entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue().get()); + } + *///?} - // SWAP PARTICLE TYPES - StatusEffectUtils.swapParticle(statusEffect, type); + //? if forge { + /*for (Entry> entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue().get()); } + *///?} + } + public static void registerParticleColorsForTypes() { //---------------------------------------------------// // REGISTER EACH POTION COLOR TO LIST POTION EFFECTS // // POTION COLOR = MIXED COLORS OF EFFECTS // @@ -160,11 +236,47 @@ public static void onInitialize() { } } - public static void onInitializeClient() { + //? if fabric { + public static void registerParticleFactories() { for (ParticleOptions type : REGISTERED_PARTICLE_TYPES) { ParticleFactoryRegistry.getInstance().register((SimpleParticleType) type, TexturedParticleFactory::new); } } + //?} + + //? if neoforge { + /*@SubscribeEvent + public static void registerParticleFactories(RegisterParticleProvidersEvent event) { + for (DeferredHolder, SimpleParticleType> holder : REGISTERED_PARTICLE_TYPES) { + event.registerSpriteSet(holder.get(), TexturedParticleFactory::new); + } + } + + @SubscribeEvent + public static void onCommonSetup(FMLCommonSetupEvent event) { + event.enqueueWork(() -> { + swapParticleTypes(); + registerParticleColorsForTypes(); + }); + } + *///?} + + //? if forge { + /*@SubscribeEvent + public static void onRegisterParticleProviders(RegisterParticleProvidersEvent event) { + for (RegistryObject holder : REGISTERED_PARTICLE_TYPES) { + event.registerSpriteSet(holder.get(), TexturedParticleFactory::new); + } + } + + @SubscribeEvent + public static void onCommonSetup(FMLCommonSetupEvent event) { + event.enqueueWork(() -> { + swapParticleTypes(); + registerParticleColorsForTypes(); + }); + } + *///?} private static HashMap getMinecraftEffectWidthTexturedParticles() { //? =1.20.1 { diff --git a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java index d504db2..e36c186 100644 --- a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java @@ -19,9 +19,9 @@ public abstract class AreaEffectCloudEntityMixin extends Entity { @Unique - private boolean needReset; + private boolean particleEffects$needReset; @Unique - private boolean needResetDebugData; + private boolean particleEffects$needResetDebugData; //? =1.20.1 /*@Shadow public abstract int getColor();*/ @@ -36,54 +36,54 @@ private ParticleOptions swapParticleType(AreaEffectCloud instance, Operation=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*ColorParticleOption *//*?}*/ effect)) { - return this.markDebugData(32, originalParticle); + return this.particleEffects$markDebugData(32, originalParticle); } int color = effect.color; //?} List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { - return this.markDebugData(33, originalParticle); + return this.particleEffects$markDebugData(33, originalParticle); } if (list.isEmpty()) { - return this.markDebugData(34, originalParticle); + return this.particleEffects$markDebugData(34, originalParticle); } ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { - return this.markDebugData(35, originalParticle); + return this.particleEffects$markDebugData(35, originalParticle); } ((PEType) particleEffect).particleEffects$setColor(color); ParticleCaptures.setParticle(particleEffect); - this.needReset = true; + this.particleEffects$needReset = true; return particleEffect; } @Inject(at = @At("TAIL"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) private void resetParticle(CallbackInfo ci) { - if (this.needReset) { - this.needReset = false; + if (this.particleEffects$needReset) { + this.particleEffects$needReset = false; ParticleCaptures.setParticle(null); } - if (this.needResetDebugData) { - this.needResetDebugData = false; + if (this.particleEffects$needResetDebugData) { + this.particleEffects$needResetDebugData = false; ParticleCaptures.setDebugData(null); } } @Unique - private ParticleOptions markDebugData(int data, ParticleOptions originalParticle) { + private ParticleOptions particleEffects$markDebugData(int data, ParticleOptions originalParticle) { ParticleCaptures.setDebugData(data); - this.needResetDebugData = true; + this.particleEffects$needResetDebugData = true; return originalParticle; } diff --git a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java index cefd5e7..8a7b2f7 100644 --- a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java @@ -26,17 +26,17 @@ private void markParticleFromArrow(Level instance, ParticleOptions parameters, d List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { - this.markDebugData(41, originalCall); + this.particleEffects$markDebugData(41, originalCall); return; } if (list.isEmpty()) { - this.markDebugData(43, originalCall); + this.particleEffects$markDebugData(43, originalCall); return; } ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { - this.markDebugData(44, originalCall); + this.particleEffects$markDebugData(44, originalCall); return; } @@ -47,7 +47,7 @@ private void markParticleFromArrow(Level instance, ParticleOptions parameters, d } @Unique - private void markDebugData(int data, Runnable originalCall) { + private void particleEffects$markDebugData(int data, Runnable originalCall) { ParticleCaptures.setDebugData(data); originalCall.run(); ParticleCaptures.setDebugData(null); diff --git a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java deleted file mode 100644 index a20c7aa..0000000 --- a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.lopymine.pe.mixin; - -//? if >=1.21.9 { - -import net.lopymine.pe.debug.DebugParticleInfoRenderer; -import net.minecraft.client.Camera; -import net.minecraft.client.particle.*; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.renderer.culling.Frustum; -import net.minecraft.client.renderer.state.ParticleGroupRenderState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(QuadParticleGroup.class) -public abstract class BillboardParticleRendererMixin extends ParticleGroup { - - public BillboardParticleRendererMixin(ParticleEngine particleManager) { - super(particleManager); - } - - @Inject(at = @At("HEAD"), method = "extractRenderState") - private void renderDebugInfo(Frustum frustum, Camera camera, float tickProgress, CallbackInfoReturnable cir) { - for (SingleQuadParticle particle : this.particles) { - DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickProgress, particle); - } - } - -} -//?} diff --git a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java index cc7c941..7a34c28 100644 --- a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java @@ -3,7 +3,6 @@ /*import com.llamalad7.mixinextras.injector.wrapoperation.*; import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.utils.*; -import net.minecraft.core.Holder; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.util.RandomSource; import net.minecraft.world.effect.*; @@ -27,7 +26,7 @@ public abstract class LivingEntityMixin { private void swapParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); if (!ParticleEffects.getConfig().isModEnabled()) { - this.markDebugData(51, originalCall); + this.particleEffects$markDebugData(51, originalCall); return; } @@ -35,7 +34,7 @@ private void swapParticle(Level instance, ParticleOptions parameters, double x, if (!effects.isEmpty()) { MobEffect statusEffect = ListUtils.getRandomElement(effects.stream().toList(), this.getRandom()); if (statusEffect == null) { - this.markDebugData(52, originalCall); + this.particleEffects$markDebugData(52, originalCall); return; } @@ -55,7 +54,7 @@ private void swapParticle(Level instance, ParticleOptions parameters, double x, } @Unique - private void markDebugData(int data, Runnable originalCall) { + private void particleEffects$markDebugData(int data, Runnable originalCall) { ParticleCaptures.setDebugData(data); originalCall.run(); ParticleCaptures.setDebugData(null); diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java new file mode 100644 index 0000000..6250ddc --- /dev/null +++ b/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java @@ -0,0 +1,19 @@ +package net.lopymine.pe.mixin; + +import java.util.*; +import net.minecraft.client.particle.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ParticleEngine.class) +public interface ParticleEngineMixin { + + //? if <=1.21.8 { + /*@Accessor("particles") + Map> getParticles(); + *///?} else { + @Accessor("particles") + Map> getParticles(); + //?} + +} diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java index cf8f172..94974d5 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java @@ -5,6 +5,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import java.util.*; +import java.util.function.Predicate; import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.debug.DebugParticleInfoRenderer; import net.lopymine.pe.utils.*; @@ -13,6 +14,7 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.MultiBufferSource.BufferSource; +import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.util.RandomSource; import org.spongepowered.asm.mixin.*; @@ -23,28 +25,6 @@ @Mixin(ParticleEngine.class) public class ParticleManagerMixin { - //? if =1.20.1 { - /*@Shadow - @Final - private Map> particles; - *///?} - - //? if >=1.21.4 && <=1.21.8 { - /*@Inject(at = @At(value = "TAIL"), method = "renderParticleType") - private static void renderDebugInfo(Camera camera, float f, BufferSource bufferSource, ParticleRenderType particleRenderType, Queue queue, CallbackInfo ci) { - for (Particle particle : queue) { - DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, f, particle); - } - } - *///?} elif >=1.21 && <=1.21.8 { - /*@Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/BufferUploader;drawWithShader(Lcom/mojang/blaze3d/vertex/MeshData;)V", shift = Shift.AFTER), method = "render") - private void renderDebugInfo(LightTexture lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local Queue queue) { - for (Particle particle : queue) { - DebugParticleInfoRenderer.renderDebugInfo(new PoseStack(), camera, tickDelta, particle); - } - } - *///?} - //? if >=1.21.9 { @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleProvider;createParticle(Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/util/RandomSource;)Lnet/minecraft/client/particle/Particle;"), method = "makeParticle") private Particle markParticle(ParticleProvider instance, ParticleOptions t, ClientLevel clientWorld, double a, double b, double c, double d, double e, double v, RandomSource random, Operation original) { diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java index f5a10e6..f8363d6 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java @@ -8,15 +8,15 @@ public class ParticleMixin implements PEDebugParticle { @Unique - private int debugData = 0; + private int particleEffects$debugData = 0; @Override public void particleEffects$setDebugData(int i) { - this.debugData = i; + this.particleEffects$debugData = i; } @Override public int particleEffects$getDebugData() { - return this.debugData; + return this.particleEffects$debugData; } } diff --git a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java index 134455d..3053f36 100644 --- a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java @@ -8,20 +8,20 @@ public class SimpleParticleTypeMixin implements PEType { @Unique - private int color; + private int particleEffects$color; @Override public int particleEffects$getColor() { - return this.color; + return this.particleEffects$color; } @Override public void particleEffects$setColor(int color) { // alpha not supported at <1.21 //? if <1.21 { - /*this.color = ArgbUtils.getArgb(255, ArgbUtils.getRed(color), ArgbUtils.getGreen(color), ArgbUtils.getBlue(color)); + /*this.particleEffects$color = ArgbUtils.getArgb(255, ArgbUtils.getRed(color), ArgbUtils.getGreen(color), ArgbUtils.getBlue(color)); *///?} else { - this.color = color; + this.particleEffects$color = color; //?} } } diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java index 83a4e59..a89587a 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java @@ -10,14 +10,14 @@ public class StatusEffectMixin implements PEStatusEffect { @Unique - private ParticleOptions particleEffect; + private ParticleOptions particleEffects$particleEffect; @Override public void particleEffects$setParticleEffect(ParticleOptions particleEffect) { - this.particleEffect = particleEffect; + this.particleEffects$particleEffect = particleEffect; } public ParticleOptions particleEffects$getParticleEffect() { - return this.particleEffect; + return this.particleEffects$particleEffect; } } diff --git a/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java new file mode 100644 index 0000000..7dc4121 --- /dev/null +++ b/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java @@ -0,0 +1,64 @@ +package net.lopymine.pe.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.vertex.PoseStack; +import net.lopymine.pe.debug.DebugParticleInfoRenderer; +import net.minecraft.client.*; +import net.minecraft.client.renderer.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +//? if >=1.21.9 { +import net.minecraft.client.renderer.state.LevelRenderState; +//?} + +@Mixin(LevelRenderer.class) +public class WorldRendererDebugParticlesMixin { + + //? if =1.20.1 { + /*@Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + method = "renderLevel" + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) Camera camera, @Local(argsOnly = true) float delta) { + DebugParticleInfoRenderer.renderAll(stack, camera.getPosition(), camera.rotation(), delta); + } + *///?} + + //? if >=1.21.9 { + @Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + //? if fabric { + method = "method_62214" + //?} elif neoforge { + /*method = "lambda$addMainPass$1" + *///?} + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) LevelRenderState state) { + DebugParticleInfoRenderer.renderAll(stack, state.cameraRenderState.pos, state.cameraRenderState.orientation, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } + //?} elif >=1.21 { + /*@Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + //? if <=1.21.1 { + method = "renderLevel" + //?} else { + /^method = "method_62214" + ^///?} + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) Camera camera, @Local(argsOnly = true) DeltaTracker tracker) { + DebugParticleInfoRenderer.renderAll(stack, camera.getPosition(), camera.rotation(), tracker.getGameTimeDeltaPartialTick(false)); + } + *///?} + +} diff --git a/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java new file mode 100644 index 0000000..66bc8f0 --- /dev/null +++ b/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java @@ -0,0 +1,110 @@ +package net.lopymine.pe.modmenu; + +//? if fabric { +import com.terraformersmc.modmenu.api.*; +import net.fabricmc.loader.api.*; +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.minecraft.client.gui.screens.Screen; + +public abstract class AbstractModMenuIntegration implements ModMenuApi { + + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + FabricLoader fabricLoader = FabricLoader.getInstance(); + if (fabricLoader.isModLoaded("yet_another_config_lib_v3")) { + ModContainer modContainer = fabricLoader.getModContainer("yet_another_config_lib_v3").orElseThrow(); + Version version = modContainer.getMetadata().getVersion(); + try { + Version requestsVersion = Version.parse(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this::createConfigScreen; + } + } catch (VersionParsingException e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return parent -> NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getFriendlyString()); + } + return NoConfigLibraryScreen::createScreen; + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); +} + +//?} elif neoforge { + +/*import net.neoforged.fml.*; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.loader.MossyLoader; +import net.minecraft.client.gui.screens.Screen; +import org.apache.maven.artifact.versioning.*; + +public abstract class AbstractModMenuIntegration { + + public void register(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, (modContainer, parent) -> { + if (MossyLoader.isModLoaded("yet_another_config_lib_v3", false)) { + ModContainer yacl = ModList.get().getModContainerById("yet_another_config_lib_v3").orElseThrow(); + ArtifactVersion version = yacl.getModInfo().getVersion(); + try { + ArtifactVersion requestsVersion = new DefaultArtifactVersion(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this.createConfigScreen(parent); + } + } catch (Exception e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getQualifier()); + } + return NoConfigLibraryScreen.createScreen(parent); + }); + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); + +} + +*///?} elif forge { + +/*import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.loader.MossyLoader; +import net.minecraft.client.gui.screens.Screen; +import net.minecraftforge.client.ConfigScreenHandler.ConfigScreenFactory; +import net.minecraftforge.fml.*; +import org.apache.maven.artifact.versioning.*; + +public abstract class AbstractModMenuIntegration { + + public void register(ModContainer container) { + container.registerExtensionPoint(ConfigScreenFactory.class, () -> new ConfigScreenFactory((minecraft, parent) -> { + if (MossyLoader.isModLoaded("yet_another_config_lib_v3", false)) { + ModContainer yacl = ModList.get().getModContainerById("yet_another_config_lib_v3").orElseThrow(); + ArtifactVersion version = yacl.getModInfo().getVersion(); + try { + ArtifactVersion requestsVersion = new DefaultArtifactVersion(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this.createConfigScreen(parent); + } + } catch (Exception e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getQualifier()); + } + return NoConfigLibraryScreen.createScreen(parent); + })); + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java deleted file mode 100644 index c408a68..0000000 --- a/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.pe.modmenu; - -import com.terraformersmc.modmenu.api.*; - -import net.fabricmc.loader.api.FabricLoader; - -import net.lopymine.pe.modmenu.yacl.YACLConfigurationScreen; - -public class ModMenuIntegration implements ModMenuApi { - - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - if (FabricLoader.getInstance().isModLoaded("yet_another_config_lib_v3")) { - return YACLConfigurationScreen::createScreen; - } - return NoConfigLibraryScreen::createScreen; - } -} diff --git a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java index b08eeb8..acf16a1 100644 --- a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java +++ b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java @@ -1,30 +1,27 @@ package net.lopymine.pe.modmenu; import com.google.common.collect.Sets; -import net.minecraft.SharedConstants; +import java.net.*; +import java.util.*; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.utils.ModMenuUtils; +import net.minecraft.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.*; import net.minecraft.network.chat.CommonComponents; -import net.minecraft.Util; - -import net.lopymine.pe.client.ParticleEffectsClient; -import net.lopymine.pe.utils.ModMenuUtils; - -import java.net.*; -import java.util.*; -import org.jetbrains.annotations.*; +import org.jetbrains.annotations.NotNull; public class NoConfigLibraryScreen { private static final Set ALLOWED_PROTOCOLS = Sets.newHashSet("http", "https"); private static final String YACL_MODRINTH_LINK = "https://modrinth.com/mod/yacl/versions?l=fabric&g="; + private NoConfigLibraryScreen() { throw new IllegalStateException("Screen class, use createScreen(...) method!"); } - @Contract("_ -> new") public static @NotNull Screen createScreen(Screen parent) { - return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), CommonComponents.GUI_YES, CommonComponents.GUI_BACK); + return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), CommonComponents.GUI_CONTINUE, CommonComponents.GUI_BACK); } private static void onConfirm(boolean open, Screen parent) { @@ -47,4 +44,8 @@ private static void onConfirm(boolean open, Screen parent) { Minecraft.getInstance().setScreen(parent); } } + + public static Screen createScreenAboutOldVersion(Screen parent, String version) { + return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getOldConfigScreenMessage(version), CommonComponents.GUI_CONTINUE, CommonComponents.GUI_BACK); + } } diff --git a/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java new file mode 100644 index 0000000..79f9992 --- /dev/null +++ b/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java @@ -0,0 +1,19 @@ +package net.lopymine.pe.modmenu; + +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.modmenu.yacl.YACLConfigurationScreen; +import net.minecraft.client.gui.screens.Screen; + +public class PEModMenuIntegration extends AbstractModMenuIntegration { + + @Override + protected String getModId() { + return ParticleEffects.MOD_ID; + } + + @Override + protected Screen createConfigScreen(Screen parent) { + return YACLConfigurationScreen.createScreen(parent); + } +} + diff --git a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java index 63a6544..b536056 100644 --- a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java +++ b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java @@ -1,6 +1,6 @@ package net.lopymine.pe.utils; -import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.*; import net.minecraft.resources.ResourceLocation; import net.lopymine.pe.ParticleEffects; @@ -46,6 +46,10 @@ public static Function getEnabledOrDisabledFormatter() { return state -> ParticleEffects.text("modmenu.formatter.enabled_or_disabled." + state); } + public static MutableComponent getOldConfigScreenMessage(String version) { + return ParticleEffects.text("modmenu.old_config_library_screen.message", version, ParticleEffects.YACL_DEPEND_VERSION); + } + public static Component getNoConfigScreenMessage() { return ParticleEffects.text("modmenu.no_config_library_screen.message"); } diff --git a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java index 090eee8..e891668 100644 --- a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java +++ b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java @@ -1,15 +1,15 @@ package net.lopymine.pe.utils; +import net.lopymine.pe.loader.MossyLoader; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.world.effect.*; //? if =1.20.1 { -/* -import net.minecraft.world.item.alchemy.PotionUtils; + +/*import net.minecraft.world.item.alchemy.PotionUtils; import java.util.Collection; -import net.fabricmc.loader.api.FabricLoader; -*/ -//?} + +*///?} public class StatusEffectUtils { @@ -22,7 +22,7 @@ public static void swapParticle(MobEffect statusEffect, ParticleOptions particle /*// Yeah, I literally copied this thing from the original PotionUtils class to make this mod compatible with Alex Caves // IDK why, for what, just did public static int getColor(Collection collection) { - if (!FabricLoader.getInstance().isModLoaded("alexscaves")) { + if (!MossyLoader.isModLoaded("alexscaves", false)) { return PotionUtils.getColor(collection); } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..00626ca --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,28 @@ +license = "${mod_license}" +issueTrackerURL = "https://github.com/LopyMine/${mod_id}" +modLoader="javafml" +loaderVersion="[1,)" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +side="BOTH" +displayURL = "https://modrinth.com/mod/${mod_id}" +logoFile = "icon/icon.png" +authors = "${mod_authors}" +description = '''${mod_description}''' + +[[dependencies.${mod_id}]] +modId = "forge" +mandatory = true +versionRange = "${forge}" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${ mod_id }]] +modId = "minecraft" +mandatory = true +versionRange = "${minecraft}" +ordering = "NONE" +side = "BOTH" diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000..80e28f7 --- /dev/null +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,31 @@ +license = "${mod_license}" +issueTrackerURL = "https://github.com/LopyMine/${mod_id}" +modLoader="javafml" +loaderVersion="[1,)" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +side="BOTH" +displayURL = "https://modrinth.com/mod/${mod_id}" +logoFile = "icon/icon.png" +authors = "${mod_authors}" +description = '''${mod_description}''' + +[[mixins]] +config = "${mod_id}.mixins.json" + +[[dependencies.${mod_id}]] +modId = "neoforge" +type = "required" +versionRange = "[1,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${mod_id}]] +modId = "minecraft" +type = "required" +versionRange = "${minecraft}" +ordering = "NONE" +side = "BOTH" \ No newline at end of file diff --git a/src/main/resources/assets/particle-effects/lang/en_us.json b/src/main/resources/assets/particle-effects/lang/en_us.json deleted file mode 100644 index f260c85..0000000 --- a/src/main/resources/assets/particle-effects/lang/en_us.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft!", - "particle-effects.modmenu.title": "§l${mod_name} Configuration", - "particle-effects.modmenu.no_config_library_screen.message": "You need to install §6§lYet Another Config Lib [YACL]§f to open ${mod_name} Configuration Screen\n\n§a§lOpen §6§lYACL §a§lModrinth page?", - - "particle-effects.modmenu.category.general.name": "§lGeneral", - - "particle-effects.modmenu.option.mod_enabled.name": "Mod Enabled", - "particle-effects.modmenu.option.mod_enabled.description": "If enabled, each particle of each effect will be replaced with a unique texture; if disabled, won't.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Debug Log Enabled", - "particle-effects.modmenu.option.debug_log_enabled.description": "If enabled, additional info will be logged to console for debugging; if disabled, won't.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Enabled", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Disabled" -} \ No newline at end of file diff --git a/src/main/resources/assets/particle-effects/lang/ru_ru.json b/src/main/resources/assets/particle-effects/lang/ru_ru.json deleted file mode 100644 index 7b941a7..0000000 --- a/src/main/resources/assets/particle-effects/lang/ru_ru.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Визуальный Fabric мод, который добавляет уникальные текстурированные частицы для всех эффектов в ванильном Minecraft!", - "particle-effects.modmenu.title": "§lКонфигурация ${mod_name}", - "particle-effects.modmenu.no_config_library_screen.message": "Вам необходимо установить §6§lYet Another Config Lib [YACL]§f, чтобы открыть экран конфигурации ${mod_name} \n\n§a§lОткрыть страницу §6§lYACL §a§lна Modrinth?", - - "particle-effects.modmenu.category.general.name": "§lОсновное", - - "particle-effects.modmenu.option.mod_enabled.name": "Включить мод", - "particle-effects.modmenu.option.mod_enabled.description": "Если мод включён, то каждая частица каждого эффекта получит свою уникальную текстуру; если отключён, все частицы всех эффектов будут иметь стандартную текстуру.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Включить дополнительный журнал откладки мода", - "particle-effects.modmenu.option.debug_log_enabled.description": "Если включено, в консоль игры будет выведена допольнительная информация о моде; если отключено, не будет.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Включено", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Отключено" -} diff --git a/src/main/resources/assets/particle-effects/lang/tt_ru.json b/src/main/resources/assets/particle-effects/lang/tt_ru.json deleted file mode 100644 index 1fce8a3..0000000 --- a/src/main/resources/assets/particle-effects/lang/tt_ru.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Ваниль Minecraft'дагы Һәр тәэсир өчен уникаль текстураланган кисәкчекләрне өсти торган визуаль Fabric моды!", - "particle-effects.modmenu.title": "§l${mod_name} көйләүләре", - "particle-effects.modmenu.no_config_library_screen.message": "${mod_name} көйләүләре экранын ачу өчен Сезгә §6§lYet Another Config Lib [YACL]§f утыртырга кирәк\n\n§6§lYACL §a§lModrinth битен ачаргамы?", - - "particle-effects.modmenu.category.general.name": "§lТөп", - - "particle-effects.modmenu.option.mod_enabled.name": "Модны кушу", - "particle-effects.modmenu.option.mod_enabled.description": "Кушылса, һәр тәэсир һәр кисәкчеге уникаль текстурага үзгәртеләчәк; Сүндерелсә, үзгәртелмәячәк.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Кушык", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Сүнек" -} diff --git a/src/main/resources/assets/particle-effects/lang/uk_ua.json b/src/main/resources/assets/particle-effects/lang/uk_ua.json deleted file mode 100644 index 4c0dab8..0000000 --- a/src/main/resources/assets/particle-effects/lang/uk_ua.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Візуальний мод Fabric, який додає унікальні текстуровані частинки для кожного стандартного ефекту Minecraft!", - "particle-effects.modmenu.title": "Налаштування §l${mod_name}", - "particle-effects.modmenu.no_config_library_screen.message": "Вам потрібно встановити §6§lYet Another Config Lib [YACL]§f, щоб відкрити екран налаштувань ${mod_name}\n\n§a§lВідкрити сторінку §6§lYACL§a§l на Modrinth?", - - "particle-effects.modmenu.category.general.name": "§lЗагальні", - - "particle-effects.modmenu.option.mod_enabled.name": "Мод увімкнено", - "particle-effects.modmenu.option.mod_enabled.description": "Якщо ввімкнено, кожна частинка кожного ефекту буде замінено унікальною текстурою; якщо вимкнено, не буде.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Журнал налагодження ввімкнено", - "particle-effects.modmenu.option.debug_log_enabled.description": "Якщо ввімкнено, додаткова інформація буде зареєстрована на консолі для налагодження; якщо вимкнено, не буде.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "УВІМК.", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "ВИМК." -} diff --git a/src/main/resources/assets/particle-effects/lang/zh_cn.json b/src/main/resources/assets/particle-effects/lang/zh_cn.json deleted file mode 100644 index b5e8c43..0000000 --- a/src/main/resources/assets/particle-effects/lang/zh_cn.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "一个为原版Minecraft中每个效果添加独特纹理粒子的视觉Fabric模组!", - "particle-effects.modmenu.title": "§l${mod_name} 配置", - "particle-effects.modmenu.no_config_library_screen.message": "你需要安装 §6§lYet Another Config Lib [YACL]§f 才能打开 ${mod_name} 配置界面\n\n§a§l打开 §6§lYACL §a§lModrinth 页面?", - - "particle-effects.modmenu.category.general.name": "§l通用", - - "particle-effects.modmenu.option.mod_enabled.name": "模组启用", - "particle-effects.modmenu.option.mod_enabled.description": "启用时,每个效果的粒子将被独特的纹理替换;禁用时则不会。", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "已启用", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "已禁用" -} diff --git a/src/main/resources/assets/particle-effects/particles/absorption.json b/src/main/resources/assets/particle-effects/particles/absorption.json deleted file mode 100644 index 6f3795d..0000000 --- a/src/main/resources/assets/particle-effects/particles/absorption.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:absorption/1", - "particle-effects:absorption/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/bad_omen.json b/src/main/resources/assets/particle-effects/particles/bad_omen.json deleted file mode 100644 index a657dc3..0000000 --- a/src/main/resources/assets/particle-effects/particles/bad_omen.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:bad_omen/1", - "particle-effects:bad_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/blindness.json b/src/main/resources/assets/particle-effects/particles/blindness.json deleted file mode 100644 index 19639a3..0000000 --- a/src/main/resources/assets/particle-effects/particles/blindness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:blindness/1", - "particle-effects:blindness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/conduit_power.json b/src/main/resources/assets/particle-effects/particles/conduit_power.json deleted file mode 100644 index bb1aad4..0000000 --- a/src/main/resources/assets/particle-effects/particles/conduit_power.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:conduit_power/1", - "particle-effects:conduit_power/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/darkness.json b/src/main/resources/assets/particle-effects/particles/darkness.json deleted file mode 100644 index fd75438..0000000 --- a/src/main/resources/assets/particle-effects/particles/darkness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:darkness/1", - "particle-effects:darkness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/dolphins_grace.json b/src/main/resources/assets/particle-effects/particles/dolphins_grace.json deleted file mode 100644 index 63e5c76..0000000 --- a/src/main/resources/assets/particle-effects/particles/dolphins_grace.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:dolphins_grace/1", - "particle-effects:dolphins_grace/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/fire_resistance.json b/src/main/resources/assets/particle-effects/particles/fire_resistance.json deleted file mode 100644 index 2a56148..0000000 --- a/src/main/resources/assets/particle-effects/particles/fire_resistance.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:fire_resistance/1", - "particle-effects:fire_resistance/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/glowing.json b/src/main/resources/assets/particle-effects/particles/glowing.json deleted file mode 100644 index d4cadbb..0000000 --- a/src/main/resources/assets/particle-effects/particles/glowing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:glowing/1", - "particle-effects:glowing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/haste.json b/src/main/resources/assets/particle-effects/particles/haste.json deleted file mode 100644 index 0d04934..0000000 --- a/src/main/resources/assets/particle-effects/particles/haste.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:haste/1", - "particle-effects:haste/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/health_boost.json b/src/main/resources/assets/particle-effects/particles/health_boost.json deleted file mode 100644 index 1ebdd37..0000000 --- a/src/main/resources/assets/particle-effects/particles/health_boost.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:health_boost/1", - "particle-effects:health_boost/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json b/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json deleted file mode 100644 index 4142c16..0000000 --- a/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:hero_of_the_village/1", - "particle-effects:hero_of_the_village/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/hunger.json b/src/main/resources/assets/particle-effects/particles/hunger.json deleted file mode 100644 index 6fdeb3c..0000000 --- a/src/main/resources/assets/particle-effects/particles/hunger.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:hunger/1", - "particle-effects:hunger/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/infested_new.json b/src/main/resources/assets/particle-effects/particles/infested_new.json deleted file mode 100644 index a498e71..0000000 --- a/src/main/resources/assets/particle-effects/particles/infested_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:infested/1", - "particle-effects:infested/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/instant_damage.json b/src/main/resources/assets/particle-effects/particles/instant_damage.json deleted file mode 100644 index 833f6fb..0000000 --- a/src/main/resources/assets/particle-effects/particles/instant_damage.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:instant_damage/1", - "particle-effects:instant_damage/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/instant_health.json b/src/main/resources/assets/particle-effects/particles/instant_health.json deleted file mode 100644 index 7c62022..0000000 --- a/src/main/resources/assets/particle-effects/particles/instant_health.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:instant_health/1", - "particle-effects:instant_health/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/invisibility.json b/src/main/resources/assets/particle-effects/particles/invisibility.json deleted file mode 100644 index 94780a2..0000000 --- a/src/main/resources/assets/particle-effects/particles/invisibility.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:invisibility/1", - "particle-effects:invisibility/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/jump_boost.json b/src/main/resources/assets/particle-effects/particles/jump_boost.json deleted file mode 100644 index 9f6c3e7..0000000 --- a/src/main/resources/assets/particle-effects/particles/jump_boost.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:jump_boost/1", - "particle-effects:jump_boost/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/levitation.json b/src/main/resources/assets/particle-effects/particles/levitation.json deleted file mode 100644 index 0e92c74..0000000 --- a/src/main/resources/assets/particle-effects/particles/levitation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:levitation/1", - "particle-effects:levitation/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/luck.json b/src/main/resources/assets/particle-effects/particles/luck.json deleted file mode 100644 index bcebac6..0000000 --- a/src/main/resources/assets/particle-effects/particles/luck.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:luck/1", - "particle-effects:luck/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/mining_fatigue.json b/src/main/resources/assets/particle-effects/particles/mining_fatigue.json deleted file mode 100644 index 0959b40..0000000 --- a/src/main/resources/assets/particle-effects/particles/mining_fatigue.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:mining_fatigue/1", - "particle-effects:mining_fatigue/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/nausea.json b/src/main/resources/assets/particle-effects/particles/nausea.json deleted file mode 100644 index bf2e0ea..0000000 --- a/src/main/resources/assets/particle-effects/particles/nausea.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:nausea/1", - "particle-effects:nausea/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/night_vision.json b/src/main/resources/assets/particle-effects/particles/night_vision.json deleted file mode 100644 index 819deec..0000000 --- a/src/main/resources/assets/particle-effects/particles/night_vision.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:night_vision/1", - "particle-effects:night_vision/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/oozing_new.json b/src/main/resources/assets/particle-effects/particles/oozing_new.json deleted file mode 100644 index 7ce8930..0000000 --- a/src/main/resources/assets/particle-effects/particles/oozing_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:oozing/1", - "particle-effects:oozing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/poison.json b/src/main/resources/assets/particle-effects/particles/poison.json deleted file mode 100644 index 153b5b7..0000000 --- a/src/main/resources/assets/particle-effects/particles/poison.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:poison/1", - "particle-effects:poison/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/raid_omen_new.json b/src/main/resources/assets/particle-effects/particles/raid_omen_new.json deleted file mode 100644 index 58505c6..0000000 --- a/src/main/resources/assets/particle-effects/particles/raid_omen_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:raid_omen/1", - "particle-effects:raid_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/regeneration.json b/src/main/resources/assets/particle-effects/particles/regeneration.json deleted file mode 100644 index da814bc..0000000 --- a/src/main/resources/assets/particle-effects/particles/regeneration.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:regeneration/1", - "particle-effects:regeneration/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/resistance.json b/src/main/resources/assets/particle-effects/particles/resistance.json deleted file mode 100644 index 2b4a4c5..0000000 --- a/src/main/resources/assets/particle-effects/particles/resistance.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:resistance/1", - "particle-effects:resistance/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/saturation.json b/src/main/resources/assets/particle-effects/particles/saturation.json deleted file mode 100644 index 298b2f4..0000000 --- a/src/main/resources/assets/particle-effects/particles/saturation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:saturation/1", - "particle-effects:saturation/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/slow_falling.json b/src/main/resources/assets/particle-effects/particles/slow_falling.json deleted file mode 100644 index 692cf1e..0000000 --- a/src/main/resources/assets/particle-effects/particles/slow_falling.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:slow_falling/1", - "particle-effects:slow_falling/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/slowness.json b/src/main/resources/assets/particle-effects/particles/slowness.json deleted file mode 100644 index d8eaba5..0000000 --- a/src/main/resources/assets/particle-effects/particles/slowness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:slowness/1", - "particle-effects:slowness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/speed.json b/src/main/resources/assets/particle-effects/particles/speed.json deleted file mode 100644 index a8f0738..0000000 --- a/src/main/resources/assets/particle-effects/particles/speed.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:speed/1", - "particle-effects:speed/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/strength.json b/src/main/resources/assets/particle-effects/particles/strength.json deleted file mode 100644 index 43af04b..0000000 --- a/src/main/resources/assets/particle-effects/particles/strength.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:strength/1", - "particle-effects:strength/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/trial_omen_new.json b/src/main/resources/assets/particle-effects/particles/trial_omen_new.json deleted file mode 100644 index 3bfaf8d..0000000 --- a/src/main/resources/assets/particle-effects/particles/trial_omen_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:trial_omen/1", - "particle-effects:trial_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/unluck.json b/src/main/resources/assets/particle-effects/particles/unluck.json deleted file mode 100644 index 00b4762..0000000 --- a/src/main/resources/assets/particle-effects/particles/unluck.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:unluck/1", - "particle-effects:unluck/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/water_breathing.json b/src/main/resources/assets/particle-effects/particles/water_breathing.json deleted file mode 100644 index 0562aed..0000000 --- a/src/main/resources/assets/particle-effects/particles/water_breathing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:water_breathing/1", - "particle-effects:water_breathing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/weakness.json b/src/main/resources/assets/particle-effects/particles/weakness.json deleted file mode 100644 index 1184ecd..0000000 --- a/src/main/resources/assets/particle-effects/particles/weakness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:weakness/1", - "particle-effects:weakness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/weaving_new.json b/src/main/resources/assets/particle-effects/particles/weaving_new.json deleted file mode 100644 index b5c3703..0000000 --- a/src/main/resources/assets/particle-effects/particles/weaving_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:weaving/1", - "particle-effects:weaving/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/wind_charged_new.json b/src/main/resources/assets/particle-effects/particles/wind_charged_new.json deleted file mode 100644 index de647b3..0000000 --- a/src/main/resources/assets/particle-effects/particles/wind_charged_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:wind_charged/1", - "particle-effects:wind_charged/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/wither.json b/src/main/resources/assets/particle-effects/particles/wither.json deleted file mode 100644 index 0303c74..0000000 --- a/src/main/resources/assets/particle-effects/particles/wither.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:wither/1", - "particle-effects:wither/2" - ] -} diff --git a/src/main/resources/assets/particle_effects/lang/en_us.json b/src/main/resources/assets/particle_effects/lang/en_us.json new file mode 100644 index 0000000..7fc5788 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/en_us.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft!", + "${mod_id}.modmenu.title": "§l${mod_name} Configuration", + "${mod_id}.modmenu.no_config_library_screen.message": "You need to install §6§lYet Another Config Lib [YACL]§f to open ${mod_name} Configuration Screen\n\n§a§lOpen §6§lYACL §a§lModrinth page?", + + "${mod_id}.modmenu.category.general.name": "§lGeneral", + + "${mod_id}.modmenu.option.mod_enabled.name": "Mod Enabled", + "${mod_id}.modmenu.option.mod_enabled.description": "If enabled, each particle of each effect will be replaced with a unique texture; if disabled, won't.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Debug Log Enabled", + "${mod_id}.modmenu.option.debug_log_enabled.description": "If enabled, additional info will be logged to console for debugging; if disabled, won't.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Enabled", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Disabled" +} \ No newline at end of file diff --git a/src/main/resources/assets/particle_effects/lang/ru_ru.json b/src/main/resources/assets/particle_effects/lang/ru_ru.json new file mode 100644 index 0000000..d6b108e --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/ru_ru.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Визуальный Fabric мод, который добавляет уникальные текстурированные частицы для всех эффектов в ванильном Minecraft!", + "${mod_id}.modmenu.title": "§lКонфигурация ${mod_name}", + "${mod_id}.modmenu.no_config_library_screen.message": "Вам необходимо установить §6§lYet Another Config Lib [YACL]§f, чтобы открыть экран конфигурации ${mod_name} \n\n§a§lОткрыть страницу §6§lYACL §a§lна Modrinth?", + + "${mod_id}.modmenu.category.general.name": "§lОсновное", + + "${mod_id}.modmenu.option.mod_enabled.name": "Включить мод", + "${mod_id}.modmenu.option.mod_enabled.description": "Если мод включён, то каждая частица каждого эффекта получит свою уникальную текстуру; если отключён, все частицы всех эффектов будут иметь стандартную текстуру.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Включить дополнительный журнал откладки мода", + "${mod_id}.modmenu.option.debug_log_enabled.description": "Если включено, в консоль игры будет выведена допольнительная информация о моде; если отключено, не будет.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Включено", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Отключено" +} diff --git a/src/main/resources/assets/particle_effects/lang/tt_ru.json b/src/main/resources/assets/particle_effects/lang/tt_ru.json new file mode 100644 index 0000000..a16fe8d --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/tt_ru.json @@ -0,0 +1,13 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Ваниль Minecraft'дагы Һәр тәэсир өчен уникаль текстураланган кисәкчекләрне өсти торган визуаль Fabric моды!", + "${mod_id}.modmenu.title": "§l${mod_name} көйләүләре", + "${mod_id}.modmenu.no_config_library_screen.message": "${mod_name} көйләүләре экранын ачу өчен Сезгә §6§lYet Another Config Lib [YACL]§f утыртырга кирәк\n\n§6§lYACL §a§lModrinth битен ачаргамы?", + + "${mod_id}.modmenu.category.general.name": "§lТөп", + + "${mod_id}.modmenu.option.mod_enabled.name": "Модны кушу", + "${mod_id}.modmenu.option.mod_enabled.description": "Кушылса, һәр тәэсир һәр кисәкчеге уникаль текстурага үзгәртеләчәк; Сүндерелсә, үзгәртелмәячәк.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Кушык", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Сүнек" +} diff --git a/src/main/resources/assets/particle_effects/lang/uk_ua.json b/src/main/resources/assets/particle_effects/lang/uk_ua.json new file mode 100644 index 0000000..3d71121 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/uk_ua.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Візуальний мод Fabric, який додає унікальні текстуровані частинки для кожного стандартного ефекту Minecraft!", + "${mod_id}.modmenu.title": "Налаштування §l${mod_name}", + "${mod_id}.modmenu.no_config_library_screen.message": "Вам потрібно встановити §6§lYet Another Config Lib [YACL]§f, щоб відкрити екран налаштувань ${mod_name}\n\n§a§lВідкрити сторінку §6§lYACL§a§l на Modrinth?", + + "${mod_id}.modmenu.category.general.name": "§lЗагальні", + + "${mod_id}.modmenu.option.mod_enabled.name": "Мод увімкнено", + "${mod_id}.modmenu.option.mod_enabled.description": "Якщо ввімкнено, кожна частинка кожного ефекту буде замінено унікальною текстурою; якщо вимкнено, не буде.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Журнал налагодження ввімкнено", + "${mod_id}.modmenu.option.debug_log_enabled.description": "Якщо ввімкнено, додаткова інформація буде зареєстрована на консолі для налагодження; якщо вимкнено, не буде.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "УВІМК.", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "ВИМК." +} diff --git a/src/main/resources/assets/particle_effects/lang/zh_cn.json b/src/main/resources/assets/particle_effects/lang/zh_cn.json new file mode 100644 index 0000000..9047fb7 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/zh_cn.json @@ -0,0 +1,13 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "一个为原版Minecraft中每个效果添加独特纹理粒子的视觉Fabric模组!", + "${mod_id}.modmenu.title": "§l${mod_name} 配置", + "${mod_id}.modmenu.no_config_library_screen.message": "你需要安装 §6§lYet Another Config Lib [YACL]§f 才能打开 ${mod_name} 配置界面\n\n§a§l打开 §6§lYACL §a§lModrinth 页面?", + + "${mod_id}.modmenu.category.general.name": "§l通用", + + "${mod_id}.modmenu.option.mod_enabled.name": "模组启用", + "${mod_id}.modmenu.option.mod_enabled.description": "启用时,每个效果的粒子将被独特的纹理替换;禁用时则不会。", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "已启用", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "已禁用" +} diff --git a/src/main/resources/assets/particle_effects/particles/absorption.json b/src/main/resources/assets/particle_effects/particles/absorption.json new file mode 100644 index 0000000..86e690e --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/absorption.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:absorption/1", + "particle_effects:absorption/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/bad_omen.json b/src/main/resources/assets/particle_effects/particles/bad_omen.json new file mode 100644 index 0000000..679a3e0 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/bad_omen.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:bad_omen/1", + "particle_effects:bad_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/blindness.json b/src/main/resources/assets/particle_effects/particles/blindness.json new file mode 100644 index 0000000..12dd5a3 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/blindness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:blindness/1", + "particle_effects:blindness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/conduit_power.json b/src/main/resources/assets/particle_effects/particles/conduit_power.json new file mode 100644 index 0000000..7420840 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/conduit_power.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:conduit_power/1", + "particle_effects:conduit_power/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/darkness.json b/src/main/resources/assets/particle_effects/particles/darkness.json new file mode 100644 index 0000000..5468d6d --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/darkness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:darkness/1", + "particle_effects:darkness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/dolphins_grace.json b/src/main/resources/assets/particle_effects/particles/dolphins_grace.json new file mode 100644 index 0000000..ff314ed --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/dolphins_grace.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:dolphins_grace/1", + "particle_effects:dolphins_grace/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/fire_resistance.json b/src/main/resources/assets/particle_effects/particles/fire_resistance.json new file mode 100644 index 0000000..725b6c3 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/fire_resistance.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:fire_resistance/1", + "particle_effects:fire_resistance/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/glowing.json b/src/main/resources/assets/particle_effects/particles/glowing.json new file mode 100644 index 0000000..36733b4 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/glowing.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:glowing/1", + "particle_effects:glowing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/haste.json b/src/main/resources/assets/particle_effects/particles/haste.json new file mode 100644 index 0000000..d1be521 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/haste.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:haste/1", + "particle_effects:haste/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/health_boost.json b/src/main/resources/assets/particle_effects/particles/health_boost.json new file mode 100644 index 0000000..129fa28 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/health_boost.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:health_boost/1", + "particle_effects:health_boost/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json b/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json new file mode 100644 index 0000000..fedd9c5 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:hero_of_the_village/1", + "particle_effects:hero_of_the_village/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/hunger.json b/src/main/resources/assets/particle_effects/particles/hunger.json new file mode 100644 index 0000000..637883b --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/hunger.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:hunger/1", + "particle_effects:hunger/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/infested_new.json b/src/main/resources/assets/particle_effects/particles/infested_new.json new file mode 100644 index 0000000..a0d89aa --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/infested_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:infested/1", + "particle_effects:infested/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/instant_damage.json b/src/main/resources/assets/particle_effects/particles/instant_damage.json new file mode 100644 index 0000000..39302ee --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/instant_damage.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:instant_damage/1", + "particle_effects:instant_damage/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/instant_health.json b/src/main/resources/assets/particle_effects/particles/instant_health.json new file mode 100644 index 0000000..87cc910 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/instant_health.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:instant_health/1", + "particle_effects:instant_health/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/invisibility.json b/src/main/resources/assets/particle_effects/particles/invisibility.json new file mode 100644 index 0000000..018e341 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/invisibility.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:invisibility/1", + "particle_effects:invisibility/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/jump_boost.json b/src/main/resources/assets/particle_effects/particles/jump_boost.json new file mode 100644 index 0000000..0095758 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/jump_boost.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:jump_boost/1", + "particle_effects:jump_boost/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/levitation.json b/src/main/resources/assets/particle_effects/particles/levitation.json new file mode 100644 index 0000000..4246f43 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/levitation.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:levitation/1", + "particle_effects:levitation/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/luck.json b/src/main/resources/assets/particle_effects/particles/luck.json new file mode 100644 index 0000000..35fe1de --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/luck.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:luck/1", + "particle_effects:luck/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/mining_fatigue.json b/src/main/resources/assets/particle_effects/particles/mining_fatigue.json new file mode 100644 index 0000000..0969a83 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/mining_fatigue.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:mining_fatigue/1", + "particle_effects:mining_fatigue/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/nausea.json b/src/main/resources/assets/particle_effects/particles/nausea.json new file mode 100644 index 0000000..80bc39b --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/nausea.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:nausea/1", + "particle_effects:nausea/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/night_vision.json b/src/main/resources/assets/particle_effects/particles/night_vision.json new file mode 100644 index 0000000..fbfef18 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/night_vision.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:night_vision/1", + "particle_effects:night_vision/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/oozing_new.json b/src/main/resources/assets/particle_effects/particles/oozing_new.json new file mode 100644 index 0000000..b33c855 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/oozing_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:oozing/1", + "particle_effects:oozing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/poison.json b/src/main/resources/assets/particle_effects/particles/poison.json new file mode 100644 index 0000000..8935537 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/poison.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:poison/1", + "particle_effects:poison/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/raid_omen_new.json b/src/main/resources/assets/particle_effects/particles/raid_omen_new.json new file mode 100644 index 0000000..70b9cb2 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/raid_omen_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:raid_omen/1", + "particle_effects:raid_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/regeneration.json b/src/main/resources/assets/particle_effects/particles/regeneration.json new file mode 100644 index 0000000..6936db6 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/regeneration.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:regeneration/1", + "particle_effects:regeneration/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/resistance.json b/src/main/resources/assets/particle_effects/particles/resistance.json new file mode 100644 index 0000000..4d819b7 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/resistance.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:resistance/1", + "particle_effects:resistance/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/saturation.json b/src/main/resources/assets/particle_effects/particles/saturation.json new file mode 100644 index 0000000..bd20cb0 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/saturation.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:saturation/1", + "particle_effects:saturation/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/slow_falling.json b/src/main/resources/assets/particle_effects/particles/slow_falling.json new file mode 100644 index 0000000..b8adbe5 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/slow_falling.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:slow_falling/1", + "particle_effects:slow_falling/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/slowness.json b/src/main/resources/assets/particle_effects/particles/slowness.json new file mode 100644 index 0000000..3b79aec --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/slowness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:slowness/1", + "particle_effects:slowness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/speed.json b/src/main/resources/assets/particle_effects/particles/speed.json new file mode 100644 index 0000000..09edc12 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/speed.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:speed/1", + "particle_effects:speed/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/strength.json b/src/main/resources/assets/particle_effects/particles/strength.json new file mode 100644 index 0000000..86abe49 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/strength.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:strength/1", + "particle_effects:strength/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/trial_omen_new.json b/src/main/resources/assets/particle_effects/particles/trial_omen_new.json new file mode 100644 index 0000000..a8a804c --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/trial_omen_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:trial_omen/1", + "particle_effects:trial_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/unluck.json b/src/main/resources/assets/particle_effects/particles/unluck.json new file mode 100644 index 0000000..55b1306 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/unluck.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:unluck/1", + "particle_effects:unluck/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/water_breathing.json b/src/main/resources/assets/particle_effects/particles/water_breathing.json new file mode 100644 index 0000000..5075b80 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/water_breathing.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:water_breathing/1", + "particle_effects:water_breathing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/weakness.json b/src/main/resources/assets/particle_effects/particles/weakness.json new file mode 100644 index 0000000..28511ee --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/weakness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:weakness/1", + "particle_effects:weakness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/weaving_new.json b/src/main/resources/assets/particle_effects/particles/weaving_new.json new file mode 100644 index 0000000..1bdad32 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/weaving_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:weaving/1", + "particle_effects:weaving/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/wind_charged_new.json b/src/main/resources/assets/particle_effects/particles/wind_charged_new.json new file mode 100644 index 0000000..39567fc --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/wind_charged_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:wind_charged/1", + "particle_effects:wind_charged/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/wither.json b/src/main/resources/assets/particle_effects/particles/wither.json new file mode 100644 index 0000000..bc5168c --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/wither.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:wither/1", + "particle_effects:wither/2" + ] +} diff --git a/src/main/resources/assets/particle-effects/textures/particle/absorption/1.png b/src/main/resources/assets/particle_effects/textures/particle/absorption/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/absorption/1.png rename to src/main/resources/assets/particle_effects/textures/particle/absorption/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/absorption/2.png b/src/main/resources/assets/particle_effects/textures/particle/absorption/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/absorption/2.png rename to src/main/resources/assets/particle_effects/textures/particle/absorption/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/bad_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/bad_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/bad_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/bad_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/bad_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/bad_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/bad_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/bad_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/blindness/1.png b/src/main/resources/assets/particle_effects/textures/particle/blindness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/blindness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/blindness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/blindness/2.png b/src/main/resources/assets/particle_effects/textures/particle/blindness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/blindness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/blindness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/conduit_power/1.png b/src/main/resources/assets/particle_effects/textures/particle/conduit_power/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/conduit_power/1.png rename to src/main/resources/assets/particle_effects/textures/particle/conduit_power/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/conduit_power/2.png b/src/main/resources/assets/particle_effects/textures/particle/conduit_power/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/conduit_power/2.png rename to src/main/resources/assets/particle_effects/textures/particle/conduit_power/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/darkness/1.png b/src/main/resources/assets/particle_effects/textures/particle/darkness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/darkness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/darkness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/darkness/2.png b/src/main/resources/assets/particle_effects/textures/particle/darkness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/darkness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/darkness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/1.png b/src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/1.png rename to src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/2.png b/src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/2.png rename to src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/fire_resistance/1.png b/src/main/resources/assets/particle_effects/textures/particle/fire_resistance/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/fire_resistance/1.png rename to src/main/resources/assets/particle_effects/textures/particle/fire_resistance/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/fire_resistance/2.png b/src/main/resources/assets/particle_effects/textures/particle/fire_resistance/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/fire_resistance/2.png rename to src/main/resources/assets/particle_effects/textures/particle/fire_resistance/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/glowing/1.png b/src/main/resources/assets/particle_effects/textures/particle/glowing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/glowing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/glowing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/glowing/2.png b/src/main/resources/assets/particle_effects/textures/particle/glowing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/glowing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/glowing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/haste/1.png b/src/main/resources/assets/particle_effects/textures/particle/haste/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/haste/1.png rename to src/main/resources/assets/particle_effects/textures/particle/haste/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/haste/2.png b/src/main/resources/assets/particle_effects/textures/particle/haste/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/haste/2.png rename to src/main/resources/assets/particle_effects/textures/particle/haste/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/health_boost/1.png b/src/main/resources/assets/particle_effects/textures/particle/health_boost/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/health_boost/1.png rename to src/main/resources/assets/particle_effects/textures/particle/health_boost/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/health_boost/2.png b/src/main/resources/assets/particle_effects/textures/particle/health_boost/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/health_boost/2.png rename to src/main/resources/assets/particle_effects/textures/particle/health_boost/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/1.png b/src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/1.png rename to src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/2.png b/src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/2.png rename to src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hunger/1.png b/src/main/resources/assets/particle_effects/textures/particle/hunger/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hunger/1.png rename to src/main/resources/assets/particle_effects/textures/particle/hunger/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hunger/2.png b/src/main/resources/assets/particle_effects/textures/particle/hunger/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hunger/2.png rename to src/main/resources/assets/particle_effects/textures/particle/hunger/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/infested/1.png b/src/main/resources/assets/particle_effects/textures/particle/infested/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/infested/1.png rename to src/main/resources/assets/particle_effects/textures/particle/infested/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/infested/2.png b/src/main/resources/assets/particle_effects/textures/particle/infested/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/infested/2.png rename to src/main/resources/assets/particle_effects/textures/particle/infested/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_damage/1.png b/src/main/resources/assets/particle_effects/textures/particle/instant_damage/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_damage/1.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_damage/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_damage/2.png b/src/main/resources/assets/particle_effects/textures/particle/instant_damage/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_damage/2.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_damage/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_health/1.png b/src/main/resources/assets/particle_effects/textures/particle/instant_health/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_health/1.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_health/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_health/2.png b/src/main/resources/assets/particle_effects/textures/particle/instant_health/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_health/2.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_health/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/invisibility/1.png b/src/main/resources/assets/particle_effects/textures/particle/invisibility/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/invisibility/1.png rename to src/main/resources/assets/particle_effects/textures/particle/invisibility/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/invisibility/2.png b/src/main/resources/assets/particle_effects/textures/particle/invisibility/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/invisibility/2.png rename to src/main/resources/assets/particle_effects/textures/particle/invisibility/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/jump_boost/1.png b/src/main/resources/assets/particle_effects/textures/particle/jump_boost/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/jump_boost/1.png rename to src/main/resources/assets/particle_effects/textures/particle/jump_boost/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/jump_boost/2.png b/src/main/resources/assets/particle_effects/textures/particle/jump_boost/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/jump_boost/2.png rename to src/main/resources/assets/particle_effects/textures/particle/jump_boost/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/levitation/1.png b/src/main/resources/assets/particle_effects/textures/particle/levitation/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/levitation/1.png rename to src/main/resources/assets/particle_effects/textures/particle/levitation/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/levitation/2.png b/src/main/resources/assets/particle_effects/textures/particle/levitation/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/levitation/2.png rename to src/main/resources/assets/particle_effects/textures/particle/levitation/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/luck/1.png b/src/main/resources/assets/particle_effects/textures/particle/luck/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/luck/1.png rename to src/main/resources/assets/particle_effects/textures/particle/luck/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/luck/2.png b/src/main/resources/assets/particle_effects/textures/particle/luck/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/luck/2.png rename to src/main/resources/assets/particle_effects/textures/particle/luck/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/1.png b/src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/1.png rename to src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/2.png b/src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/2.png rename to src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/nausea/1.png b/src/main/resources/assets/particle_effects/textures/particle/nausea/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/nausea/1.png rename to src/main/resources/assets/particle_effects/textures/particle/nausea/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/nausea/2.png b/src/main/resources/assets/particle_effects/textures/particle/nausea/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/nausea/2.png rename to src/main/resources/assets/particle_effects/textures/particle/nausea/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/night_vision/1.png b/src/main/resources/assets/particle_effects/textures/particle/night_vision/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/night_vision/1.png rename to src/main/resources/assets/particle_effects/textures/particle/night_vision/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/night_vision/2.png b/src/main/resources/assets/particle_effects/textures/particle/night_vision/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/night_vision/2.png rename to src/main/resources/assets/particle_effects/textures/particle/night_vision/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/oozing/1.png b/src/main/resources/assets/particle_effects/textures/particle/oozing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/oozing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/oozing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/oozing/2.png b/src/main/resources/assets/particle_effects/textures/particle/oozing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/oozing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/oozing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/poison/1.png b/src/main/resources/assets/particle_effects/textures/particle/poison/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/poison/1.png rename to src/main/resources/assets/particle_effects/textures/particle/poison/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/poison/2.png b/src/main/resources/assets/particle_effects/textures/particle/poison/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/poison/2.png rename to src/main/resources/assets/particle_effects/textures/particle/poison/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/raid_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/raid_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/raid_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/raid_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/raid_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/raid_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/raid_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/raid_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/regeneration/1.png b/src/main/resources/assets/particle_effects/textures/particle/regeneration/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/regeneration/1.png rename to src/main/resources/assets/particle_effects/textures/particle/regeneration/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/regeneration/2.png b/src/main/resources/assets/particle_effects/textures/particle/regeneration/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/regeneration/2.png rename to src/main/resources/assets/particle_effects/textures/particle/regeneration/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/resistance/1.png b/src/main/resources/assets/particle_effects/textures/particle/resistance/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/resistance/1.png rename to src/main/resources/assets/particle_effects/textures/particle/resistance/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/resistance/2.png b/src/main/resources/assets/particle_effects/textures/particle/resistance/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/resistance/2.png rename to src/main/resources/assets/particle_effects/textures/particle/resistance/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/saturation/1.png b/src/main/resources/assets/particle_effects/textures/particle/saturation/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/saturation/1.png rename to src/main/resources/assets/particle_effects/textures/particle/saturation/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/saturation/2.png b/src/main/resources/assets/particle_effects/textures/particle/saturation/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/saturation/2.png rename to src/main/resources/assets/particle_effects/textures/particle/saturation/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slow_falling/1.png b/src/main/resources/assets/particle_effects/textures/particle/slow_falling/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slow_falling/1.png rename to src/main/resources/assets/particle_effects/textures/particle/slow_falling/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slow_falling/2.png b/src/main/resources/assets/particle_effects/textures/particle/slow_falling/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slow_falling/2.png rename to src/main/resources/assets/particle_effects/textures/particle/slow_falling/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slowness/1.png b/src/main/resources/assets/particle_effects/textures/particle/slowness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slowness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/slowness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slowness/2.png b/src/main/resources/assets/particle_effects/textures/particle/slowness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slowness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/slowness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/speed/1.png b/src/main/resources/assets/particle_effects/textures/particle/speed/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/speed/1.png rename to src/main/resources/assets/particle_effects/textures/particle/speed/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/speed/2.png b/src/main/resources/assets/particle_effects/textures/particle/speed/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/speed/2.png rename to src/main/resources/assets/particle_effects/textures/particle/speed/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/strength/1.png b/src/main/resources/assets/particle_effects/textures/particle/strength/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/strength/1.png rename to src/main/resources/assets/particle_effects/textures/particle/strength/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/strength/2.png b/src/main/resources/assets/particle_effects/textures/particle/strength/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/strength/2.png rename to src/main/resources/assets/particle_effects/textures/particle/strength/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/trial_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/trial_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/trial_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/trial_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/trial_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/trial_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/trial_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/trial_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/unluck/1.png b/src/main/resources/assets/particle_effects/textures/particle/unluck/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/unluck/1.png rename to src/main/resources/assets/particle_effects/textures/particle/unluck/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/unluck/2.png b/src/main/resources/assets/particle_effects/textures/particle/unluck/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/unluck/2.png rename to src/main/resources/assets/particle_effects/textures/particle/unluck/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/water_breathing/1.png b/src/main/resources/assets/particle_effects/textures/particle/water_breathing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/water_breathing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/water_breathing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/water_breathing/2.png b/src/main/resources/assets/particle_effects/textures/particle/water_breathing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/water_breathing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/water_breathing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weakness/1.png b/src/main/resources/assets/particle_effects/textures/particle/weakness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weakness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/weakness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weakness/2.png b/src/main/resources/assets/particle_effects/textures/particle/weakness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weakness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/weakness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weaving/1.png b/src/main/resources/assets/particle_effects/textures/particle/weaving/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weaving/1.png rename to src/main/resources/assets/particle_effects/textures/particle/weaving/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weaving/2.png b/src/main/resources/assets/particle_effects/textures/particle/weaving/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weaving/2.png rename to src/main/resources/assets/particle_effects/textures/particle/weaving/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wind_charged/1.png b/src/main/resources/assets/particle_effects/textures/particle/wind_charged/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wind_charged/1.png rename to src/main/resources/assets/particle_effects/textures/particle/wind_charged/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wind_charged/2.png b/src/main/resources/assets/particle_effects/textures/particle/wind_charged/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wind_charged/2.png rename to src/main/resources/assets/particle_effects/textures/particle/wind_charged/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wither/1.png b/src/main/resources/assets/particle_effects/textures/particle/wither/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wither/1.png rename to src/main/resources/assets/particle_effects/textures/particle/wither/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wither/2.png b/src/main/resources/assets/particle_effects/textures/particle/wither/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wither/2.png rename to src/main/resources/assets/particle_effects/textures/particle/wither/2.png diff --git a/src/main/resources/aws/1.20.1.accesswidener b/src/main/resources/aws/fabric-1.20.1.accesswidener similarity index 100% rename from src/main/resources/aws/1.20.1.accesswidener rename to src/main/resources/aws/fabric-1.20.1.accesswidener diff --git a/src/main/resources/aws/1.21.1.accesswidener b/src/main/resources/aws/fabric-1.21.1.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.1.accesswidener rename to src/main/resources/aws/fabric-1.21.1.accesswidener index d2e3736..5b0adee 100644 --- a/src/main/resources/aws/1.21.1.accesswidener +++ b/src/main/resources/aws/fabric-1.21.1.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.1 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.10.accesswidener b/src/main/resources/aws/fabric-1.21.10.accesswidener similarity index 87% rename from src/main/resources/aws/1.21.10.accesswidener rename to src/main/resources/aws/fabric-1.21.10.accesswidener index c2ef41f..e50278b 100644 --- a/src/main/resources/aws/1.21.10.accesswidener +++ b/src/main/resources/aws/fabric-1.21.10.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.10 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.4.accesswidener b/src/main/resources/aws/fabric-1.21.4.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.4.accesswidener rename to src/main/resources/aws/fabric-1.21.4.accesswidener index eafc3b3..0968a62 100644 --- a/src/main/resources/aws/1.21.4.accesswidener +++ b/src/main/resources/aws/fabric-1.21.4.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.4 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.5.accesswidener b/src/main/resources/aws/fabric-1.21.5.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.5.accesswidener rename to src/main/resources/aws/fabric-1.21.5.accesswidener index fbac418..a9d8b05 100644 --- a/src/main/resources/aws/1.21.5.accesswidener +++ b/src/main/resources/aws/fabric-1.21.5.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.5 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.6.accesswidener b/src/main/resources/aws/fabric-1.21.6.accesswidener similarity index 100% rename from src/main/resources/aws/1.21.6.accesswidener rename to src/main/resources/aws/fabric-1.21.6.accesswidener diff --git a/src/main/resources/aws/1.21.7.accesswidener b/src/main/resources/aws/fabric-1.21.7.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.7.accesswidener rename to src/main/resources/aws/fabric-1.21.7.accesswidener index 8694c4d..f6700da 100644 --- a/src/main/resources/aws/1.21.7.accesswidener +++ b/src/main/resources/aws/fabric-1.21.7.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.7 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.8.accesswidener b/src/main/resources/aws/fabric-1.21.8.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.8.accesswidener rename to src/main/resources/aws/fabric-1.21.8.accesswidener index 01d084c..1d02288 100644 --- a/src/main/resources/aws/1.21.8.accesswidener +++ b/src/main/resources/aws/fabric-1.21.8.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.8 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.9.accesswidener b/src/main/resources/aws/fabric-1.21.9.accesswidener similarity index 87% rename from src/main/resources/aws/1.21.9.accesswidener rename to src/main/resources/aws/fabric-1.21.9.accesswidener index 87eeff3..bb0645d 100644 --- a/src/main/resources/aws/1.21.9.accesswidener +++ b/src/main/resources/aws/fabric-1.21.9.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21.9 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/1.21.accesswidener b/src/main/resources/aws/fabric-1.21.accesswidener similarity index 84% rename from src/main/resources/aws/1.21.accesswidener rename to src/main/resources/aws/fabric-1.21.accesswidener index 58da2ab..69f5518 100644 --- a/src/main/resources/aws/1.21.accesswidener +++ b/src/main/resources/aws/fabric-1.21.accesswidener @@ -1,8 +1,6 @@ accessWidener v2 named # 1.21 AW -accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V accessible field net/minecraft/core/particles/ColorParticleOption color I diff --git a/src/main/resources/aws/forge-1.20.1.cfg b/src/main/resources/aws/forge-1.20.1.cfg new file mode 100644 index 0000000..af65e25 --- /dev/null +++ b/src/main/resources/aws/forge-1.20.1.cfg @@ -0,0 +1,14 @@ +public net.minecraft.client.particle.Particle f_107209_ # xo +public net.minecraft.client.particle.Particle f_107210_ # yo +public net.minecraft.client.particle.Particle f_107211_ # zo + +public net.minecraft.client.particle.Particle f_107212_ # x +public net.minecraft.client.particle.Particle f_107213_ # y +public net.minecraft.client.particle.Particle f_107214_ # z + +public net.minecraft.client.particle.Particle f_107227_ # r +public net.minecraft.client.particle.Particle f_107228_ # g +public net.minecraft.client.particle.Particle f_107229_ # b +public net.minecraft.client.particle.Particle f_107230_ # a + +public net.minecraft.client.particle.SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V \ No newline at end of file diff --git a/src/main/resources/aws/neoforge-1.21.1.cfg b/src/main/resources/aws/neoforge-1.21.1.cfg new file mode 100644 index 0000000..861cb25 --- /dev/null +++ b/src/main/resources/aws/neoforge-1.21.1.cfg @@ -0,0 +1,15 @@ +public net.minecraft.core.particles.ColorParticleOption color +public net.minecraft.world.effect.SaturationMobEffect + +public net.minecraft.client.particle.Particle xo +public net.minecraft.client.particle.Particle yo +public net.minecraft.client.particle.Particle zo + +public net.minecraft.client.particle.Particle x +public net.minecraft.client.particle.Particle y +public net.minecraft.client.particle.Particle z + +public net.minecraft.client.particle.Particle rCol +public net.minecraft.client.particle.Particle gCol +public net.minecraft.client.particle.Particle bCol +public net.minecraft.client.particle.Particle alpha \ No newline at end of file diff --git a/src/main/resources/aws/neoforge-1.21.10.cfg b/src/main/resources/aws/neoforge-1.21.10.cfg new file mode 100644 index 0000000..75837c6 --- /dev/null +++ b/src/main/resources/aws/neoforge-1.21.10.cfg @@ -0,0 +1,18 @@ +public net.minecraft.core.particles.ColorParticleOption color +public net.minecraft.world.effect.SaturationMobEffect + +public net.minecraft.client.particle.Particle xo +public net.minecraft.client.particle.Particle yo +public net.minecraft.client.particle.Particle zo + +public net.minecraft.client.particle.Particle x +public net.minecraft.client.particle.Particle y +public net.minecraft.client.particle.Particle z + +public net.minecraft.client.particle.SingleQuadParticle rCol +public net.minecraft.client.particle.SingleQuadParticle gCol +public net.minecraft.client.particle.SingleQuadParticle bCol +public net.minecraft.client.particle.SingleQuadParticle alpha + +public net.minecraft.client.renderer.LevelRenderer featureRenderDispatcher +public net.minecraft.client.renderer.LevelRenderer levelRenderState \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ae86068..8ec3282 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,13 +16,13 @@ "environment": "client", "entrypoints": { "main": [ - "net.lopymine.pe.ParticleEffects" + "net.lopymine.pe.entrypoint.PEFabricEntrypoint" ], "client": [ - "net.lopymine.pe.client.ParticleEffectsClient" + "net.lopymine.pe.entrypoint.PEFabricClientEntrypoint" ], "modmenu": [ - "net.lopymine.pe.modmenu.ModMenuIntegration" + "net.lopymine.pe.modmenu.PEModMenuIntegration" ] }, "depends": { @@ -31,8 +31,8 @@ "java": ">=${java}", "${fabric_api_id}": "*" }, - "accessWidener": "aws/${minecraft}.accesswidener", - "mixins": [ - "${mod_id}.mixins.json" - ] + "accessWidener": "aws/fabric-${minecraft}.accesswidener", + "mixins": [ + "${fabric_trick_mixin_configs}" + ] } \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..145b120 --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "${mod_name}", + "pack_format": 14 + } +} \ No newline at end of file diff --git a/src/main/resources/particle-effects.mixins.json5 b/src/main/resources/particle_effects.mixins.json5 similarity index 87% rename from src/main/resources/particle-effects.mixins.json5 rename to src/main/resources/particle_effects.mixins.json5 index 85eb4ce..f7ffe62 100644 --- a/src/main/resources/particle-effects.mixins.json5 +++ b/src/main/resources/particle_effects.mixins.json5 @@ -13,8 +13,6 @@ /*? !1.20.1*/ "SecondLivingEntityMixin", /*? >=1.21.9*/ - "BillboardParticleRendererMixin", - /*? >=1.21.9*/ "ClientWorldMixin", /*? <=1.21.8*/ /*"WorldRendererMixin",*/ @@ -24,7 +22,9 @@ "SimpleParticleTypeMixin", "ParticleManagerMixin", "ParticleMixin", - "ArrowEntityMixin" + "ArrowEntityMixin", + "WorldRendererDebugParticlesMixin", + "ParticleEngineMixin" ], "injectors": { "defaultRequire": 1 diff --git a/stonecutter.gradle b/stonecutter.gradle index b0fcb7d..3516906 100644 --- a/stonecutter.gradle +++ b/stonecutter.gradle @@ -1,5 +1,5 @@ plugins { id "dev.kikugie.stonecutter" - id "net.lopymine.mossy-plugin-stonecutter" + id "net.lopymine.mossy-plugin-stonecutter" version "$mossy_plugin_version" } -stonecutter.active "1.21.10" /* [SC] DO NOT EDIT */ \ No newline at end of file +stonecutter.active "fabric-1.21.10" /* [SC] DO NOT EDIT */ \ No newline at end of file diff --git a/versions/1.20.1/gradle.properties b/versions/1.20.1/gradle.properties deleted file mode 100644 index 1f568bf..0000000 --- a/versions/1.20.1/gradle.properties +++ /dev/null @@ -1,14 +0,0 @@ -# Versioned Properties - -# Java Properties -build.java=17 - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.20.1+build.10 -build.fabric_api=0.92.2+1.20.1 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1 -dep.modmenu=7.2.2 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1 -dep.yacl=3.5.0+1.20.1-fabric diff --git a/versions/1.21.1/gradle.properties b/versions/1.21.1/gradle.properties deleted file mode 100644 index 2b0e9f3..0000000 --- a/versions/1.21.1/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.1+build.3 -build.fabric_api=0.107.0+1.21.1 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1 -dep.modmenu=11.0.3 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1 -dep.yacl=3.6.1+1.21-fabric diff --git a/versions/1.21.4/gradle.properties b/versions/1.21.4/gradle.properties deleted file mode 100644 index 254fba1..0000000 --- a/versions/1.21.4/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.4+build.8 -build.fabric_api=0.117.0+1.21.4 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.4 -dep.modmenu=13.0.2 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.4 -dep.yacl=3.6.2+1.21.4-fabric diff --git a/versions/1.21/gradle.properties b/versions/1.21/gradle.properties deleted file mode 100644 index 23a5afd..0000000 --- a/versions/1.21/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21+build.9 -build.fabric_api=0.100.7+1.21 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21 -dep.modmenu=11.0.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21 -dep.yacl=3.5.0+1.21-fabric diff --git a/versions/fabric-1.20.1/gradle.properties b/versions/fabric-1.20.1/gradle.properties new file mode 100644 index 0000000..38c7b4a --- /dev/null +++ b/versions/fabric-1.20.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.20.1+build.10 +build.fabric_api=0.92.6+1.20.1 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1&l=fabric +dep.modmenu=7.2.2 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1&l=fabric +dep.yacl=3.6.6+1.20.1-fabric diff --git a/versions/fabric-1.21.1/gradle.properties b/versions/fabric-1.21.1/gradle.properties new file mode 100644 index 0000000..f7807b4 --- /dev/null +++ b/versions/fabric-1.21.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.1+build.3 +build.fabric_api=0.116.7+1.21.1 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1&l=fabric +dep.modmenu=11.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1&l=fabric +dep.yacl=3.8.0+1.21.1-fabric diff --git a/versions/1.21.10/gradle.properties b/versions/fabric-1.21.10/gradle.properties similarity index 94% rename from versions/1.21.10/gradle.properties rename to versions/fabric-1.21.10/gradle.properties index 6fe6ae8..fc78390 100644 --- a/versions/1.21.10/gradle.properties +++ b/versions/fabric-1.21.10/gradle.properties @@ -3,7 +3,7 @@ # and reload Gradle to update only it's value. # Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.10+build.2 +build.yarn=1.21.10+build.3 build.fabric_api=0.138.3+1.21.10 # Additional Dependencies Properties diff --git a/versions/fabric-1.21.4/gradle.properties b/versions/fabric-1.21.4/gradle.properties new file mode 100644 index 0000000..4d4ee29 --- /dev/null +++ b/versions/fabric-1.21.4/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.4+build.8 +build.fabric_api=0.119.4+1.21.4 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.4&l=fabric +dep.modmenu=13.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.4&l=fabric +dep.yacl=3.8.0+1.21.4-fabric diff --git a/versions/1.21.5/gradle.properties b/versions/fabric-1.21.5/gradle.properties similarity index 82% rename from versions/1.21.5/gradle.properties rename to versions/fabric-1.21.5/gradle.properties index ca91576..7543130 100644 --- a/versions/1.21.5/gradle.properties +++ b/versions/fabric-1.21.5/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.5+build.1 -build.fabric_api=0.119.5+1.21.5 +build.fabric_api=0.128.2+1.21.5 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.5&l=fabric -dep.modmenu=14.0.0-rc.2 +dep.modmenu=14.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.5&l=fabric -dep.yacl=3.6.6+1.21.5-fabric +dep.yacl=3.8.0+1.21.5-fabric diff --git a/versions/1.21.6/gradle.properties b/versions/fabric-1.21.6/gradle.properties similarity index 81% rename from versions/1.21.6/gradle.properties rename to versions/fabric-1.21.6/gradle.properties index e475cdf..817e541 100644 --- a/versions/1.21.6/gradle.properties +++ b/versions/fabric-1.21.6/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.6+build.1 -build.fabric_api=0.128.1+1.21.6 +build.fabric_api=0.128.2+1.21.6 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.6&l=fabric -dep.modmenu=15.0.0-beta.3 +dep.modmenu=15.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.6&l=fabric -dep.yacl=3.7.1+1.21.6-fabric +dep.yacl=3.8.0+1.21.6-fabric diff --git a/versions/1.21.7/gradle.properties b/versions/fabric-1.21.7/gradle.properties similarity index 82% rename from versions/1.21.7/gradle.properties rename to versions/fabric-1.21.7/gradle.properties index e21c4d8..add72cd 100644 --- a/versions/1.21.7/gradle.properties +++ b/versions/fabric-1.21.7/gradle.properties @@ -3,11 +3,11 @@ # and reload Gradle to update only it's value. # Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.7+build.1 -build.fabric_api=0.128.1+1.21.7 +build.yarn=1.21.7+build.8 +build.fabric_api=0.129.0+1.21.7 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.7&l=fabric -dep.modmenu=15.0.0-beta.3 +dep.modmenu=15.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.7&l=fabric dep.yacl=3.7.1+1.21.6-fabric diff --git a/versions/1.21.8/gradle.properties b/versions/fabric-1.21.8/gradle.properties similarity index 93% rename from versions/1.21.8/gradle.properties rename to versions/fabric-1.21.8/gradle.properties index b94f231..4f06e8e 100644 --- a/versions/1.21.8/gradle.properties +++ b/versions/fabric-1.21.8/gradle.properties @@ -4,7 +4,7 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.8+build.1 -build.fabric_api=0.133.4+1.21.8 +build.fabric_api=0.136.1+1.21.8 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.8&l=fabric diff --git a/versions/1.21.9/gradle.properties b/versions/fabric-1.21.9/gradle.properties similarity index 82% rename from versions/1.21.9/gradle.properties rename to versions/fabric-1.21.9/gradle.properties index d02f99e..2df10c6 100644 --- a/versions/1.21.9/gradle.properties +++ b/versions/fabric-1.21.9/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.9+build.1 -build.fabric_api=0.133.14+1.21.9 +build.fabric_api=0.134.0+1.21.9 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.9&l=fabric -dep.modmenu=15.0.0 +dep.modmenu=16.0.0-rc.1 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.9&l=fabric -dep.yacl=3.8.0+1.21.9-fabric \ No newline at end of file +dep.yacl=3.8.0+1.21.9-fabric diff --git a/versions/fabric-1.21/gradle.properties b/versions/fabric-1.21/gradle.properties new file mode 100644 index 0000000..7e92607 --- /dev/null +++ b/versions/fabric-1.21/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21+build.9 +build.fabric_api=0.102.0+1.21 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21&l=fabric +dep.modmenu=11.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21&l=fabric +dep.yacl=3.8.0+1.21.1-fabric diff --git a/versions/forge-1.20.1/gradle.properties b/versions/forge-1.20.1/gradle.properties new file mode 100644 index 0000000..29ad978 --- /dev/null +++ b/versions/forge-1.20.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Forge Properties, check https://files.minecraftforge.net/net/minecraftforge/forge/index_1.20.1.html +build.forge=1.20.1-47.4.12 +build.parchment=2023.09.03 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1&l=forge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1&l=forge +dep.yacl=3.6.6+1.20.1-forge diff --git a/versions/neoforge-1.21.1/gradle.properties b/versions/neoforge-1.21.1/gradle.properties new file mode 100644 index 0000000..5c64f70 --- /dev/null +++ b/versions/neoforge-1.21.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# NeoForge Properties, check https://neoforged.net/ +build.neoforge=21.1.215 +build.parchment=2024.11.17 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1&l=neoforge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1&l=neoforge +dep.yacl=3.8.0+1.21.1-neoforge diff --git a/versions/neoforge-1.21.10/gradle.properties b/versions/neoforge-1.21.10/gradle.properties new file mode 100644 index 0000000..91f3475 --- /dev/null +++ b/versions/neoforge-1.21.10/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# NeoForge Properties, check https://neoforged.net/ +build.neoforge=21.10.56-beta +build.parchment=2025.10.12 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.10&l=neoforge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.10&l=neoforge +dep.yacl=3.8.0+1.21.9-neoforge From 5803a48bb32668c616826fb83bb46ea1f4a2f60a Mon Sep 17 00:00:00 2001 From: LopyMine Date: Sun, 30 Nov 2025 05:03:11 +0300 Subject: [PATCH 4/4] Renamed entrypoints --- ...eClientEntrypoint.java => PENeoForgeClientEntrypoint.java} | 4 ++-- ...MossyNeoForgeEntrypoint.java => PENeoForgeEntrypoint.java} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/net/lopymine/pe/entrypoint/{MossyNeoForgeClientEntrypoint.java => PENeoForgeClientEntrypoint.java} (82%) rename src/main/java/net/lopymine/pe/entrypoint/{MossyNeoForgeEntrypoint.java => PENeoForgeEntrypoint.java} (85%) diff --git a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java similarity index 82% rename from src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java rename to src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java index a9885c1..cc945c9 100644 --- a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeClientEntrypoint.java +++ b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java @@ -10,9 +10,9 @@ import net.neoforged.fml.common.Mod; @Mod(value = ParticleEffects.MOD_ID, dist = Dist.CLIENT) -public class MossyNeoForgeClientEntrypoint { +public class PENeoForgeClientEntrypoint { - public MossyNeoForgeClientEntrypoint(ModContainer container) { + public PENeoForgeClientEntrypoint(ModContainer container) { ParticleEffectsClient.onInitializeClient(); PEModMenuIntegration integration = new PEModMenuIntegration(); integration.register(container); diff --git a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java similarity index 85% rename from src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java rename to src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java index bdbf63f..11fbb08 100644 --- a/src/main/java/net/lopymine/pe/entrypoint/MossyNeoForgeEntrypoint.java +++ b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java @@ -8,9 +8,9 @@ import net.neoforged.fml.common.Mod; @Mod(ParticleEffects.MOD_ID) -public class MossyNeoForgeEntrypoint { +public class PENeoForgeEntrypoint { - public MossyNeoForgeEntrypoint(IEventBus eventBus) { + public PENeoForgeEntrypoint(IEventBus eventBus) { ParticleEffectsManager.PARTICLES_REGISTER.register(eventBus); eventBus.addListener(ParticleEffectsManager::onCommonSetup); eventBus.addListener(ParticleEffectsManager::registerParticleFactories);