From 7ddf167c5dd7ac6e3672578f3b6a5b473f45322f Mon Sep 17 00:00:00 2001 From: Wyvest <45589059+Wyvest@users.noreply.github.com> Date: Sun, 15 May 2022 11:47:42 +0700 Subject: [PATCH] Revert "start on particles" This reverts commit 931f9cde8fbeb895f62b73ad80792a8ea487dc79. --- .../redaction/hook/EntityBreakingFXHook.java | 10 ---- .../redaction/hook/EntityCrit2FXHook.java | 6 -- .../redaction/mixin/EffectRendererMixin.java | 24 -------- .../mixin/EntityBreakingFXMixin.java | 36 ------------ .../mixin/EntityDropParticleFXAccessor.java | 12 ---- .../redaction/mixin/EntityFXAccessor.java | 11 ---- .../mixin/EntityMagicCrit2FXMixin.java | 31 ---------- .../redaction/mixin/RenderManagerMixin.java | 20 +++---- .../kotlin/net/wyvest/redaction/Redaction.kt | 2 - .../{HitboxesConfig.kt => GeneralConfig.kt} | 4 +- .../redaction/features/hitbox/Hitboxes.kt | 14 ++--- .../redaction/features/particles/Particle.kt | 56 ------------------ .../redaction/features/particles/Particles.kt | 57 ------------------- .../features/particles/ParticlesConfig.kt | 13 ----- .../wyvest/redaction/gui/HitboxPreviewGUI.kt | 22 +++---- src/main/resources/mixins.redaction.json | 6 -- 16 files changed, 30 insertions(+), 294 deletions(-) delete mode 100644 src/main/java/net/wyvest/redaction/hook/EntityBreakingFXHook.java delete mode 100644 src/main/java/net/wyvest/redaction/hook/EntityCrit2FXHook.java delete mode 100644 src/main/java/net/wyvest/redaction/mixin/EffectRendererMixin.java delete mode 100644 src/main/java/net/wyvest/redaction/mixin/EntityBreakingFXMixin.java delete mode 100644 src/main/java/net/wyvest/redaction/mixin/EntityDropParticleFXAccessor.java delete mode 100644 src/main/java/net/wyvest/redaction/mixin/EntityFXAccessor.java delete mode 100644 src/main/java/net/wyvest/redaction/mixin/EntityMagicCrit2FXMixin.java rename src/main/kotlin/net/wyvest/redaction/features/hitbox/{HitboxesConfig.kt => GeneralConfig.kt} (84%) delete mode 100644 src/main/kotlin/net/wyvest/redaction/features/particles/Particle.kt delete mode 100644 src/main/kotlin/net/wyvest/redaction/features/particles/Particles.kt delete mode 100644 src/main/kotlin/net/wyvest/redaction/features/particles/ParticlesConfig.kt diff --git a/src/main/java/net/wyvest/redaction/hook/EntityBreakingFXHook.java b/src/main/java/net/wyvest/redaction/hook/EntityBreakingFXHook.java deleted file mode 100644 index 7447bef..0000000 --- a/src/main/java/net/wyvest/redaction/hook/EntityBreakingFXHook.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.wyvest.redaction.hook; - -import net.minecraft.item.Item; -import org.jetbrains.annotations.Nullable; - -public interface EntityBreakingFXHook { - @Nullable - Item getItem(); - boolean isProjectile(); -} diff --git a/src/main/java/net/wyvest/redaction/hook/EntityCrit2FXHook.java b/src/main/java/net/wyvest/redaction/hook/EntityCrit2FXHook.java deleted file mode 100644 index a406681..0000000 --- a/src/main/java/net/wyvest/redaction/hook/EntityCrit2FXHook.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.wyvest.redaction.hook; - -public interface EntityCrit2FXHook { - boolean isMagic(); - void setMagic(boolean value); -} diff --git a/src/main/java/net/wyvest/redaction/mixin/EffectRendererMixin.java b/src/main/java/net/wyvest/redaction/mixin/EffectRendererMixin.java deleted file mode 100644 index 510b059..0000000 --- a/src/main/java/net/wyvest/redaction/mixin/EffectRendererMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.wyvest.redaction.mixin; - -import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.client.particle.EntityFX; -import net.wyvest.redaction.features.particles.Particle; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(EffectRenderer.class) -public class EffectRendererMixin { - @Inject(method = "addEffect", at = @At("HEAD"), cancellable = true) - private void cancelEffect(EntityFX effect, CallbackInfo ci) { - for (Particle particle : Particle.values) { - if (particle.getCondition().invoke(effect)) { - if (particle.getEnabled()) { - ci.cancel(); - } - break; - } - } - } -} diff --git a/src/main/java/net/wyvest/redaction/mixin/EntityBreakingFXMixin.java b/src/main/java/net/wyvest/redaction/mixin/EntityBreakingFXMixin.java deleted file mode 100644 index 6dc65b3..0000000 --- a/src/main/java/net/wyvest/redaction/mixin/EntityBreakingFXMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.wyvest.redaction.mixin; - -import net.minecraft.client.particle.EntityBreakingFX; -import net.minecraft.item.Item; -import net.minecraft.world.World; -import net.wyvest.redaction.hook.EntityBreakingFXHook; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(EntityBreakingFX.class) -public class EntityBreakingFXMixin implements EntityBreakingFXHook { - private Item item = null; - private boolean isProjectile; - - @Inject(method = "(Lnet/minecraft/world/World;DDDLnet/minecraft/item/Item;)V", at = @At("RETURN")) - private void markAsSnowball(World world, double d, double e, double f, Item item, CallbackInfo ci) { - isProjectile = true; - } - - @Inject(method = "(Lnet/minecraft/world/World;DDDLnet/minecraft/item/Item;I)V", at = @At("RETURN")) - private void getItem(World world, double d, double e, double f, Item item, int i, CallbackInfo ci) { - this.item = item; - } - - @Override - public Item getItem() { - return item; - } - - @Override - public boolean isProjectile() { - return isProjectile; - } -} diff --git a/src/main/java/net/wyvest/redaction/mixin/EntityDropParticleFXAccessor.java b/src/main/java/net/wyvest/redaction/mixin/EntityDropParticleFXAccessor.java deleted file mode 100644 index 9fe4660..0000000 --- a/src/main/java/net/wyvest/redaction/mixin/EntityDropParticleFXAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.wyvest.redaction.mixin; - -import net.minecraft.block.material.Material; -import net.minecraft.client.particle.EntityDropParticleFX; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(EntityDropParticleFX.class) -public interface EntityDropParticleFXAccessor { - @Accessor("materialType") - Material getMaterial(); -} diff --git a/src/main/java/net/wyvest/redaction/mixin/EntityFXAccessor.java b/src/main/java/net/wyvest/redaction/mixin/EntityFXAccessor.java deleted file mode 100644 index d94a02c..0000000 --- a/src/main/java/net/wyvest/redaction/mixin/EntityFXAccessor.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.wyvest.redaction.mixin; - -import net.minecraft.client.particle.EntityFX; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(EntityFX.class) -public interface EntityFXAccessor { - @Accessor("particleTextureIndexX") - int getParticleTextureX(); -} diff --git a/src/main/java/net/wyvest/redaction/mixin/EntityMagicCrit2FXMixin.java b/src/main/java/net/wyvest/redaction/mixin/EntityMagicCrit2FXMixin.java deleted file mode 100644 index 911198e..0000000 --- a/src/main/java/net/wyvest/redaction/mixin/EntityMagicCrit2FXMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.wyvest.redaction.mixin; - -import net.minecraft.client.particle.EntityCrit2FX; -import net.minecraft.client.particle.EntityFX; -import net.wyvest.redaction.hook.EntityCrit2FXHook; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(EntityCrit2FX.class) -public class EntityMagicCrit2FXMixin implements EntityCrit2FXHook { - private boolean isMagic = false; - @Override - public boolean isMagic() { - return isMagic; - } - - @Override - public void setMagic(boolean value) { - isMagic = value; - } - - @Mixin(targets = "net.minecraft.client.particle.EntityCrit2FX$MagicFactory") - public static class MagicFactoryMixin { - @Redirect(method = "getEntityFX", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/EntityFX;setRBGColorF(FFF)V")) - private void captureEntityFX(EntityFX instance, float particleRedIn, float particleGreenIn, float particleBlueIn) { - instance.setRBGColorF(particleRedIn, particleGreenIn, particleBlueIn); - ((EntityCrit2FXHook) instance).setMagic(true); - } - } -} diff --git a/src/main/java/net/wyvest/redaction/mixin/RenderManagerMixin.java b/src/main/java/net/wyvest/redaction/mixin/RenderManagerMixin.java index 561af5a..d48ddfb 100644 --- a/src/main/java/net/wyvest/redaction/mixin/RenderManagerMixin.java +++ b/src/main/java/net/wyvest/redaction/mixin/RenderManagerMixin.java @@ -8,7 +8,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.wyvest.redaction.features.hitbox.Entity; -import net.wyvest.redaction.features.hitbox.HitboxesConfig; +import net.wyvest.redaction.features.hitbox.GeneralConfig; import net.wyvest.redaction.gui.HitboxPreviewGUI; import org.lwjgl.opengl.GL11; import org.spongepowered.asm.mixin.Mixin; @@ -33,7 +33,7 @@ public class RenderManagerMixin { @Inject(method = "doRenderEntity", at = @At(value = "HEAD")) private void forceHitbox(net.minecraft.entity.Entity entity, double x, double y, double z, float entityYaw, float partialTicks, boolean hideDebugBox, CallbackInfoReturnable cir) { - if (HitboxesConfig.getConfig().getForceHitbox()) { + if (GeneralConfig.getConfig().getForceHitbox()) { if (!Minecraft.getMinecraft().getRenderManager().isDebugBoundingBox()) Minecraft.getMinecraft().getRenderManager().setDebugBoundingBox(true); return; @@ -59,11 +59,11 @@ private void initHitbox(net.minecraft.entity.Entity entityIn, double x, double y crosshairColor = entity.getCrosshairColor(); eyeColor = entity.getEyeColor(); lineColor = entity.getLineColor(); - if (HitboxesConfig.getConfig().getDashedHitbox()) { + if (GeneralConfig.getConfig().getDashedHitbox()) { GL11.glEnable(GL11.GL_LINE_STIPPLE); - GL11.glLineStipple(HitboxesConfig.getConfig().getDashedFactor(), (short) 0xAAAA); + GL11.glLineStipple(GeneralConfig.getConfig().getDashedFactor(), (short) 0xAAAA); } - GL11.glLineWidth(HitboxesConfig.getConfig().getHitboxWidth()); + GL11.glLineWidth(GeneralConfig.getConfig().getHitboxWidth()); return; } for (Entity entity : Entity.getSortedList()) { @@ -79,11 +79,11 @@ private void initHitbox(net.minecraft.entity.Entity entityIn, double x, double y crosshairColor = entity.getCrosshairColor(); eyeColor = entity.getEyeColor(); lineColor = entity.getLineColor(); - if (HitboxesConfig.getConfig().getDashedHitbox()) { + if (GeneralConfig.getConfig().getDashedHitbox()) { GL11.glEnable(GL11.GL_LINE_STIPPLE); - GL11.glLineStipple(HitboxesConfig.getConfig().getDashedFactor(), (short) 0xAAAA); + GL11.glLineStipple(GeneralConfig.getConfig().getDashedFactor(), (short) 0xAAAA); } - GL11.glLineWidth(HitboxesConfig.getConfig().getHitboxWidth()); + GL11.glLineWidth(GeneralConfig.getConfig().getHitboxWidth()); return; } } @@ -93,7 +93,7 @@ private void initHitbox(net.minecraft.entity.Entity entityIn, double x, double y private void shouldRenderHitbox(AxisAlignedBB boundingBox, int red, int green, int blue, int alpha, net.minecraft.entity.Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks) { if (box) { int color = (Minecraft.getMinecraft().objectMouseOver != null && Minecraft.getMinecraft().objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && Minecraft.getMinecraft().objectMouseOver.entityHit.equals(entityIn)) || (HitboxPreviewGUI.Companion.getBypassHitbox() && HitboxPreviewGUI.Companion.getCursorOverEmulatedEntity()) ? crosshairColor : hitboxColor; - RenderGlobal.drawOutlinedBoundingBox((HitboxesConfig.getConfig().getAccurateHitbox() ? boundingBox.expand(entityIn.getCollisionBorderSize(), entityIn.getCollisionBorderSize(), entityIn.getCollisionBorderSize()) : boundingBox), ColorUtils.getRed(color), ColorUtils.getGreen(color), ColorUtils.getBlue(color), alpha); + RenderGlobal.drawOutlinedBoundingBox((GeneralConfig.getConfig().getAccurateHitbox() ? boundingBox.expand(entityIn.getCollisionBorderSize(), entityIn.getCollisionBorderSize(), entityIn.getCollisionBorderSize()) : boundingBox), ColorUtils.getRed(color), ColorUtils.getGreen(color), ColorUtils.getBlue(color), alpha); } } @@ -124,7 +124,7 @@ private void modifyEyeLineColor(Args args) { @Inject(method = "renderDebugBoundingBox", at = @At("RETURN")) private void resetLineWidth(net.minecraft.entity.Entity entityIn, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) { GL11.glLineWidth(1); - if (HitboxesConfig.getConfig().getDashedHitbox()) { + if (GeneralConfig.getConfig().getDashedHitbox()) { GL11.glDisable(GL11.GL_LINE_STIPPLE); } } diff --git a/src/main/kotlin/net/wyvest/redaction/Redaction.kt b/src/main/kotlin/net/wyvest/redaction/Redaction.kt index e244c06..69bc8c8 100644 --- a/src/main/kotlin/net/wyvest/redaction/Redaction.kt +++ b/src/main/kotlin/net/wyvest/redaction/Redaction.kt @@ -14,7 +14,6 @@ import net.wyvest.redaction.features.NameHighlight import net.wyvest.redaction.features.ParticleManager import net.wyvest.redaction.features.ServerManager import net.wyvest.redaction.features.hitbox.Hitboxes -import net.wyvest.redaction.features.particles.Particles import net.wyvest.redaction.gui.HitboxPreviewGUI import java.io.File @@ -61,7 +60,6 @@ object Redaction { EVENT_BUS.register(ParticleManager) EVENT_BUS.register(ServerManager) Hitboxes.initialize() - Particles.initialize() ServerManager.initialize() NameHighlight.initialize() } diff --git a/src/main/kotlin/net/wyvest/redaction/features/hitbox/HitboxesConfig.kt b/src/main/kotlin/net/wyvest/redaction/features/hitbox/GeneralConfig.kt similarity index 84% rename from src/main/kotlin/net/wyvest/redaction/features/hitbox/HitboxesConfig.kt rename to src/main/kotlin/net/wyvest/redaction/features/hitbox/GeneralConfig.kt index eefd52d..60af3cc 100644 --- a/src/main/kotlin/net/wyvest/redaction/features/hitbox/HitboxesConfig.kt +++ b/src/main/kotlin/net/wyvest/redaction/features/hitbox/GeneralConfig.kt @@ -3,7 +3,7 @@ package net.wyvest.redaction.features.hitbox import com.google.gson.annotations.SerializedName import kotlin.properties.Delegates -data class HitboxesConfig( +data class GeneralConfig( @SerializedName("hitbox_width") var hitboxWidth: Int = 1, @SerializedName("force_hitbox") var forceHitbox: Boolean = false, @SerializedName("accurate_hitbox") var accurateHitbox: Boolean = true, @@ -11,7 +11,7 @@ data class HitboxesConfig( @SerializedName("dashed_factor") var dashedFactor: Int = 6 ) { companion object { - @JvmStatic var config by Delegates.notNull() + @JvmStatic var config by Delegates.notNull() internal set } } \ No newline at end of file diff --git a/src/main/kotlin/net/wyvest/redaction/features/hitbox/Hitboxes.kt b/src/main/kotlin/net/wyvest/redaction/features/hitbox/Hitboxes.kt index c98d493..6b2cd6e 100644 --- a/src/main/kotlin/net/wyvest/redaction/features/hitbox/Hitboxes.kt +++ b/src/main/kotlin/net/wyvest/redaction/features/hitbox/Hitboxes.kt @@ -26,7 +26,7 @@ object Hitboxes { } } if (!readJson.has("general")) { - readJson.add("general", PARSER.parse(GSON.toJson(HitboxesConfig(hitboxWidth = 1, forceHitbox = false, accurateHitbox = true)))) + readJson.add("general", PARSER.parse(GSON.toJson(GeneralConfig(hitboxWidth = 1, forceHitbox = false, accurateHitbox = true)))) } if (readJson["general"].asJsonObject.has("disable_for_self")) { readJson["self"].asJsonObject.addProperty("hitbox_enabled", false) @@ -53,7 +53,7 @@ object Hitboxes { Entity.map[entity.key]?.lineColor = entityJson["line_color"].asInt } val generalJson = json["general"].asJsonObject - HitboxesConfig.config = HitboxesConfig( + GeneralConfig.config = GeneralConfig( hitboxWidth = generalJson["hitbox_width"].asInt, forceHitbox = generalJson["force_hitbox"].asBoolean, accurateHitbox = generalJson["accurate_hitbox"].asBoolean, @@ -83,11 +83,11 @@ object Hitboxes { entityJson.addProperty("crosshair_color", thing.crosshairColor) } val generalJson = json["general"].asJsonObject - generalJson.addProperty("hitbox_width", HitboxesConfig.config.hitboxWidth) - generalJson.addProperty("force_hitbox", HitboxesConfig.config.forceHitbox) - generalJson.addProperty("accurate_hitbox", HitboxesConfig.config.accurateHitbox) - generalJson.addProperty("dashed_hitbox", HitboxesConfig.config.dashedHitbox) - generalJson.addProperty("dashed_factor", HitboxesConfig.config.dashedFactor) + generalJson.addProperty("hitbox_width", GeneralConfig.config.hitboxWidth) + generalJson.addProperty("force_hitbox", GeneralConfig.config.forceHitbox) + generalJson.addProperty("accurate_hitbox", GeneralConfig.config.accurateHitbox) + generalJson.addProperty("dashed_hitbox", GeneralConfig.config.dashedHitbox) + generalJson.addProperty("dashed_factor", GeneralConfig.config.dashedFactor) file.writeText(GSON.toJson(json)) } diff --git a/src/main/kotlin/net/wyvest/redaction/features/particles/Particle.kt b/src/main/kotlin/net/wyvest/redaction/features/particles/Particle.kt deleted file mode 100644 index 3e05abb..0000000 --- a/src/main/kotlin/net/wyvest/redaction/features/particles/Particle.kt +++ /dev/null @@ -1,56 +0,0 @@ -package net.wyvest.redaction.features.particles - -import net.minecraft.block.material.Material -import net.minecraft.client.particle.* -import net.minecraft.util.EnumParticleTypes -import net.minecraft.init.Items -import net.wyvest.redaction.hook.EntityBreakingFXHook -import net.wyvest.redaction.hook.EntityCrit2FXHook -import net.wyvest.redaction.mixin.EntityDropParticleFXAccessor -import net.wyvest.redaction.mixin.EntityFXAccessor -import java.awt.Color - -@Suppress("USELESS_CAST") -data class Particle(var enabled: Boolean = true, var tint: Int = Color.WHITE.rgb, var scale: Int = 1, var multiplier: Int = 1, @Transient val displayName: String, @Transient val particle: EnumParticleTypes, @Transient val instance: Class, @Transient val condition: (particle: EntityFX) -> Boolean) { - companion object { - val EXPLOSION_NORMAL = Particle(displayName = "Normal Explosion", particle = EnumParticleTypes.EXPLOSION_NORMAL, instance = EntityExplodeFX::class.java, condition = { it is EntityExplodeFX }) - val EXPLOSION_LARGE = Particle(displayName = "Large Explosion", particle = EnumParticleTypes.EXPLOSION_LARGE, instance = EntityLargeExplodeFX::class.java, condition = { it is EntityLargeExplodeFX }) - val EXPLOSION_HUGE = Particle(displayName = "Huge Explosion", particle = EnumParticleTypes.EXPLOSION_HUGE, instance = EntityHugeExplodeFX::class.java, condition = { it is EntityHugeExplodeFX }) - val FIREWORKS_SPARK = Particle(displayName = "Firework Spark", particle = EnumParticleTypes.FIREWORKS_SPARK, instance = EntityFirework.SparkFX::class.java, condition = { it is EntityFirework.SparkFX }) - val WATER_BUBBLE = Particle(displayName = "Water Bubble", particle = EnumParticleTypes.WATER_BUBBLE, instance = EntityBubbleFX::class.java, condition = { it is EntityBubbleFX }) - val WATER_SPLASH = Particle(displayName = "Water Splash", particle = EnumParticleTypes.WATER_SPLASH, instance = EntitySplashFX::class.java, condition = { it is EntitySplashFX }) - val WATER_WAKE = Particle(displayName = "Fish Water Splash", particle = EnumParticleTypes.WATER_WAKE, instance = EntityFishWakeFX::class.java, condition = { it is EntityFishWakeFX }) - val SUSPENDED = Particle(displayName = "Water Suspend Splash", particle = EnumParticleTypes.SUSPENDED, instance = EntitySuspendFX::class.java, condition = { it is EntitySuspendFX }) - val SUSPENDED_DEPTH = Particle(displayName = "Other Suspend Splash / Town Aura", particle = EnumParticleTypes.SUSPENDED_DEPTH, instance = EntityAuraFX::class.java, condition = { it is EntityAuraFX }) - val CRIT = Particle(displayName = "Critical", particle = EnumParticleTypes.CRIT, instance = EntityCrit2FX::class.java, condition = { it is EntityCrit2FX && !(it as EntityCrit2FX as EntityCrit2FXHook).isMagic }) - val CRIT_MAGIC = Particle(displayName = "Enchantment / Magic Critical", particle = EnumParticleTypes.CRIT_MAGIC, instance = EntityCrit2FX::class.java, condition = { it is EntityCrit2FX && (it as EntityCrit2FX as EntityCrit2FXHook).isMagic }) - val SMOKE_NORMAL = Particle(displayName = "Normal Smoke", particle = EnumParticleTypes.SMOKE_NORMAL, instance = EntitySmokeFX::class.java, condition = { it is EntitySmokeFX }) - val SMOKE_LARGE = Particle(displayName = "Large Smoke", particle = EnumParticleTypes.SMOKE_LARGE, instance = EntityCritFX::class.java, condition = { it is EntityCritFX }) - val SPELL = Particle(displayName = "Potion", particle = EnumParticleTypes.SPELL, instance = EntitySpellParticleFX::class.java, condition = { it is EntitySpellParticleFX }) - val DRIP_WATER = Particle(displayName = "Water Drip", particle = EnumParticleTypes.DRIP_WATER, instance = EntityDropParticleFX::class.java, condition = { it is EntityDropParticleFX && (it as EntityDropParticleFXAccessor).material == Material.water }) - val DRIP_LAVA = Particle(displayName = "Lava Drip", particle = EnumParticleTypes.DRIP_LAVA, instance = EntityDropParticleFX::class.java, condition = { it is EntityDropParticleFX && (it as EntityDropParticleFXAccessor).material == Material.lava }) - val VILLAGER_ANGRY = Particle(displayName = "Angry Villager", particle = EnumParticleTypes.VILLAGER_ANGRY, instance = EntityHeartFX::class.java, condition = { it is EntityHeartFX && (it as EntityFXAccessor).particleTextureX == (81 % 16) }) - val VILLAGER_HAPPY = Particle(displayName = "Happy Villager", particle = EnumParticleTypes.VILLAGER_HAPPY, instance = EntityAuraFX::class.java, condition = { it is EntityAuraFX && (it as EntityFXAccessor).particleTextureX == (82 % 16) }) - val NOTE = Particle(displayName = "Note Block", particle = EnumParticleTypes.NOTE, instance = EntityNoteFX::class.java, condition = { it is EntityNoteFX }) - val PORTAL = Particle(displayName = "Portal", particle = EnumParticleTypes.PORTAL, instance = EntityPortalFX::class.java, condition = { it is EntityPortalFX }) - val ENCHANTMENT_TABLE = Particle(displayName = "Enchantment Table", particle = EnumParticleTypes.ENCHANTMENT_TABLE, instance = EntityEnchantmentTableParticleFX::class.java, condition = { it is EntityEnchantmentTableParticleFX }) - val FLAME = Particle(displayName = "Fire", particle = EnumParticleTypes.FLAME, instance = EntityFlameFX::class.java, condition = { it is EntityFlameFX }) - val LAVA = Particle(displayName = "Lava", particle = EnumParticleTypes.LAVA, instance = EntityLavaFX::class.java, condition = { it is EntityLavaFX }) - val FOOTSTEP = Particle(displayName = "Footstep", particle = EnumParticleTypes.FOOTSTEP, instance = EntityFootStepFX::class.java, condition = { it is EntityFootStepFX }) - val CLOUD = Particle(displayName = "Cloud", particle = EnumParticleTypes.CLOUD, instance = EntityCloudFX::class.java, condition = { it is EntityCloudFX }) - val REDSTONE = Particle(displayName = "Redstone", particle = EnumParticleTypes.REDSTONE, instance = EntityReddustFX::class.java, condition = { it is EntityReddustFX }) - val SNOWBALL = Particle(displayName = "Snowball", particle = EnumParticleTypes.SNOWBALL, instance = EntityBreakingFX::class.java, condition = { it is EntityBreakingFX && (it as EntityBreakingFXHook).item == Items.snowball }) - val SNOW_SHOVEL = Particle(displayName = "Snow Shovel", particle = EnumParticleTypes.SNOW_SHOVEL, instance = EntitySnowShovelFX::class.java, condition = { it is EntitySnowShovelFX }) - val SLIME = Particle(displayName = "Slime", particle = EnumParticleTypes.SLIME, instance = EntityBreakingFX::class.java, condition = { it is EntityBreakingFX && (it as EntityBreakingFXHook).item == Items.slime_ball }) - val HEART = Particle(displayName = "Heart / Breeding", particle = EnumParticleTypes.HEART, instance = EntityHeartFX::class.java, condition = { it is EntityHeartFX && (it as EntityFXAccessor).particleTextureX != (81 % 16) }) - val BARRIER = Particle(displayName = "Barrier", particle = EnumParticleTypes.BARRIER, instance = Barrier::class.java, condition = { it is Barrier }) - val ITEM_CRACK = Particle(displayName = "Item Crack", particle = EnumParticleTypes.ITEM_CRACK, instance = EntityBreakingFX::class.java, condition = { it is EntityBreakingFX && (it as EntityBreakingFXHook).item != Items.snowball && (it as EntityBreakingFXHook).item != Items.slime_ball }) - val BLOCK_CRACK = Particle(displayName = "Block Breaking", particle = EnumParticleTypes.BLOCK_CRACK, instance = EntityDiggingFX::class.java, condition = { it is EntityDiggingFX }) - val BLOCK_DUST = Particle(displayName = "Block Broken Particles", particle = EnumParticleTypes.BLOCK_DUST, instance = EntityBlockDustFX::class.java, condition = { it is EntityBlockDustFX }) - val WATER_DROP = Particle(displayName = "Water Drop", particle = EnumParticleTypes.WATER_DROP, instance = EntityRainFX::class.java, condition = { it is EntityRainFX }) - val MOB_APPEARANCE = Particle(displayName = "Elder Guardian Overlay", particle = EnumParticleTypes.MOB_APPEARANCE, instance = MobAppearance::class.java, condition = { it is MobAppearance }) - - @JvmField - val values = arrayOf(EXPLOSION_NORMAL, EXPLOSION_LARGE, EXPLOSION_HUGE, FIREWORKS_SPARK, WATER_BUBBLE, WATER_SPLASH, WATER_WAKE, SUSPENDED, SUSPENDED_DEPTH, CRIT, CRIT_MAGIC, SMOKE_NORMAL, SMOKE_LARGE, SPELL, DRIP_WATER, DRIP_LAVA, VILLAGER_ANGRY, VILLAGER_HAPPY, NOTE, PORTAL, ENCHANTMENT_TABLE, FLAME, LAVA, FOOTSTEP, CLOUD, REDSTONE, SNOWBALL, SNOW_SHOVEL, SLIME, HEART, BARRIER, ITEM_CRACK, BLOCK_CRACK, BLOCK_DUST, WATER_DROP, MOB_APPEARANCE) - } -} \ No newline at end of file diff --git a/src/main/kotlin/net/wyvest/redaction/features/particles/Particles.kt b/src/main/kotlin/net/wyvest/redaction/features/particles/Particles.kt deleted file mode 100644 index 4c9099b..0000000 --- a/src/main/kotlin/net/wyvest/redaction/features/particles/Particles.kt +++ /dev/null @@ -1,57 +0,0 @@ -package net.wyvest.redaction.features.particles - -import com.google.gson.GsonBuilder -import com.google.gson.JsonParser -import net.wyvest.redaction.Redaction -import java.io.File - -object Particles { - private val GSON = GsonBuilder().setPrettyPrinting().create() - private val PARSER = JsonParser() - private val file = File(Redaction.modDir, "particles.json") - - fun initialize() { - if (!file.exists() || file.readText().isBlank()) { - file.createNewFile() - file.writeText("{ }") - } - - val readJson = PARSER.parse(file.readText()).asJsonObject - for (particle in Particle.values) { - if (!readJson.has(particle.particle.particleName)) { - readJson.add(particle.particle.particleName, PARSER.parse(GSON.toJson(particle))) - } - } - if (!readJson.has("general")) { - readJson.add("general", PARSER.parse(GSON.toJson(ParticlesConfig()))) - } - file.writeText(GSON.toJson(readJson)) - - try { - val json = PARSER.parse(file.readText()).asJsonObject - for (particle in Particle.values) { - val particleJson = json[particle.particle.particleName].asJsonObject - particle.enabled = particleJson["enabled"].asBoolean - particle.tint = particleJson["tint"].asInt - particle.multiplier = particleJson["multiplier"].asInt - particle.scale = particleJson["scale"].asInt - } - ParticlesConfig.config = GSON.fromJson(json["general"], ParticlesConfig::class.java) - } catch (e: Exception) { - e.printStackTrace() - if (!file.delete()) { - file.writeText("") - } - initialize() - } - } - - fun writeConfig() { - val json = PARSER.parse(file.readText()).asJsonObject - for (entity in Particle.values) { - json.add(entity.particle.particleName, PARSER.parse(GSON.toJson(entity))) - } - json.add("general", PARSER.parse(GSON.toJson(ParticlesConfig.config))) - file.writeText(GSON.toJson(json)) - } -} \ No newline at end of file diff --git a/src/main/kotlin/net/wyvest/redaction/features/particles/ParticlesConfig.kt b/src/main/kotlin/net/wyvest/redaction/features/particles/ParticlesConfig.kt deleted file mode 100644 index 68452aa..0000000 --- a/src/main/kotlin/net/wyvest/redaction/features/particles/ParticlesConfig.kt +++ /dev/null @@ -1,13 +0,0 @@ -package net.wyvest.redaction.features.particles - -import com.google.gson.annotations.SerializedName -import kotlin.properties.Delegates - -data class ParticlesConfig( - @SerializedName("fade") var fadeParticles: Boolean = true, -) { - companion object { - @JvmStatic var config by Delegates.notNull() - internal set - } -} \ No newline at end of file diff --git a/src/main/kotlin/net/wyvest/redaction/gui/HitboxPreviewGUI.kt b/src/main/kotlin/net/wyvest/redaction/gui/HitboxPreviewGUI.kt index 65732d9..615fcb1 100644 --- a/src/main/kotlin/net/wyvest/redaction/gui/HitboxPreviewGUI.kt +++ b/src/main/kotlin/net/wyvest/redaction/gui/HitboxPreviewGUI.kt @@ -21,7 +21,7 @@ import gg.essential.vigilance.gui.settings.SwitchComponent import net.minecraft.client.Minecraft import net.wyvest.redaction.config.RedactionConfig import net.wyvest.redaction.features.hitbox.Entity -import net.wyvest.redaction.features.hitbox.HitboxesConfig +import net.wyvest.redaction.features.hitbox.GeneralConfig import net.wyvest.redaction.features.hitbox.Hitboxes import java.awt.Color @@ -75,7 +75,7 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: } childOf titleBar private val hitboxWidthNumber: NumberComponent by NumberComponent( - HitboxesConfig.config.hitboxWidth, + GeneralConfig.config.hitboxWidth, 1, 20, 1 @@ -89,7 +89,7 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: y = CenterConstraint() } childOf titleBar - private val forceHitboxSwitch: SwitchComponent by SwitchComponent(HitboxesConfig.config.forceHitbox) constrain { + private val forceHitboxSwitch: SwitchComponent by SwitchComponent(GeneralConfig.config.forceHitbox) constrain { x = SiblingConstraint(5f) y = CenterConstraint() } childOf titleBar @@ -99,7 +99,7 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: y = CenterConstraint() } childOf titleBar - private val accurateHitboxSwitch: SwitchComponent by SwitchComponent(HitboxesConfig.config.accurateHitbox) constrain { + private val accurateHitboxSwitch: SwitchComponent by SwitchComponent(GeneralConfig.config.accurateHitbox) constrain { x = SiblingConstraint(5f) y = CenterConstraint() } childOf titleBar @@ -110,7 +110,7 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: y = CenterConstraint() } childOf titleBar - private val dashedSwitch: SwitchComponent by SwitchComponent(HitboxesConfig.config.dashedHitbox) constrain { + private val dashedSwitch: SwitchComponent by SwitchComponent(GeneralConfig.config.dashedHitbox) constrain { x = SiblingConstraint(5f) y = CenterConstraint() } childOf titleBar @@ -121,7 +121,7 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: } childOf titleBar private val dashedFactorNumber: NumberComponent by NumberComponent( - HitboxesConfig.config.dashedFactor, + GeneralConfig.config.dashedFactor, 1, 20, 1 @@ -132,23 +132,23 @@ class HitboxPreviewGUI @JvmOverloads constructor(private val returnToConfigGUI: init { hitboxWidthNumber.onValueChange { - HitboxesConfig.config.hitboxWidth = it as Int + GeneralConfig.config.hitboxWidth = it as Int Hitboxes.writeConfig() } forceHitboxSwitch.onValueChange { - HitboxesConfig.config.forceHitbox = it as Boolean + GeneralConfig.config.forceHitbox = it as Boolean Hitboxes.writeConfig() } accurateHitboxSwitch.onValueChange { - HitboxesConfig.config.accurateHitbox = it as Boolean + GeneralConfig.config.accurateHitbox = it as Boolean Hitboxes.writeConfig() } dashedSwitch.onValueChange { - HitboxesConfig.config.dashedHitbox = it as Boolean + GeneralConfig.config.dashedHitbox = it as Boolean Hitboxes.writeConfig() } dashedFactorNumber.onValueChange { - HitboxesConfig.config.dashedFactor = it as Int + GeneralConfig.config.dashedFactor = it as Int Hitboxes.writeConfig() } entityDropdown.onValueChange { diff --git a/src/main/resources/mixins.redaction.json b/src/main/resources/mixins.redaction.json index 7c5536c..6986fac 100644 --- a/src/main/resources/mixins.redaction.json +++ b/src/main/resources/mixins.redaction.json @@ -8,12 +8,6 @@ "maxShiftBy": 5 }, "mixins": [ - "EffectRendererMixin", - "EntityBreakingFXMixin", - "EntityDropParticleFXAccessor", - "EntityFXAccessor", - "EntityMagicCrit2FXMixin", - "EntityMagicCrit2FXMixin$MagicFactoryMixin", "EntityRendererMixin", "FontRendererMixin", "GuiIngameMixin",